[转帖]Redis key 乱码问题(springboot)

redis,key,乱码,问题,springboot · 浏览次数 : 0

小编点评

**原配置:** ```java @Configuration @EnableCachingpublic class RedisCacheConfig { @Bean public CacheManager cacheManager(RedisTemplate<?, ?> redisTemplate) {...} @SuppressWarnings(\"rawtypes\") @Bean public RedisTemplate redisTemplate(RedisConnectionFactory factory){\tRedisTemplate redisTemplate = new RedisTemplate(); RedisSerializer stringSerializer = new StringRedisSerializer(); redisTemplate.setConnectionFactory(factory); return redisTemplate; } } ``` **修改后的配置:** ```java @Configuration @EnableCachingpublic class RedisCacheConfig { @Bean public CacheManager cacheManager(RedisTemplate<?, ?> redisTemplate) {...} @SuppressWarnings(\"rawtypes\") @Bean public RedisTemplate redisTemplate(RedisConnectionFactory factory){\tRedisTemplate redisTemplate = new RedisTemplate(); RedisSerializer stringSerializer = new StringRedisSerializer(); // 设置序列化器 redisTemplate.setKeySerializer(stringSerializer); redisTemplate.setValueSerializer(stringSerializer); redisTemplate.setHashKeySerializer(stringSerializer); redisTemplate.setHashValueSerializer(stringSerializer); return redisTemplate; } } ``` **修改后的代码主要做了以下几件事:** 1. 设置了 `RedisTemplate` 的 `keySerializer`、`valueSerializer`、`hashKeySerializer`和`hashValueSerializer`属性。 2. 使用 `StringRedisSerializer` 对字符串进行序列化和反序列化。 3. 使用自定义的 `RedisSerializer` 对 `Object` 进行序列化和反序列化。 **问题解决:** * `keySerializer`、`valueSerializer`、`hashKeySerializer`和`hashValueSerializer`属性用于指定如何序列化和反序列化键值和哈希值。 * 在 `RedisTemplate` 的配置中,设置了 `keySerializer` 属性,使其使用 `StringRedisSerializer` 对字符串进行序列化。 * 由于 `RedisTemplate` 使用了 `StringRedisSerializer` 进行序列化,因此键值和哈希值将以字符串形式存储。

正文

保存到redis中的key  前半段会出现乱码问题

 

原来配置:

  1. @Configuration
  2. @EnableCaching
  3. public class RedisCacheConfig {
  4. @Bean
  5. public CacheManager cacheManager(RedisTemplate<?, ?> redisTemplate) {
  6. CacheManager cacheManager = new RedisCacheManager(redisTemplate);
  7. return cacheManager;
  8. }
  9. @SuppressWarnings("rawtypes")
  10. @Bean
  11. public RedisTemplate redisTemplate(RedisConnectionFactory factory){
  12. RedisTemplate redisTemplate = new RedisTemplate();
  13. RedisSerializer stringSerializer = new StringRedisSerializer();
  14. redisTemplate.setConnectionFactory(factory);
  15. return redisTemplate;
  16. }
  17. }

到  redisTemplate方法中添加如下代码段

  1. @SuppressWarnings("rawtypes")
  2. @Bean
  3. public RedisTemplate redisTemplate(RedisConnectionFactory factory){
  4. RedisTemplate redisTemplate = new RedisTemplate();
  5. RedisSerializer stringSerializer = new StringRedisSerializer();
  6. redisTemplate.setConnectionFactory(factory);
  7. redisTemplate.setKeySerializer(stringSerializer);
  8. redisTemplate.setValueSerializer(stringSerializer);
  9. redisTemplate.setHashKeySerializer(stringSerializer);
  10. redisTemplate.setHashValueSerializer(stringSerializer);
  11. return redisTemplate;
  12. }

 

修改后key值显示正常

 

参考:https://blog.csdn.net/xiaolyuh123/article/details/78682200

 

 

 

文章知识点与官方知识档案匹配,可进一步学习相关知识
云原生入门技能树首页概览8498 人正在系统学习中

与[转帖]Redis key 乱码问题(springboot)相似的内容:

[转帖]Redis key 乱码问题(springboot)

保存到redis中的key 前半段会出现乱码问题 原来配置: @Configuration@EnableCachingpublic class RedisCacheConfig { @Bean public CacheManager cacheManager(RedisTemplate

[转帖]SpringBoot之RedisTemplate操作redis出现\xAC\xED\x00\x05t\x00\x08乱码问题

http://qclog.cn/1118 在SpringBoot中使用RedisTemplate操作redis时,会出现\xAC\xED\x00\x05t\x00\x08这种乱码问题,特别是在使用中文时。原因是因为RedisTemplate中key和value的序列化方式都默认使用了jdk的序列化方

[转帖]为什么我Redis中key惊现“乱码”?

为什么Redis中key会惊现“乱码”? 最近在做一个秒杀项目,过程中大量应用到了redis。 而我在用ElasticJob进行数据化初始化到Redis数据库时发现这些key都出现了一段前缀“乱码”。 数据结构为Hash,可以观察到hashkey也带有前缀“乱码” 这究竟是怎么回事呢?原来问题出在这

[转帖]RedisTemplate写入Redis数据出现无意义乱码前缀\xac\xed\x00\x05

背景 项目使用Spring的RedisTemplate进行Redis数据存取操作,实际应用中发现Redis中key和value会出现“无意义”乱码前缀\xac\xed\x00\x05t\x00-(样例\xac\xed\x00\x05t\x00-abcd:abc:xxxxxx:passport:ass

[转帖]Redis中Key的过期策略和淘汰机制

Key的过期策略 Redis的Key有3种过期删除策略,具体如下: 1. 定时删除 原理:在设置键的过期时间的同时,创建一个定时器(timer),让定时器在键的过期时间来临时,立即执行对键的删除操作优点:能够很及时的删除过期的Key,能够最大限度的节约内存缺点:对CPU时间不友好,如果过期的Key比

[转帖]Redis大key多key拆分方案

https://www.cnblogs.com/-wenli/p/13612364.html 一、单个简单的key存储的value很大 二、hash, set,zset,list 中存储过多的元素 三、一个集群存储了上亿的key 四、大Bitmap或布隆过滤器(Bloom )拆分 背景 业务场景中经

[转帖]redis中的bigkey问题

https://cdn.modb.pro/db/459810 什么是bigkey bigkey就是redis key/value体系中的大value问题。我们知道redis的底层数据存储结构中,有多种数据结构的实现。 String: 简单动态字符串 List: 双向链表、压缩列表 Hash: 哈希表

[转帖]Redis学习二(数据操作).

阅读目录 key 操作 string 操作 list 操作 set 操作 zset 操作 hash 操作 HyperLogLog 操作 回到顶部 key 操作 删除 key:del key 批量删除key:redis-cli -a(密码)keys “QXJ_*”| xargs redis-cli -

[转帖]redis集群批量删除模糊key shell脚本

1. 命令删除: 1. 1批量删除Key Redis 中有删除单个 Key 的指令 DEL,但好像没有批量删除 Key 的指令,不过我们可以借助 Linux 的 xargs 指令来完成这个动作 redis-cli keys "*" | xargs redis-cli del //如果redis-cl

[转帖]浅谈Redis大Key与热Key

https://www.cnblogs.com/jelly12345/p/16424080.html 如何定义大 Key 和 热 Key 如何定义大 Key 如何定义热 Key 大 Key 和 热 Key 产生的原因 大 Key 和 热 Key 有哪些危害 大 Key 的危害 热 Key 的危害 如