Spring的RedisTemplate存储的key和value有特殊字符的处理

 更新时间:2023年12月20日 15:03:30   作者:lkforce  
这篇文章主要介绍了Spring的RedisTemplate存储的key和value有特殊字符的处理方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

Spring RedisTemplate存储的key和value有特殊字符

Spring的spring-data-redis包下有RedisTemplate类,当调用:

redisTemplate.opsForValue().set("TEST","ABCD");

方法后,Redis里实际保存的key并不完全等于我们预设的key值,而是在key值前面加了一些特殊字符

就像这样的:

"\xac\xed\x00\x05t\x00\x0cTEST"

而保存的value可能是这样的:

"\xac\xed\x00\x05t\x00\x10cABCD"

开头会有类似\xac\xed\x00\x05t\x00\x0c这样的特殊字符。

这种特殊字符出现的原因

是因为RedisTemplate默认使用JdkSerializationRedisSerializer作为序列化工具。

虽然保存的key和我们想象中的不太一样,但是并不影响我们调用

redisTemplate.opsForValue().get("TEST");

去获取之前设置的value,而且得到的value也是正确的,不带特殊字符。

这应该是因为RedisTemplate把查询用的key值进行同样的序列化后再进行查询,所以能成功的找到该条记录,并把value反序列化后返回,得到的就是没有特殊字符的value。

如果不想在保存的key和value里包含这种特殊字符,可以手动修改序列化方式

使用以下代码:

@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;
}

注意:

方法前面的@Autowired注解是需要加的。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java Spring的核心与设计思想你知道吗

    Java Spring的核心与设计思想你知道吗

    这篇文章主要为大家详细介绍了Java Spring的核心与设计思想,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-03-03
  • Spring Boot Maven 打包可执行Jar文件的实现方法

    Spring Boot Maven 打包可执行Jar文件的实现方法

    这篇文章主要介绍了Spring Boot Maven 打包可执行Jar文件的实现方法,需要的朋友可以参考下
    2018-02-02
  • Feign调用接口解决处理内部异常的问题

    Feign调用接口解决处理内部异常的问题

    这篇文章主要介绍了Feign调用接口解决处理内部异常的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • Java中断异常的正确处理方法

    Java中断异常的正确处理方法

    这篇文章主要给大家介绍了关于Java中断异常的正确处理方法,文中通过示例代码介绍的非常详细,对大家学习或者使用Java具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-09-09
  • java.lang.Runtime.exec的左膀右臂:流输入和流读取详解

    java.lang.Runtime.exec的左膀右臂:流输入和流读取详解

    这篇文章主要介绍了java.lang.Runtime.exec的左膀右臂:流输入和流读取详解,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • Spring集成Web环境与SpringMVC组件的扩展使用详解

    Spring集成Web环境与SpringMVC组件的扩展使用详解

    这篇文章主要介绍了Spring集成Web环境与SpringMVC组件,它是一个MVC架构,用来简化基于MVC架构的Web应用开发。SpringMVC最重要的就是五大组件
    2022-08-08
  • 在SpringBoot中该如何配置拦截器

    在SpringBoot中该如何配置拦截器

    今天给大家带来的是关于SpringBoot的相关知识,文章围绕在SpringBoot中该如何配置拦截器展开,文中有非常详细的介绍及代码示例,需要的朋友可以参考下
    2021-06-06
  • Spring Bean的生命周期详细介绍

    Spring Bean的生命周期详细介绍

    这篇文章主要介绍了Spring Bean的生命周期的相关资料,需要的朋友可以参考下
    2016-09-09
  • Spring事件监听机制使用和原理示例讲解

    Spring事件监听机制使用和原理示例讲解

    Spring事件监听机制是一个很不错的功能,我们在进行业务开发的时候可以引入,在相关的开源框架中也是用它的身影,比如高性能网关ShenYu中就使用了Spring事件监听机制来发布网关的更新数据,它可以降低系统的耦合性,使系统的扩展性更好
    2023-06-06
  • Java @Async注解导致spring启动失败解决方案详解

    Java @Async注解导致spring启动失败解决方案详解

    这篇文章主要介绍了Java @Async注解导致spring启动失败解决方案详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08

最新评论