1.问题描述

使用RedisTemplate进行redis缓存时时发现存储在redis中的key前面多出:\xac\xed\x00\x05t\x00,如下

出现该问题的原因是, redis template向redis存放使用java对象序列化的值,序列化方式和string的一般方式不同。

spring-data-redis的RedisTemplate<K, V>模板类在操作redis时默认使用JdkSerializationRedisSerializer来进行序列化,如下

2.解决方法

方法1、更改序列化方式(每个引用RedisTemplate的都需要加入如下方式)

private RedisTemplate redisTemplate;@Autowired(required = false)
public void setRedisTemplate(RedisTemplate redisTemplate) {RedisSerializer stringSerializer = new StringRedisSerializer();redisTemplate.setKeySerializer(stringSerializer);redisTemplate.setValueSerializer(stringSerializer);redisTemplate.setHashKeySerializer(stringSerializer);redisTemplate.setHashValueSerializer(stringSerializer);this.redisTemplate = redisTemplate;
}

方法2、建立RedisCacheConfig后生效(只需要建立以下类,不需要其他改送,启动项目运行即可)

package com.biaopu.core.config;import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cache.CacheManager;
import org.springframework.cache.annotation.CachingConfigurerSupport;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.cache.RedisCacheConfiguration;
import org.springframework.data.redis.cache.RedisCacheManager;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.RedisSerializationContext;import java.time.Duration;/*** ===================================* 描 述 : Redis + Spring Cache 整合增强* ===================================*/
@Configuration
@EnableCaching
@SuppressWarnings("unchecked")
public class RedisCacheConfig extends CachingConfigurerSupport {@Value("${redis.cache.expiration:60}")private long expiration;@BeanCacheManager cacheManager(RedisConnectionFactory connectionFactory) {// 配置序列化(解决乱码的问题)RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig().entryTtl(Duration.ofSeconds(expiration)).serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(jackson2JsonRedisSerialize())).disableCachingNullValues();return RedisCacheManager.builder(connectionFactory).cacheDefaults(config).build();}@Beanpublic RedisTemplate<String, String> redisTemplate(RedisConnectionFactory factory) {StringRedisTemplate template = new StringRedisTemplate(factory);template.setValueSerializer(jackson2JsonRedisSerialize());template.afterPropertiesSet();return template;}private Jackson2JsonRedisSerializer jackson2JsonRedisSerialize(){Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);ObjectMapper om = new ObjectMapper();om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);jackson2JsonRedisSerializer.setObjectMapper(om);return jackson2JsonRedisSerializer;}
}

参考地址:

解决Spring Boot 使用RedisTemplate 存储键值出现乱码 \xac\xed\x00\x05t\x00_Dongguabai的博客-CSDN博客_\xac\xed\x00\x05t\x00\x04

Reids简直存储,key以“\xAC\xED\x00\x05t\x00“开头相关推荐

  1. 解决Spring Boot 使用RedisTemplate 存储键值出现乱码 \xac\xed\x00\x05t\x00

    最近使用spring-data-redis RedisTemplate 操作redis时发现存储在redis中的key不是设置的string值,前面还多出了许多类似\xac\xed\x00\x05t\ ...

  2. 【springboot】redisTemplate Redis key出现\xac\xed\x00\x05t\x00

    现象 springboot项目使用redisTemplate整合redis,测试写入字符串类型的key.value,通过redis可视化工具观察redis存储数据,发现key不符合测试预期,出现\xa ...

  3. FAQ:redis key/value 前面出现\xAC\xED\x00\x05t\x00\x05

    1.问题现象: 最近使用spring-data-redis 和jedis 操作redis时发现存储在redis中的key不是程序中设置的string值,前面还多出了许多类似\xac\xed\x00\x ...

  4. redis key/value 前面出现\xac\xed\x00\x05t\x00\x06 已解决

    最近写项目时遇到的一个问题,当我向 redis 中 set 数据的时候 key 和 value出现\xac\xed\x00\x05t\x00\x06这些乱码,问题如图: 原因:spring-data- ...

  5. java redis存储键值包含\xac\xed\x00\x05t\x00\特殊字符

    java RedisTemplate操作redis后,想看一下是否成功, 就redis-cli执行:keys * "\xac\xed\x00\x05t\x00\x04name" & ...

  6. springboot 集成redis key乱码\xac\xed\x00\x05t\x00\x0eHAOKE_HOT_WORD

    文章目录 场景 分析 解决 场景 springboot集成redis集群 检查key时发现key是二进制格式的 \xac\xed\x00\x05t\x00\x0eHAOKE_HOT_WORD 分析 R ...

  7. RedisTemplate设置redis的key时出现\xac\xed\x00\x05t\x00\x0f前缀

    1.问题描述 使用redisTemplate设置redis的key-value,程序运行没有问题,但是却在redis客户端查不到设置的key-value. 2.产生原因 出现这种乱码前缀的原因是没有进 ...

  8. Redis存key出现\xAC\xED\x00\x05t\x00\x14

    在使用RedisTemplate存key的时候发现在redis的key是 \xAC\xED\x00\x05t\x00\x14 这样的 或者类似这样的. 因为在RedisTemplate源码里面默认序列 ...

  9. linux shell 删除key \xAC\xED\x00\x05t\x00\x04${key} 序列化16进制

    背景就是 要查询一批键值对进行删除 通过keys key∗匹配出来要删除的key然后通过del命令删除想着用shell直接把查询出来键{key}* 匹配出来要删除的key 然后通过del命令删除 想着 ...

最新文章

  1. Shell常用内容汇总
  2. linux sqlncli 乱码,SQL SERVE报错SQLNCLI 返回了消息 Unspecified error
  3. oracle11g 启动报错 缺少系统参数
  4. Kafka参数详解及调优--生产者
  5. 【JavaScript】【JQuery】获取 data-* 属性值
  6. python实现快速排序算法_基础算法:快速排序(python实现)
  7. 相机中影响成像质量的参数
  8. jsp测试连接mysql_JSP 连接MySQL配置与测试
  9. 同一用户最新登录踢掉历史登录【原创】
  10. python所有软件-如何在Python中列出所有已安装的软件包及其版本?
  11. jpg灰度化 python_python开发之HighGUI上位机开发(一)
  12. exifinterface.setattribute设置不上去_电脑自动开机怎么设置
  13. matlab数据存成脚本,matlab的excel的读和写(生成脚本m文件)
  14. 如何让程序员更容易的开发Web界面?重构SmartAdmin展示TinyUI
  15. 嵌入式思维 、不深不浅的理解
  16. mac 更新系统后 idea 意外退出
  17. SAP FAGLGVTR 总账科目年末结转
  18. 获取iframe里面的数据
  19. Eclipse在线安装主题(color theme)以及安装color theme第三方主题(图文)
  20. with recompile

热门文章

  1. Syncthing+蒲公英oray快速实现异地文件同步
  2. matlab图像压缩像素编码,基于DCT的图像压缩编码算法的MATLAB实现
  3. cvx怎么处理向量和向量共轭转置的乘积_矩阵论练习2(共轭转置的秩和解空间)...
  4. 【5G网络基础,熟知即可】
  5. 光场视差与深度的关系(lytro深度计算公式)
  6. 主生产计划报表(MPS报表)用PHP解决ERP课程中白本教材第四章报表5-7的编制问题
  7. dinic算法 c 语言,网络流入门—用于最大流的Dinic算法
  8. 计算机网络学习通习题
  9. Qt Qml 汽车仪表
  10. 可以不学html直接学vue吗,一个只学过HTML,CSS,JS的前端初学者在学习Vue.js之前还需要学习哪些知识?...