1、问题描述

使用redisTemplate设置redis的key-value,程序运行没有问题,但是却在redis客户端查不到设置的key-value。

2、产生原因

出现这种乱码前缀的原因是没有进行序列化,因此导致在传输过程出现乱码问题。

RedisTemplate类中默认是没有设置序列化的。

因此需要设置一下RedisTemplate的序列化方式

3、解决方法

设置RedisTemplate的序列化方式

常见的序列化方式

修改后的代码

@Test
public void testRedis() {
//使用StringRedisSerializer序列化方式(一般如果key-value都是string的话,使用StringRedisSerializer就可以)
RedisSerializer stringSerializer = new StringRedisSerializer();
//key序列化方式
redisTemplate.setKeySerializer(stringSerializer);
//String的序列化方式
redisTemplate.setStringSerializer(stringSerializer);
//value序列化方式
redisTemplate.setValueSerializer(stringSerializer);
//hash key序列化方式
redisTemplate.setHashKeySerializer(stringSerializer);
//hash value序列化方式
redisTemplate.setHashValueSerializer(stringSerializer);
redisTemplate.opsForValue().set("notify:00123456", "2022-01-01");
}

在redis客户端可以查到了

当然也可以把RedisTemplate序列化配置放到configure里面,做一个全局配置。

package xxx

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.RedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer; /**
* @ClassName RedisConfig
* @Version 1.0
* @Author Wulc
* @Date 2022-01-11 16:41
* @Description 修改redis序列化
*/
@Configuration
public class RedisConfig {
@Bean
public RedisTemplate<String, Object> redisTemplate(RedisTemplate redisTemplate) {
RedisSerializer stringSerializer = new StringRedisSerializer();
redisTemplate.setKeySerializer(stringSerializer);
redisTemplate.setStringSerializer(stringSerializer);
redisTemplate.setValueSerializer(stringSerializer);
redisTemplate.setHashKeySerializer(stringSerializer);
redisTemplate.setHashValueSerializer(stringSerializer);
return redisTemplate;
}
}

4、参考资料

RedisTemplate操作redis时,key值出现\xac\xed\x00\x05t\x00前缀_u011345756的专栏-CSDN博客_\xac\xed\x00\x05t\x00

SpringBoot项目使用RedisTemplate设置序列化方式 - 只有芸知道 - 博客园

Spring Cloud里修改Redis的序列化方式 - code-G - 博客园

RedisTemplate设置redis的key时出现\xac\xed\x00\x05t\x00\x0f前缀的更多相关文章

  1. SpringBoot使用RedisTemplate操作Redis时,key值出现 \xac\xed\x00\x05t\x00\tb

    原因分析 原因与RedisTemplate源码中的默认序列化方式有关 defaultSerializer = new JdkSerializationRedisSerializer( classLoa ...

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

    原文链接:http://blog.csdn.net/yunhaibin/article/details/9001198 最近在研究redis,以及spring data对redis的支持发现了一个奇怪 ...

  3. redis key/value 出现\xAC\xED\x00\x05t\x00\x05

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

  4. 使用redisTemplate存储数据,出现\xAC\xED\x00\x05t\x00

    本文开发环境:SpringBoot+RedisTemplate 代码: /** * 缓存Map * * @param key * @param dataMap * @return */ @Overri ...

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

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

  6. SpringBoot项目使用RedisTemplate设置序列化方式

    前端时间新项目使用SpringBoot的RedisTemplate遇到一个问题,先简单描述一下问题:不同项目之间redis共用一个,但是我们新项目读不到老项目存储的缓存.新项目搭建的时候没有跟老项目使 ...

  7. 项目中redisTemplate设置的key,redis客户端上查询不到的问题

    再项目使用了redis储存key,测试需要在客户端删除对应的key,发现查询不到对应的key redis客户端: 发现redisTemplate实际存进去的key会多了几个字符 原因:程序中对key没 ...

  8. Redis设置和更新Key的过期时间

    EXPIRE key seconds 为给定 key 设置生存时间,当 key 过期时(生存时间为 0 ),它会被自动删除. 在 Redis 中,带有生存时间的 key 被称为『易失的』(volati ...

  9. redis lpop key 当key不存在时,返回nil , 监测redis执行语句是否正常执行

    Lpop key 返回值: 列表的头元素. 当key 不存在时, 返回 nil . 需求:  开发在执行 lpop key 时, 出现问题 , 执行语句卡住, 不能执行下去 , 需对此做一个监测 由于 ...

  10. spring data redis RedisTemplate操作redis相关用法

    http://blog.mkfree.com/posts/515835d1975a30cc561dc35d spring-data-redis API:http://docs.spring.io/sp ...

随机推荐

  1. Hbase之API基本操作

    API之框架 private static Admin admin = null; private static Connection connection = null; private stati ...

  2. jquery+bootstrap学习笔记

    最近小颖接了个私活,客户要求用jquery和bootstrap来实现业务需求,小颖总结了下在写的过程中的一下坑,来记录一下 1.动态加载html文件 switch (_domName) { case ...

  3. 创建Vue工程常用的命令

    创建一个vue项目的步骤 1.创建一个名称为myapp的工程 vue init webpack myapp 2.进入工程目录 cd myapp 3.安装 vue-router npm install ...

  4. day03-CSS

    CSS 1.css介绍 css指的是层叠样式表(cascading style sheets) 官方文档:https://www.w3school.com.cn/css/index.asp 为什么需要 ...

  5. 学习ASP.NET Core Blazor编程系列十——路由(上)

    学习ASP.NET Core Blazor编程系列一--综述 学习ASP.NET Core Blazor编程系列二--第一个Blazor应用程序(上) 学习ASP.NET Core Blazor编程系 ...

  6. 通过jmeter,将数据库数据查询出来并打印

    1. 连接数据库 1.1 添加jdbc驱动路径 1.2 JDBC Connection Configuration    1.3 JDBC Request 2. 查询数据库数据并打印 2.1 定义变量 ...

  7. C#使用内存和指针方式将字节数组转换为Bitmap

    /// <summary> /// 指针方式转 /// </summary> /// <param name="Width">图像的宽</ ...

  8. 2022-11-10 Acwing每日一题

    本系列所有题目均为Acwing课的内容,发表博客既是为了学习总结,加深自己的印象,同时也是为了以后回过头来看时,不会感叹虚度光阴罢了,因此如果出现错误,欢迎大家能够指出错误,我会认真改正的.同时也希望 ...

  9. springMVC环境的搭建(一)

    概要: MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model).视图(View)和控制器(Controller). MV ...

  10. ArcObjects SDK开发 006 ICommand和ITool接口

    1.ICommand接口 ICommand接口是插件协议之一,继承该接口的类都可以成为命令.即点击一下执行,不主动与宿主发生鼠标和键盘交互.该接口包含的重要成员如下表所示. 序号 名称 类型 描述 1 ...