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

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

[html] view plain copy

print?

  1. 127.0.0.1:6379> keys *
  2. 1) "\xac\xed\x00\x05t\x00\x04pass"
  3. 2) "\xac\xed\x00\x05t\x00\x04name"
  4. 3) "name"
127.0.0.1:6379> keys *1) "\xac\xed\x00\x05t\x00\x04pass"2) "\xac\xed\x00\x05t\x00\x04name"3) "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;}

原文地址:https://www.cnblogs.com/jpfss/p/8427617.html

时间: 2024-08-30 09:26:07

解决Spring Boot 使用RedisTemplate 存储键值出现乱码 \xac\xed\x00\x05t\x00的相关文章

jdbc 预编译处理 和spring返回自增主键值

利用GeneratedKeyHolder获得新建数据主键值 Spring利用GeneratedKeyHolder,提供了一个可以返回新增记录对应主键值的方法 : int update(PreparedStatementCreator psc, KeyHolder generatedKeyHolder)//该方法返回受影响的行数,同时将新增记录对应主键值赋值给generatedKeyHolder参数 Spring为KeyHolder接口指代了一个通用的实现类GeneratedKeyHolder,该

Spring Data操作Redis时,发现key值出现 \xac\xed\x00\x05t\x00\tb

原文链接:http://blog.csdn.net/yunhaibin/article/details/9001198 最近在研究redis,以及spring data对redis的支持发现了一个奇怪的现象 先说现象吧,通过redisTemplate下的opsForHash方法存储hash类型的值,操作成功以后,去redis控制台显示keys * 的时候,发现一个奇怪的现象,插入的hash类型的key前面会有一堆的\xac\xed\x00\x05t\x00\tb 这种东西,见图1 (图1) 看见

解决Spring Boot集成Shiro,配置类使用Autowired无法注入Bean问题

如题,最近使用spring boot集成shiro,在shiroFilter要使用数据库动态给URL赋权限的时候,发现 @Autowired 注入的bean都是null,无法注入mapper.搜了半天似乎网上都没有相关问题,也是奇怪.最后发现 /** * Shiro生命周期处理器 * * @return */ @Bean(name = "lifecycleBeanPostProcessor") public LifecycleBeanPostProcessor getLifecycle

Spring AOP动态代理实现,解决Spring Boot中无法正常启用JDK动态代理的问题

Spring AOP底层的动态代理实现有两种方式:一种是JDK动态代理,另一种是CGLib动态代理. JDK动态代理 JDK 1.3版本以后提供了动态代理,允许开发者在运行期创建接口的代理实例,而且只能为接口创建代理实例. 如果被代理目标没有接口那么Spring也无能为力,Spring通过Java的反射机制生成被代理接口的新的匿名实现类. JDK动态代理具体实现原理: 通过实现InvocationHandlet接口创建自己的调用处理器: 通过为Proxy类指定ClassLoader对象和一组in

Java Dictionary 类存储键值

字典(Dictionary) 字典(Dictionary) 类是一个抽象类,它定义了键映射到值的数据结构. 当你想要通过特定的键而不是整数索引来访问数据的时候,这时候应该使用Dictionary. 当你想要通过特定的键而不是整数索引来访问数据的时候,这时候应该使用Dictionary. 当你想要通过特定的键而不是整数索引来访问数据的时候,这时候应该使用Dictionary. 当你想要通过特定的键而不是整数索引来访问数据的时候,这时候应该使用Dictionary. Dictionary类已经过时了

解决spring boot中文乱码问题

在开发或学习当中,我们不可避免的会碰到中文乱码的问题(好想哭,但还是要保持微笑!) 今天,在学习spring boot中碰到了中文乱码问题. 首先,看了一下workspace是不是设置utf-8默认字符集: 1)看了下没有,设置工作空间字符集为utf-8默认.(http://www.cnblogs.com/lhns/p/8901968.html) 2)发现没有效果. 3)在传值的地址上限制它的字符集格式: 这时候就显示正常了: 下次再看下有没有关于设置配置文件的修改,再给大家提供下思路.....

解决spring boot JavaMailSender部分收件人错误导致发送失败的问题

使用spring boot通常使用spring-boot-starter-mail进行邮件的发送.当进行邮件群发的话,如果一个收件人的地址错误,会导致所有邮件都发送失败.因此我们需要在邮件发送失败的时候把错误的收件人移除,重新发送. 当邮件发送失败的时候会抛出MailSendException,异常信息中包含错误的收件人信息. 主要代码如下: private void sendMail(List<String> mailList, MimeMessageHelper message){ try

(一)Python入门-3序列:17字典-核心底层原理-内存分析-存储键值对过程

字典核心底层原理(重要) 字典对象的核心是散列表.散列表是一个稀疏数组(总是有空白元素的数组),数组的 每个单元叫做 bucket.每个 bucket 有两部分:一个是键对象的引用,一个是值对象的引 用. 由于,所有bucket 结构和大小一致,我们可以通过偏移量来读取指定 bucket. 一:将一个键值对放进字典的底层过程 >>> a = {} >>> a["name"]="jack" 假设字典 a对象创建完后,数组长度为 8:

解决spring boot jpa查询,语句正确,返回为空问题

JPA(Hibernate),拥有很强大的能力,极大简化DAO层的开发 Spring Boot实现的是一站式全包,但是数据库是比较特殊的存在,在开发时可以使用Embedded数据库如DerBy等,但是实际环境下,都会把数据库分离到另一台专用服务器,在连接的时候,可能会出现和开发时不一样的各种BUG 调用查询接口,结果如下: [ {}, {}, {} ] 在调用它的时候会返回null 原因有2 1.传进去的参数可能不正确 需要我们debug或输出,细细查看 2.查询字符串有中文 原因可能是字符集的