解决Spring Boot 使用RedisTemplate 存储键值出现乱码 \xac\xed\x00\x05t\x00
最近使用spring-data-redis RedisTemplate 操作redis时发现存储在redis中的key不是设置的string值,前面还多出了许多类似\xac\xed\x00\x05t\x00这种字符串,如下
127.0.0.1:6379> keys *
- “\xac\xed\x00\x05t\x00\x04pass”
- “\xac\xed\x00\x05t\x00\x04name”
- “name”
spring-data-redis的RedisTemplate<K, V>模板类在操作redis时默认使用JdkSerializationRedisSerializer来进行序列化,如下
private boolean enableDefaultSerializer = true;
private RedisSerializer<?> defaultSerializer = new JdkSerializationRedisSerializer();
private RedisSerializer keySerializer = null;
private RedisSerializer valueSerializer = null;
private RedisSerializer hashKeySerializer = null;
private RedisSerializer hashValueSerializer = null;
解决方法:更改序列化方式
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;
}
补充:也可直接使用 StringRedisTemplate ,下附redis的缓存配置,可做参考
/**
===================================
描 述 : Redis + Spring Cache 整合增强
包 名 : top.qinxq.single.config
创建人 : qinxq
===================================
*/
@Configuration
@EnableCaching
@SuppressWarnings(“unchecked”)
public class RedisCacheConfig extends CachingConfigurerSupport {
@Value("${redis.cache.expiration:60}")
private long expiration;@Bean
CacheManager cacheManager(RedisConnectionFactory connectionFactory) {
// 配置序列化(解决乱码的问题)
RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig()
.entryTtl(Duration.ofSeconds(expiration))
.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(jackson2JsonRedisSerialize()))
.disableCachingNullValues();return RedisCacheManager.builder(connectionFactory).cacheDefaults(config).build();
}
@Bean
public 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相关推荐
- 解决Spring boot中读取属性配置文件出现中文乱码的问题
解决Spring boot中读取属性配置文件出现中文乱码的问题 参考文章: (1)解决Spring boot中读取属性配置文件出现中文乱码的问题 (2)https://www.cnblogs.com/ ...
- redis的键值中出现\xac\xed\x00\x05t\x00\这些的乱码问题
这里是因为,springboot默认的redis的序列化机制为 JdkSerializationRedisSerializer if (enableDefaultSerializer) {if (ke ...
- Reids简直存储,key以“\xAC\xED\x00\x05t\x00“开头
1.问题描述 使用RedisTemplate进行redis缓存时时发现存储在redis中的key前面多出:\xac\xed\x00\x05t\x00,如下 出现该问题的原因是, redis templ ...
- redis 值字符串前面部分乱码_解决spring boot redis序列化key-value乱码
最近使用spring-data-redis RedisTemplate 操作redis时发现存储在redis中的key不是设置的string值, 前面还多出了许多类似\xac\xed\x00\x05t ...
- redis键值出现 \xac\xed\x00\x05t\x00的解决方法
笔者在使用redis存放键值对时,发现存放的key和value多了\xac\xed\x00\x05t\x00&的前缀,笔者存放的是字符串,结果如下图所示,出现非预期的前缀. 出现该问题的原因是 ...
- 解决Spring Boot报错Mapped Statements collection already contains value for...Error while adding the mapp
解决Spring Boot报错Mapped Statements collection already contains value for...Error while adding the mapp ...
- java redis存储键值包含\xac\xed\x00\x05t\x00\特殊字符
java RedisTemplate操作redis后,想看一下是否成功, 就redis-cli执行:keys * "\xac\xed\x00\x05t\x00\x04name" & ...
- Spring集成Redis键值乱码\xac\xed\x00\x05t\x00\tb
目录 一.Spring集成Redis键值乱码 二.解决方法 三.问题分析 一.Spring集成Redis键值乱码 Spring集成Redis设置缓存数据时,发现键值乱码 设置的key前面有乱码\xac ...
- redis中键值出现 \xAC\xED\x00\x05t\x00\x11的原因和解决方法
一.redis中键值出现乱码情况 1.1 问题描述 1.1.1 使用SpringBoot项目结合redis做缓存,发现redis客户端工具中db0库key为USER_USER_ID_1000的前缀出现 ...
最新文章
- 北京/上海/深圳内推 | 百度视觉技术团队招聘视觉/3D算法工程师
- 【系列】EOS开发1 开发环境搭建
- 石川es6课程---5、函数-参数
- elf section类型_在 498 行极小 OS 上跑标准 ELF 程序
- SpringBoot实现定时任务
- 第5章 Python 数字图像处理(DIP) - 图像复原与重建7 - 周期噪声 余弦噪声生成方法
- Linux常用初级指令介绍
- seaborn分布数据可视化:直方图|密度图|散点图
- 工作48:$emit
- jquery easyui-----------tree
- Git教程_1 简介
- Rational Rose和UML可视化建模基础
- Android版本历史变迁
- VBScript 程序员参考手册 读书笔记08-
- word插入公式/endnote
- JAVA语言基础——基本语法
- zynq uart0和uart1设置
- 外网如何访问内网/局域网网站【内网穿透】
- Javalin:一个轻量的 Web Framework
- 【问题记录】js 更改数组中某字段名