架构师_程序员_码农网

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 6701|回复: 0

[资料] 【实战】Spring Boot 整合Redis教程

[复制链接]
发表于 2019-3-11 16:48:17 | 显示全部楼层 |阅读模式
SpringBoot中注入RedisTemplate实例异常解决
https://www.itsvse.com/thread-7224-1-1.html
(出处: 架构师_程序员)
Error creating bean with name 'stringRedisTemplate' defined in...
https://www.itsvse.com/thread-7225-1-1.html
(出处: 架构师_程序员)

环境:spring boot 2.1.1.RELEASE
pom.xml 添加引用,配置如下:



在application.properties中配置如下:


聊聊spring-boot-starter-data-redis的配置变更
https://www.itsvse.com/thread-7207-1-1.html
(出处: 架构师_程序员)

编写测试controller:


我们通过浏览器访问控制器,然后通过redis客户端查看缓存。

spring redis 有StringRedisTemplate、RedisTemplate这两个模板,我们分别通过这两个模板来测试数据,分别插入itsvse和itsvse2键值对如下:

QQ截图20190311164028.jpg

我们插入了同样的值,为什么两个模板不光value值格式不一样,连key生成的规则也不一样。(帖子下面说)

原理简析

看一下RedisTemplate和StringRedisTemplate使用的是什么序列化。

可以看到StringRedisTemplate是继承的RedisTemplate。然后设置使用string序列化方式StringRedisSerializer。

RedisSerializer.string()源码:


UTF_8定义:
接下来看一下RedisTemplate的序列化代码,可以看到默认是使用JDK序列化方式JdkSerializationRedisSerializer:

QQ截图20190311164453.jpg

查询源码可知RedisTemplate默认使用JdkSerializationRedisSerializer序列化,而StringRedisTemplate则使用StringRedisSerializer。

另外需要注意: 两者的数据是不共通的;也就是说StringRedisTemplate只能管理StringRedisTemplate里面的数据,RedisTemplate只能管理RedisTemplate中的数据。

这就解释了,我们刚才通过不通模板去执行添加操作,有不同的数据格式。

切换序列化方式

如果不想使用默认的序列化方式,假如我们使用fastjson,则需要自定义RedisTemplate的bean,替换springboot原有注入的bean:



(完)




上一篇:基层看才能、中层看德行、高层看胸怀
下一篇:未能加载文件或程序集Microsoft.Web.Infrastructure的解决方案
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2024-4-25 14:37

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表