当前位置: 首页 > 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 模式集群指南
  • 集成学习详解
  • 牛市早报|国家发改委:将推出做好稳就业稳经济推动高质量发展若干举措
  • 中共中央、国务院关于表彰全国劳动模范和先进工作者的决定
  • 深圳宝安区一宗涉宅用地中止出让,起始总价86.27亿元
  • 古籍新书·2025年春季|中国土司制度史料集成
  • 上海乐高乐园建设进入最后冲刺,开园限量纪念年卡将于5月开售
  • 为何未来的福利国家必须绿色且公平