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

redis序列化设置

redis序列化设置

  • redis序列化设置
    • 序列化对象里有org.joda.time.DateTime
      • 1)、报错内容如下
      • 2)、解决方案:分别自定义时间的序列化和反序列化,以对象形式关联到redisTemplate

redis序列化设置

redis序列化设置,通过自定义redisTemplate配置

@Component
public class RedisConfig {@Beanpublic RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();redisTemplate.setConnectionFactory(redisConnectionFactory);StringRedisSerializer strRedisSerializer = new StringRedisSerializer();//序列化key值redisTemplate.setKeySerializer(strRedisSerializer);//解决value的序列化方式Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);return redisTemplate;}
}

到这若测试没问题,下面就不用看了

序列化对象里有org.joda.time.DateTime

1)、报错内容如下

org.springframework.data.redis.serializer.SerializationException: Could not write JSON: Joda date/time type org.joda.time.DateTime not supported by default: add Module "com.fasterxml.jackson.datatype:jackson-datatype-joda" to enable handling

org.springframework.data.redis.serializer.SerializationException: Could not write JSON: Joda date/time type `org.joda.time.DateTime` not supported by default: add Module "com.fasterxml.jackson.datatype:jackson-datatype-joda" to enable handling (through reference chain: com.xx.XXModel["BBModel"]->com.xx.XXModel["startDate"]);  
...

2)、解决方案:分别自定义时间的序列化和反序列化,以对象形式关联到redisTemplate

分别自定义一个org.joda.time.DateTime的序列化和发序列化类,然后关联到自定义的redisTemplate,代码如下:
1、DateTimeJsonDeserializer

 public class DateTimeJsonDeserializer extends JsonDeserializer<DateTime> {@Overridepublic DateTime deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JacksonException {String dateString = jsonParser.readValueAs(String.class);DateTimeFormatter formatter= DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");return DateTime.parse(dateString, formatter);}
}

2、DateTimeJsonSerializer

public class DateTimeJsonSerializer extends JsonSerializer<DateTime> {@Overridepublic void serialize(DateTime dateTime, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {jsonGenerator.writeString(dateTime.toString());}
}

3、RedisConfig

@Component
public class RedisConfig {@Beanpublic RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();redisTemplate.setConnectionFactory(redisConnectionFactory);StringRedisSerializer strRedisSerializer = new StringRedisSerializer();redisTemplate.setKeySerializer(strRedisSerializer);Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);ObjectMapper objectMapper=new ObjectMapper();SimpleModule simpleModule=new SimpleModule();simpleModule.addSerializer(DateTime.class, new DateTimeJsonSerializer());simpleModule.addDeserializer(DateTime.class, new DateTimeJsonDeserializer());objectMapper.registerModule(simpleModule);jackson2JsonRedisSerializer.setObjectMapper(objectMapper);redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);return redisTemplate;}
}
http://www.lryc.cn/news/544034.html

相关文章:

  • 浅谈C++/C命名冲突
  • 【语音编解码】常用的基于神经网络的语音编解码方案对比
  • PVE 配置显卡直通
  • Kronecker分解(K-FAC):让自然梯度在深度学习中飞起来
  • ArcGIS Pro技巧实战:高效矢量化天地图地表覆盖图
  • React + TypeScript 数据模型驱动数据字典生成示例
  • 道可云人工智能每日资讯|深圳将设立人工智能和机器人产业基金
  • [2024年下半年架构师考试真题之论文]
  • 神经网络 - 激活函数(Sigmoid 型函数)
  • 阿里云 | 快速在网站上增加一个AI助手
  • 【操作系统】处理机调度
  • mysql服务层介绍,NOSQL+SQL接口(nosql介绍),语法分析器,预处理器,优化器(优化的必要性,基于成本的优化器),缓存(弊端)
  • 将DeepSeek接入vscode的N种方法
  • 【算法与数据结构】Dijkstra算法求单源最短路径问题
  • .CSV file input into contact of outlook with gibberish. .csv文件导入outlook, 出现乱码
  • StableDiffusion打包 项目迁移 项目分发 0
  • 关于Postman自动获取token
  • LSTM长短期记忆网络-原理分析
  • sql server笔记
  • AI Video Composer:基于Qwen2.5-Coder的简易开源视频创作利器
  • AI数字人开发,引领科技新潮流
  • VoIP之音频3A技术
  • [原创]openwebui解决searxng通过接口请求不成功问题
  • Jmeter聚合报告导出log文档,Jmeter聚合报告导出到CSV
  • mysqldump 参数详解
  • DeepSeek R1 简易指南:架构、本地部署和硬件要求
  • 基于 ‌MySQL 数据库‌对三级视图(用户视图、DBA视图、内部视图)的详细解释
  • [Web 信息收集] Web 信息收集 — 手动收集 IP 信息
  • 跨AWS账户共享SQS队列以实现消息传递
  • DeepSeek 202502 开源周合集