您的当前位置:首页 >系统运维 >Redis 序列化值,多了双引号问题 正文
时间:2025-11-04 20:59:49 来源:网络整理编辑:系统运维
问题有两个服务:A 服务和 B 服务,A 服务负责将数据写入 Redis 的 Hash 中,B 服务负责从 Redis 中读取这些数据。在实际运行中,B 服务读取到的数字类型字符串与 A 服务写入的值
有两个服务:A 服务和 B 服务,列化A 服务负责将数据写入 Redis 的值多 Hash 中,B 服务负责从 Redis 中读取这些数据。双引在实际运行中,号问B 服务读取到的列化数字类型字符串与 A 服务写入的值不一致:
图片
问题排查,最终发现通过hgetall命令返回字符串多加了有引号:
图片
这里怀疑可能是值多Redis配置中的序列化参数设置导致的
Redis序列化和反序列化是将数据结构转换为二进制格式和将二进制数据转换为对应的数据结构的过程。
序列化的双引作用是将数据结构转换为二进制形式,以便于传输和存储。号问它可以将数据保存在文件、列化数据库或者网络上,值多并能够被其他程序使用。双引序列化还能够对数据进行压缩,号问并提供灵活的列化数据交换格式。
反序列化则是值多将二进制数据转化为对应的数据结构,云南idc服务商方便在Redis内部进行存储和查询等操作。双引这样可以实现对数据的读取和写入。
Redis支持多种数据结构的序列化和反序列化,包括string、hash、list、set、zset。
SpringBoot提供了多种Redis序列化方式,包括JDK序列化、JSON序列化、FastJSON序列化、Jackson序列化、Protobuf序列化等。其中JDK序列化是默认的序列化方式。
常见的序列化器
StringRedisSerializer:用于字符串的序列化和反序列化。适用于简单的字符串键值对。Jackson2JsonRedisSerializer:使用 Jackson 库进行 JSON 序列化和反序列化。适用于复杂对象的序列化。b2b信息网GenericJackson2JsonRedisSerializer:类似于 Jackson2JsonRedisSerializer,但可以处理泛型对象。OxmMarshaler:使用 Spring 的 Object-XML 映射功能进行序列化和反序列化。适用于 XML 数据。GenericToStringSerializer:将对象转换为字符串,适用于简单的对象。使用了Jackson2JsonRedisSerializer
复制private RedisTemplate<String, Object> createRedisTemplate(JedisConnectionFactory connectionFactory) { // 序列化配置 Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>(Object.class); ObjectMapper objectMapper = new ObjectMapper(); objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); objectMapper.activateDefaultTyping(LaissezFaireSubTypeValidator.instance , ObjectMapper.DefaultTyping.NON_FINAL); jackson2JsonRedisSerializer.setObjectMapper(objectMapper); RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>(); redisTemplate.setConnectionFactory(connectionFactory); redisTemplate.setValueSerializer(jackson2JsonRedisSerializer); redisTemplate.setKeySerializer(new StringRedisSerializer()); redisTemplate.setHashKeySerializer(jackson2JsonRedisSerializer); redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer); redisTemplate.setDefaultSerializer(jackson2JsonRedisSerializer); redisTemplate.setEnableDefaultSerializer(true); redisTemplate.afterPropertiesSet(); return redisTemplate; }1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.此服务为c++端,使用默认String,该端不做调整的话,修复A端为new StringRedisSerializer()方式
图片
使用StringRedisSerializer来序列化key和value,这个序列化器会把Java字符串直接转换为Redis存储的字节序列,而不添加任何额外的格式化或引号。
使用Jackson2JsonRedisSerializer来序列化key和value,会把Java对象序列化为JSON格式的字符串。如果你序列化的是Java字符串,那么它就会被JSON格式化,并在最终存储在Redis中时带有双引号。
自制电脑文件盒教程(简单实用的DIY文件盒制作方法)2025-11-04 20:49
探索SimValleyX5(了解SimValleyX5的特点、性能和用户体验)2025-11-04 20:41
Win10重装U盘教程(Win10重装U盘教程,让你轻松重建电脑系统)2025-11-04 20:40
笔记本独立显卡和集成显卡的区别(解析笔记本独立显卡和集成显卡的性能与应用)2025-11-04 20:18
华为电脑MateBookXPro使用教程(轻松掌握华为MateBookXPro的使用技巧与窍门)2025-11-04 20:06
使用U盘安装PE系统教程(从零开始轻松安装PE系统,助力电脑维护)2025-11-04 19:23
解析IPSZERO240显示器的性能和特点(一款高性能的IPS显示器推荐)2025-11-04 19:08
vivoXplay6怎么样贴吧专题报告(vivoXplay6手机综合评测及用户体验分享)2025-11-04 19:03
如何更换蒙迪欧电脑板?(蒙迪欧电脑板更换教程及注意事项)2025-11-04 18:55
从零开始(手把手教你如何使用UEFI进行二合一装机,轻松打造高效系统)2025-11-04 18:51
如何应对台式电脑设置密码提示错误问题(解决密码提示错误的有效方法)2025-11-04 20:44
Win8强制恢复出厂设置方法(快速解决系统问题,重启电脑的最佳办法)2025-11-04 20:40
OPPOR1sR8007(挑战高端市场,OPPOR1sR8007值得期待)2025-11-04 20:19
技嘉设置U盘启动教程(用技嘉设置U盘启动解决电脑系统启动问题)2025-11-04 20:18
深度解析iPadmini3(探究iPadmini3的关键特性及其与前代产品的差异)2025-11-04 20:13
华硕P5G41T-MLX(全新一代主板,助力您的电脑发挥最佳性能)2025-11-04 19:55
笔记本独立显卡和集成显卡的区别(解析笔记本独立显卡和集成显卡的性能与应用)2025-11-04 19:30
夏普电视60SU660性能评测(4K超高清画质、智能操作系统带来全新体验)2025-11-04 19:12
动态渲染教程(让你的电脑运行更快更流畅,轻松应对各种任务)2025-11-04 19:07
使用U盘安装Win7系统的完整教程(教你如何使用U盘轻松安装Windows7系统)2025-11-04 18:59