RedisKey值出现\xAC\xED\x00\x05t\x00\x19原因及解决方案。

这篇具有很好参考价值的文章主要介绍了RedisKey值出现\xAC\xED\x00\x05t\x00\x19原因及解决方案。。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 在通过Spring RedisTemplate缓存数据的时候,发现key是一堆很不友好的东西,\xAC\xED\x00\x05t\x00.、\xAC\xED\x00\x05t\x00\x19、\xAC\xED\x00\x05t\x00\x11下面来分析一下。
\xac\xed\x00\x05t\x00,spring,mybatis,spring boot

 1.1 分析spring-data的org.springframework.data.redis.core.RedisTemplate源代码以后发现:
\xac\xed\x00\x05t\x00,spring,mybatis,spring boot

 1.2 因为spring操作redis是在jedis客户端基础上进行的,而jedis客户端与redis交互的时候协议中定义是用byte类型交互,jedis中提供了string类型转为byte[]类型,但是看到spring-data-redis中RedisTemplate<K, V>

在操作的时候k,v是泛型的,所以RedisTemplate中有了上面那段代码,在没有特殊定义的情况下,spring默认采用defaultSerializer = new JdkSerializationRedisSerializer();来对key,value进行序列化操作,在经过查看JdkSerializationRedisSerializer中对序列化的一系列操作,发现如下代码:
\xac\xed\x00\x05t\x00,spring,mybatis,spring boot

 1.3 序列化支持的是Object对象,调用了SerializingConverter类下的convert方法转换对象,转换对象的方法是:
\xac\xed\x00\x05t\x00,spring,mybatis,spring boot

 文章来源地址https://www.toymoban.com/news/detail-603434.html

1.4 原因其实就出现在这里,解决的办法就是手动定义序列化的方法,spring-data-redis中还提供了一个序列化的类专门针对string类型的序列化org.springframework.data.redis.serializer.StringRedisSerializer这个类,

我们在带有@Configuration注解的类中覆盖自动配置的RedisTemplate<Object,Object>,如下:

 

@Bean
public RedisTemplate<Object,Object> redisTemplate(RedisConnectionFactory redisConnectionFactory){
RedisTemplate<Object,Object> redisTemplate = new RedisTemplate<>();
// 设置redis连接
redisTemplate.setConnectionFactory(redisConnectionFactory);
// 使用Jackson2JsonRedisSerialize 替换默认序列化
Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
jackson2JsonRedisSerializer.setObjectMapper(objectMapper);

// 设置value的序列化规则和 key的序列化规则
redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);
redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
// 将redisTemplate的序列化方式更改为StringRedisSerializer
redisTemplate.setHashKeySerializer(new StringRedisSerializer());
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.afterPropertiesSet();
return redisTemplate;
}

覆盖自动配置的RedisTemplate<Object,Object>后,再次查询新存入的redisKey已恢复正常
\xac\xed\x00\x05t\x00,spring,mybatis,spring boot

 

到了这里,关于RedisKey值出现\xAC\xED\x00\x05t\x00\x19原因及解决方案。的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 电脑启动后出现白屏问题的可能原因及解决方案

    电脑开机后出现白屏问题是一种常见的故障,可能由多种原因引起。在本文中,我将介绍一些可能的原因,并提供相应的解决方案,以帮助您解决这个问题。 显示器故障:首先,检查显示器是否正常工作。可以尝试连接另一个显示器或电视,看看是否仍然出现白屏问题。如果

    2024年02月04日
    浏览(36)
  • iTunes更新iOS17出现发生未知错误4000的原因和解决方案

    有不少人使用iTunes更新iOS 17时出现「无法更新iPhone发生未知的错误4000」的错误提示,不仅不知道iTunes升级失败的原因,也无从解决iPhone无法更新4000的问题。 小编今天就分享iPhone更新iOS系统出现4000错误提示的原因和对应的解决方案。 许多苹果用户在更新iOS 系统时,经常会遇

    2024年02月07日
    浏览(74)
  • 无主之地3出现UE4崩溃怎么办?无主之地3出现UE4崩溃深入解析原因及解决方案

    无主之地3(Borderlands 3)出现UE4崩溃,通常指的是游戏运行时基于虚幻引擎4(Unreal Engine 4,简称UE4)开发的部分出现崩溃现象。 下面一起来看看原因及解决方法介绍吧! 原因 1. 驱动程序问题:•显卡驱动程序过时或不兼容可能导致UE4崩溃。确保您的显卡驱动是最新的,并且

    2024年04月09日
    浏览(42)
  • 9:00面试,9:05就出来了,问的问题有点变态。。。

    从小厂出来,没想到在另一家公司又寄了。 到这家公司开始上班,加班是每天必不可少的,看在钱给的比较多的份上,就不太计较了。没想到12月一纸通知,所有人不准加班,加班费不仅没有了,薪资还要降40%,这下搞的饭都吃不起了。 还在有个朋友内推我去了一家互联网公

    2024年02月05日
    浏览(32)
  • 串口发送数据,只接收到00的原因之一

    1、环境: STM32F103RCT6 KEIL 5 2、现象: 不管我发送任何类型的数据,在串口助手上显示接收到的都是00, 我头很大,去网上找了别人的代码对比检查。 终于,细心的我发现,原来粗心的我少了一行代码。 3、解决方案1 RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE); 好了,加上这一行

    2024年02月12日
    浏览(64)
  • 8:00面试,8:05就出来了 ,问的实在是太变态了···

    从外包出来,没想到竟然死在了另一家厂子··· 自从加入这家公司,每天都在加班,钱倒是给的不少,所以我也就忍了。没想到12月一纸通知,所有人都不许加班,薪资直降30%,顿时有吃不起饭的赶脚。 好在有个兄弟内推我去了一家互联网公司,兴冲冲见面试官,没想到一道

    2023年04月18日
    浏览(25)
  • Stm32f103之串口发送数据,只接收到00的原因

    1、时钟选择的对不对, 2、GPIO口的TX引脚应该设置为“复用推挽输出” 3、中断初始化函数也不可加   4、硬件方面RXT、TXD电路接反。一直出现00的时候就要怀疑是不是线接反了。 总结:大概率是代码的问题一定要仔细检查

    2024年02月11日
    浏览(48)
  • docker 报错 error: invalid character ‘\x00‘ looking for beginning of value

    执行docker build的时候报错:error: invalid character ‘x00’ looking for beginning of value。 环境: Docker version 20.10.17, build 100c701 windows docker desktop 4.10.1 WSL2 解决办法:https://github.com/docker/for-win/issues/12561 导致报错的原因是 meta.json 损坏,被写入了零值。 https://docs.docker.com/desktop/release-no

    2024年02月15日
    浏览(45)
  • 关于 Qt中的QString内容存在\u0000使用QChart(0x00)消除 的解决方法

    若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/131860574 红胖子(红模仿)的博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中…(点击传送门)   做gps时,部

    2024年02月16日
    浏览(27)
  • 互联网摸鱼日报(2023-05-19)

    InfoQ 热门话题 张勇发布全员信:阿里云将分拆上市,二次创业打造世界级科技公司 面临强制退市后,图森未来又现高管人事地震,技术副总裁王磊将离职 工行与中国外汇交易中心合作打造“智能交易助手”;农业银行金融创新赋能“智慧雄安”建设;广发信用卡基于敏捷理

    2024年02月05日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包