引言

spring boot简单引入redis依赖,并使用RedisTemplate进行对象存储时,需要使存储对象实现Serializable接口,这样才能够成功将对象进行序列化。

RedisTemplate默认使用的序列化机制是JdkSerializationRedisSerializer,但实际开发中,往往会以json的形式来保存数据。那么可以通过两种方式来实现这种要求,第一就是将保存的对象通过一些方法先转换成JsonString的形式,然后再通过redis保存;第二种方式,就是今天将要总结的自定义RedisSerializer的方式。

Jackson2JsonRedisSerializer

如果你使用IDE如Eclipse使用Ctrl + T 查看RedisSerializer的实现类,就可以看到很多可供选择的序列化器:

因此,根据项目实际使用场景,可以尝试选择不同的序列化器,这里也可以看到,StringRedisSerializer是专门用于序列化字符串的,以及刚才提到的jdk序列化器,还有阿里的FastJsonRedisSerializer等等。

这里我选择Jackson2JsonRedisSerializer举例演示。

@Configuration
public class RedisConfig {@Beanpublic RedisCacheManager cacheManager(RedisTemplate<String, Object> redisTemplate) {RedisCacheManager cacheManager = new RedisCacheManager(redisTemplate);cacheManager.setUsePrefix(true);return cacheManager;}@Beanpublic RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory)throws UnknownHostException {RedisTemplate<String, Object> template = new RedisTemplate<>();template.setKeySerializer(new StringRedisSerializer());template.setConnectionFactory(factory);// 自定义Jackson2JsonRedisSerializerJackson2JsonRedisSerializer<Object> serializer = new Jackson2JsonRedisSerializer<>(Object.class);//        ObjectMapper om = new ObjectMapper();
//        om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
//        om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
//        serializer.setObjectMapper(om);template.setValueSerializer(serializer);template.afterPropertiesSet();return template;}}

测试自定义序列化

注入redisTemplate:

@Autowired
private RedisTemplate<String, Object> redisTemplate;

存储对象关键代码:

ValueOperations<String, Object> opsForValue = redisTemplate.opsForValue();
String key = "emp-01";
opsForValue.set("emp-01", new Emp("张红玉", 23));

观察redis中的数据:

其中Object是一个没有实现Serializer接口的员工类,可以看到redis中依然成功保存了这个json对象。

综上,就是关于自定义序列化器的简单配置,欢迎文末留言。

Spring Boot整合Redis——自定义RedisSerializer相关推荐

  1. Spring boot - 整合 Redis缓存(上)

    一.配置Pom文件 在使用spring boot 2.0整合redis时遇到了好多问题,网上很多例子都是1.x版本的.故2.0没有折腾好所以将2.0降到了1.5.降级后由于thymeleaf版本也会从 ...

  2. Spring boot整合Redis(入门教程)

    目录 源码分析 jedis VS lettuce 整合测试 导入依赖 配置连接 测试 存入字符串 存入对象 五大数据类型操作 自定义RedisConfig 存入对象 Redis工具类(常用API) 以 ...

  3. Spring boot整合Redis实现发布订阅(超详细)

    Redis发布订阅 基础知识 相关命令 订阅者/等待接收消息 发布者/发送消息 订阅者/成功接收消息 常用命令汇总 原理 Spring boot整合redis 导入依赖 Redis配置 消息封装类(M ...

  4. Spring Boot整合Redis以及Redis的原理

    Redis的原理及知识 Redis简介 redis是一个key-value.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合). ...

  5. Spring Boot基础学习笔记08:Spring Boot整合Redis

    文章目录 零.学习目标 1.熟悉Redis相关概念 2.掌握使用Spring Boot整合Redis 一.Redis概述 1.Redis简介 2.Redis优点 (1)存取速度快 (2)数据类型丰富 ...

  6. 十一、Spring Boot整合Redis(一)

    Spring Boot整合Redis    1. SpringBoot+单例Redis 1)引入依赖 <dependency>     <groupId>org.springf ...

  7. 大聪明教你学Java | Spring Boot 整合 Redis 实现访问量统计

    前言 之前开发系统的时候客户提到了一个需求:需要统计某些页面的访问量,记得当时还纠结了一阵子,不知道怎么去实现这个功能,后来还是在大佬的带领下借助 Redis 实现了这个功能.今天又回想起了这件事,正 ...

  8. Spring Boot 整合Redis 包含Java操作Redis哨兵 作者:哇塞大嘴好帥(哇塞大嘴好帅)

    Spring Boot 整合Redis 包含Java操作Redis哨兵 作者:哇塞大嘴好帥(哇塞大嘴好帅) 1. 配置环境 在SpringBoot2.0版本以后,原来使用的jedis被替换成为了let ...

  9. 微服务Spring Boot 整合 Redis 实现 好友关注

    文章目录 ⛅引言 一.Redis 实现好友关注 -- 关注与取消关注 二.Redis 实现好友关注 -- 共同关注功能 ⛵小结 ⛅引言 本博文参考 黑马 程序员B站 Redis课程系列 在点评项目中, ...

最新文章

  1. 智源学者文再文获北京市杰出青年中关村奖
  2. 关于SQL Server 2017中使用json传参时解析遇到的多层解析问题
  3. POJ2406-Power Strings【KMP】
  4. redhat下的iptables和firewalld 笔记
  5. Codeforces Round #284 (Div. 2): D. Name That Tune(概率DP)
  6. [转载] python支持complex吗_Python 内置函数complex详解
  7. 基于OpenCV的计算机视觉入门(3)图像特效
  8. [渝粤教育] 西南科技大学 英语语法2 在线考试复习资料
  9. MYSQL服务器my.cnf配置文档详解
  10. 多媒体封装格式的比较
  11. 计算机公式与函数有何区别,Excel中公式和函数的区别/excle中的函数公式
  12. 光纤交换机配置zone
  13. tokenizers in Transformers:BPE、WordPiece,SentencePiece
  14. 微信公众平台模拟登录自动群发图文消息工具包
  15. smil java,如何在Android开发中使用SMIL文件
  16. UVa 紫书50题留念
  17. 【欺骗眼睛】可能你不会相信,图中的A色块和B色块是同一个颜色
  18. 用ifconfig命令,只有lo,没有eth0
  19. 通道归一化与图像归一化
  20. 城市轨道噪声控制措施

热门文章

  1. java reader_Java Reader ready()方法与示例
  2. uint32_t 是常数吗_UINT_MAX常数,带C ++示例
  3. Java DataInputStream readShort()方法(带示例)
  4. ReentrantLock 中的 4 个坑!
  5. 面试官:如何实现幂等性校验?
  6. InnoDB的内存结构和特性
  7. MFC:2个重载中没有一个可以转换所有参数类型
  8. C语言空指针NULL详解
  9. Python获取硬件信息(硬盘序列号,CPU序列号)
  10. Kafka集群部署搭建完美标准版