场景

先说下场景:springboot整理redis,我是直接注入redisTemplate来进行操作redis.
其实出现这种情况,一般都知道,没有序列化

思路:

点到源码进去看的时候发现
RedisTemplate选择了默认的序列化器JdkSerializationRedisSerializer

  • 官方文档是这样说的:
    RedisTemplate (Spring Data Redis 2.1.4.RELEASE API)

Performs automatic serialization/deserialization between the given objects and
the underlying binary data in the Redis store. By default, it uses Java serialization
for its objects (through JdkSerializationRedisSerializer ).
For String intensive operations consider the dedicated StringRedisTemplate

而源码里面提供的是:
StringRedisTemplate.java

RedisSerializer.java

  • StringRedisTemplate默认选择的StringRedisSerializer序列化器
    由于我上面测试的是object,所以会导致没序列化乱码
  • 配置序列化
@Configuration
public class RedisConfig{@Beanpublic RedisTemplate<String,Object>redisTemplate(RedisConnectionFactory factory){RedisTemplate<String,Object>template=new RedisTemplate<>();//关联template.setConnectionFactory(factory);//设置key的序列化器template.setKeySerializer(new StringRedisSerializer());//设置value的序列化器template.setValueSerializer(new StringRedisSerializer());return template;}
}
这里可以提一嘴:为什么要序列化?

其实在java语言里面,一切皆为对象,而将对象的状态信息转为存储或传输的形式需要序列化。

/*** @Classname RedisConfig* @Description Rredis 配置类* @Date 2020/5/21 11:38* @Created by corey*/
@Configuration
public class RedisConfig {@Beanpublic RedisTemplate<String,Object> redisTemplate(RedisConnectionFactory factory){RedisTemplate<String ,Object> template = new RedisTemplate<>();//关联template.setConnectionFactory(factory);//设置key的序列化template.setKeySerializer(new StringRedisSerializer());//设置key的序列化template.setValueSerializer(new Jackson2JsonRedisSerializer<>(User.class));return template;}
}

在实际开发中很多情况下都是采用这种情况,实际情况下可能有多种需求,泛型不同,比如 <String,User>,直接配在config里面加一个方法就行

  • 下面是我完整的例子
    首先引入依赖;
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency>

yml中添加redis的配置

1.实体类为User,一定要实现序列化

@Data
public class Days implements Serializable {private String openId;private String daysId;//每天的标题private String title;//代办事项的数量private int itemNumber;//日程private String date;
}

2.然后在配置类中设置序列化器

/*** @Classname RedisConfig* @Description Rredis 配置类* @Date 2020/5/21 11:38* @Created by corey*/
@Configuration
public class RedisConfig {@Beanpublic RedisTemplate<String,Object> redisTemplate(RedisConnectionFactory factory){RedisTemplate<String ,Object> template = new RedisTemplate<>();//关联template.setConnectionFactory(factory);//设置key的序列化template.setKeySerializer(new StringRedisSerializer());//设置key的序列化template.setValueSerializer(new Jackson2JsonRedisSerializer<>(User.class));return template;}
}

3.测试类


@RunWith(SpringRunner.class)
@SpringBootTest
public class HelloworldApplicationTests {@Resourceprivate RedisTemplate<String,User> redisTemplate;@Testpublic void testUser(){User user = new User();user.setDate("123");user.setDaysId("456");user.setItemNumber(123);user.setOpenId("dawda");user.setTitle("title");this.redisTemplate.opsForValue().set("corey",user);System.out.println((redisTemplate.opsForValue().get("corey")));}

4.运行测试结果直接查看

可以发现存储的k/v都没有乱码,而且对象信息也在里面

参考:
https://blog.csdn.net/qq_36781505/article/details/86612988

解决Redis K和v 乱码情况 插入整个对象相关推荐

  1. Asp: 解决脚本输出网页出现乱码情况

    很久没碰asp,都有点生疏了,唉... 今天写一个小程序,发现网页静态部分输出不会乱码,asp脚本部分输出在360浏览器上会显示乱码,但在firefox和chrome上测试却不会显示乱码,我已经在代码 ...

  2. hibernate插入Mysql数据库出现中文乱码情况从这5个方面解决

    因为有了新电脑所以又要解决乱码问题,在网上找帖子很是头疼,还是自己总结一下比较好. hibernate插入Mysql数据库出现中文乱码情况从这几个方面解决:有了这几方面以后使用mysql的乱码问题就不 ...

  3. 解决 redis 存入中文,取出来是乱码wenti

    默认情况下,用redis存入中文,取出时会出现乱码情况,如图: ++++++++++++++++ 解决 ++++++++++++++++ 我们再启动redis时,可以在redis-cli 后面加上 - ...

  4. 解决springmvc在单纯返回一个字符串对象时所出现的乱码情况(极速版)

    使用springmvc框架开发了这么长时间,之前都是直接返回jsp页面,乱码情况都是通过配置和手动编解码来解决,但是今天突然返回一段单纯的字符串时,发现中文乱码情况解决不了了,下面就给各位分享一下如何 ...

  5. 解决网页打开json文件中文乱码情况

    解决网页打开json文件中文乱码情况 原因:保存json文件的格式不对 解决办法:另存json文件,保存的时候将编码类型修改为UTF-8,如图所示.将新json文件替换掉原json文件就好啦

  6. 解决使用Ajax 前台提交表单到后台,但输出为问号的中文乱码情况

    解决使用Ajax 前台提交表单到后台,但输出为问号的中文乱码情况 情况如下: 在web.xml文件中已经配置了,如下的spring的Filter <filter><filter-na ...

  7. 一次解决IDEA所有乱码情况

    注:所有IDEA乱码情况都可以使用如下解决步骤尝试. 前言: Eclipse开发的项目转移到idea上进行开发,启动没问题(控制台输出日志没有问题),调用短信业务是出现XML解析异常 Invocati ...

  8. 求解!IDEA使用泛型V,K,V报红(报错),求大佬支招(已解决)

    public class LRULinkedHashMap extends LinkedHashMap {public V put(K key, V value){try {lock.lock();r ...

  9. 微信小程序获取小程序码以及小程序码返回参数出现乱码情况的解决

    这个在微信官方文档 小程序中有的,本人用了其中一个:因为在使用的途中出现的中文乱码的情况,所以记录一下 首先获取 access_token 用此接口: GET https://api.weixin.q ...

最新文章

  1. 2019互联网大厂的月饼哪家强?
  2. ASP.NET MVC 5 学习教程:Details 和 Delete 方法详解
  3. 创建型模式(五):Singleton(单例模式)
  4. VC6.0 中的__asm语句
  5. mysql run sql files_HeidiSQL_5.1_Sourcecode
  6. Dubbo的Javassist代理
  7. 60-150-044-使用-Sink-Flink自定义RetractStreamTableSink
  8. python能以文本和二进制方式处理文件_使用Python进行二进制文件读写的简单方法(推荐)...
  9. CSS3过渡效果(CSS3)
  10. Java 操作MySql Blob 字段
  11. 为什么使用了security 后台出不来了_C#实现使用MD5加密用户登录密码,System.Web.Security报错...
  12. linux刻录光盘空间不足,解决Linux下刻录光盘问题
  13. Java语言 Timer 定时器的四种使用方式
  14. python 爬取《延禧攻略》所有的演员参演的电视剧
  15. 前端开发神器VS Code安装教程
  16. 研发管理心得,从技术小白做到CTO(研发总监)的辛酸之路
  17. Mac电脑声音无法正常播放怎么解决
  18. chm文件打不开的解决方法
  19. matlab或_数学建模与MATLAB——MATLAB入门
  20. multisim 11

热门文章

  1. 用扑克游戏操练List常用方法
  2. 开发中常见的编码和乱码问题
  3. 央行数字货币(CBDC)能否终结美元货币体系?
  4. c语言程序设计循环结构实验报告,C语言程序设计实验报告选择与循环结构程序设计.doc...
  5. 用matlab编程实现h鲁棒控制算法,利用matlab实现H-infinity鲁棒控制
  6. python制作图片数据集 h5py_基于h5py的使用及数据封装代码
  7. 【安装官方版本】安装Office
  8. js实现点击查看大图功能
  9. 十一、51单片机之串口通信
  10. 迪杰斯特拉算法的应用