Redis键值:\xac\xed\x00\x05t\x00的解决

简介: Redis键值:\xac\xed\x00\x05t\x00的解决

springboot使用redisTemplate存放键值对时,发现存放的key和value多了\xac\xed\x00\x05t\x00&的非预期的前缀。

原因:redisTemplate向redis存放使用java对象序列化的值,序列化方式和string的一般方式不同

默认的JdkSerializationRedisSerializerJDKRedis序列化器的序列化方式,使用了JDK自带的ObjectOutPutStream将我们的String对象序列化成了byte[]。把byte数组转回字符串key发现原本的key拼接了乱码的字符串

/**
 * 如果key和value都使用的StringRedisSerializer序列化器,则推荐使用StringRedisTemplate
 *
 * 配置Redis的Key和Value的序列化器
 * @param redisTemplate 从容器中获取RedisTemplate
 * @return 修改后的RedisTemple
 */
@Bean
public RedisTemplate<Object, Object> redisStringTemplate(RedisTemplate<Object, Object> redisTemplate) {
    StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
    redisTemplate.setKeySerializer(stringRedisSerializer);
    // 如果手动将Value转换成了JSON,就不要再用JSON序列化器了。
    // redisTemplate.setValueSerializer(new Jackson2JsonRedisSerializer<>(Object.class));
    redisTemplate.setValueSerializer(stringRedisSerializer);
    return redisTemplate;
}
  • Jackson2JsonRedisSerializer:常用来直接序列化Value对象为JSON字符串。内部使用ObjectMapper
  • StringRedisSerializer:常用来序列化Key,也可以用来序列化Value。


相关文章
|
存储 缓存 NoSQL
深入解析Redis:一种快速、高效的键值存储系统
**Redis** 是一款高性能的键值存储系统,以其内存数据、高效数据结构、持久化机制和丰富的功能在现代应用中占有一席之地。支持字符串、哈希、列表、集合和有序集合等多种数据结构,适用于缓存、计数、分布式锁和消息队列等场景。安装Redis涉及下载、编译和配置`redis.conf`。基本操作包括键值对的设置与获取,以及哈希、列表、集合和有序集合的操作。高级特性涵盖发布/订阅、事务处理和Lua脚本。优化策略包括选择合适数据结构、配置缓存和使用Pipeline。注意安全、监控和备份策略,以确保系统稳定和数据安全。
647 1
|
存储 缓存 NoSQL
Redis点赞业务的设计与实现(Redis键值设计)
案例分享Redis点赞业务实现!
1889 2
Redis点赞业务的设计与实现(Redis键值设计)
|
NoSQL 关系型数据库 Go
更新Navicat Premium 16.2 之 如何使用Navicat连接Redis的新手教程《更新Navicat Premium 16.2并连接Redis:高效管理数据库和键值存储》
更新Navicat Premium 16.2 之 如何使用Navicat连接Redis的新手教程《更新Navicat Premium 16.2并连接Redis:高效管理数据库和键值存储》
1938 0
更新Navicat Premium 16.2 之 如何使用Navicat连接Redis的新手教程《更新Navicat Premium 16.2并连接Redis:高效管理数据库和键值存储》
|
11月前
|
缓存 NoSQL 算法
Redis数据库的键值过期和删除机制
我们需要注意的是,虽然Redis提供了这么多高级的缓存机制,但在使用过程中,必须理解应用的特性,选择合适的缓存策略,才能最大化Redis的性能。因此,在设计和实施应用程序时,理解应用的数据访问模式,以及这些模式如何与Redis的缓存机制相互作用,尤为重要。
324 24
|
存储 JSON NoSQL
解决Redis的键值前出现类似\xAC\xED\x00\x05t\x00*这样的字符序列
遇到Redis键值前出现Java序列化字符序列的问题,主要通过调整序列化策略来解决,首选 `StringRedisTemplate`或自定义序列化器来确保数据以预期的格式存储。合理的序列化策略不仅能提高数据的可读性和存储效率,还能避免潜在的安全隐患,是构建健壮Redis应用的基础之一。
1557 2
|
存储 消息中间件 NoSQL
中间件键值存储模型Redis
【7月更文挑战第11天】
214 3
|
存储 缓存 NoSQL
Redis 基础知识和核心概念解析:理解 Redis 的键值操作和过期策略
Redis 基础知识和核心概念解析:理解 Redis 的键值操作和过期策略
282 1
|
存储 缓存 NoSQL
Redis进阶-Redis键值设计及BigKey问题
Redis进阶-Redis键值设计及BigKey问题
222 0
|
NoSQL Java Redis
Redis存key出现\xAC\xED\x00\x05t\x00\x14
Redis存key出现\xAC\xED\x00\x05t\x00\x14
524 0
|
存储 NoSQL Redis
Redis中的哈希表的键名和键值是什么意思?分别有什么作用?底层原理是什么?
Redis中的哈希表的键名和键值是什么意思?分别有什么作用?底层原理是什么?
548 0