当前位置: 首页 > news >正文

解决redis序列号和反序列化问题

最近遇到了一个问题,将

List<Map<String, Object>>
类型数据以list形式存入到redis之后,发现取出来时数据格式完全不对,根据报错信息发现是反序列化问题,遇到类似问题,主要有两种解决方案

1.使用序列号工具

例如,Java中常用的序列化工具有Jackson、Gson等。这些工具能够将对象序列化为字符串,并能够准确地将字符串反序列化为对象。

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;public class RedisUtils {private static final ObjectMapper objectMapper = new ObjectMapper();public static String serialize(Object object) throws JsonProcessingException {return objectMapper.writeValueAsString(object);}public static <T> T deserialize(String json, Class<T> clazz) throws JsonProcessingException {return objectMapper.readValue(json, clazz);}
}

使用Jackson的ObjectMapper来进行序列化和反序列化操作,serialize方法将对象序列化为字符串,deserialize方法将字符串反序列化为对象

2.使用JSON字符串存储(推荐)

直接使用JSON字符串进行存储。我们可以将对象转换为JSON字符串,并存储到Redis中。当需要获取数据时,我们可以将存储的JSON字符串转换为对象。

import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;// 将 List<Map<String, Object>> 转换为 JSON 字符串ObjectMapper objectMapper = new ObjectMapper();String json;try {json = objectMapper.writeValueAsString(list);} catch (JsonProcessingException e) {logger.error("在listInRedis方法中处理Redis时发生错误", e);throw new RuntimeException(e);}// 存储到 RedisredisTemplate.opsForValue().set(key, json);
// 从 Redis 获取 JSON 字符串String value = (String) redisTemplate.opsForValue().get(key);// 将 JSON 字符串转换回 List<Map<String, Object>>try {List<Map<String, Object>> listOfMaps = objectMapper.readValue(value,new TypeReference<List<Map<String, Object>>>() {});logger.info("listInRedis从redis中查询到的结果Key:{}-----::{}", key, listOfMaps);} catch (JsonProcessingException e) {throw new RuntimeException(e);}

相关文章:

  • 喷泉码解码成功率
  • Transformer数学推导——Q29 推导语音识别中流式注意力(Streaming Attention)的延迟约束优化
  • Python-pandas-DataFrame取值--.loc[]、.iloc[] 具体的操作及详细语义和语法说明
  • Virtualbox虚拟机全屏后黑屏问题解决
  • kalibr:相机模型
  • datasets 数据处理封装后,统一处理流程以避免Dataset Map顺序依赖问题
  • 云原生周刊:Kubernetes v1.33 正式发布
  • 机器学习第三篇 模型评估(交叉验证)
  • 算法思想之哈希表
  • 前端:纯HTML、CSS和JS菜单样式
  • 在matlab中使用UAV123官方toolkits测试自己的数据集
  • 鼠标滚动字体缩放
  • STM32 USB配置详解
  • 从数据到决策:如何使用Python进行自动驾驶数据分析
  • 图论---拓扑排序(DFS)
  • 计算机视觉进化论:YOLOv12、YOLOv11与Darknet系YOLOv7的微调实战对比
  • Linux运维——Vim基础
  • 如何搭建spark yarn模式的集合集群
  • 搭建 Spark YARN 模式集群指南
  • 集成学习详解
  • 印巴战火LIVE丨“快速接近战争状态”:印度袭击巴军事基地,巴启动反制军事行动
  • 洗冤录|县令遇豪强:黄榦处理的一起地产纠纷案
  • 新修订的《婚姻登记条例》明起施行,领证不用户口本了
  • 中国一重集团有限公司副总经理陆文俊被查
  • 重庆党政代表团在沪考察,陈吉宁龚正与袁家军胡衡华共商两地深化合作工作
  • 对话哭泣照被恶意盗用成“高潮针”配图女生:难过又屈辱