springboot集成redis过程

1.首先需要引入相应的jar包

2.其次在yml文件中配置相应的属性(这里是默认的)

3.写一个redis配置类去更改spring框架提供的RedisTemplate中的序列化策略。(如果不更改在redis中存储会导致乱码,然后后续会取不出来存储的数据)

乱码截图:

配置截图:

具体后面会详细说明。这里将redis序列化为json格式;

4.在项目中调用即可。

注意:redis中存储的若为string类型的,则用StringRedisTemplate去操作,用RedisTemplate会报错JsonParseException

最后附上redis中存储的内容截图

下图为json序列化后的对象

下图为string类型序列化后的存储内容

剩余的也就没啥了,可以参考网上其他的redis配置

接下来的是一些redisTemlate与其它相关的一些区别。相关参考源码原文链接:https://blog.csdn.net/naonao2014/article/details/88606845

很重要!!!抱拳

5.Jedis与RedisTemplate的区别:
Jedis是Redis官方推荐的面向Java的操作Redis的客户端,可以用JedisPool来获得连接进行get、set、del等操作相对简单,而RedisTemplate是SpringDataRedis中对JedisApi的高度封装。
SpringDataRedis相对于Jedis来说可以方便地更换Redis的Java客户端,比Jedis多了自动管理连接池的特性,方便与其他Spring框架进行搭配使用如:SpringCache
参考:https://blog.csdn.net/varyall/article/details/83476970
6.redisTemplate与stringRedisTemplate的区别
第一点,StringRedisTemplate继承了RedisTemplate。
第二点,RedisTemplate是一个泛型类,而StringRedisTemplate则不是。
第三点,StringRedisTemplate只能对key=String,value=String的键值对进行操作,RedisTemplate可以对任何类型的key-value键值对操作。
第四点,是他们各自序列化的方式不同,但最终都是得到了一个字节数组,殊途同归,StringRedisTemplate使用的是StringRedisSerializer类;RedisTemplate使用的是JdkSerializationRedisSerializer类。反序列化,则是一个得到String,一个得到Object
这两个类是springboot-data-redis对Redis进行操作的实现类。
打开StringRedisTemplate和RedisTemplate的源码,发现StringRedisTemplate继承了RedisTemplate,一般来说子类应该比父类有用更强大的功能,而此处却不是,因为RedisTemplate是泛型类,而在StringRedisTemplate继承RedisTemplate类时,则是指定了泛型的类型,两个String。
这就直接导致了,StringRedisTemplate只能处理String-String的键值对数据,而RedisTemplate则可以处理任何类型的键值对。
7.序列化:
redis中对序列化的应用主要是在四个方面,分别是
keySerializer、valueSerializer、hashKeySerialiser、hashValueSerializer。

在redisTemplate中采用的序列化机制默认都是JdkSerializationRedisSerializer。

而在StringRedisTemplate中默认采用的序列化机制是:StringRedisSerializer。

无论是JdkSerializationRedisSerializer还是StringRedisSerializer都实现泛型接口RedisSerializer。

除此外,spring-data-redis中还有几个也实现了RedisSerializer接口的序列化类,它们之间的区别如下:


GenericToStringSerializer: 可以将任何对象泛化为字符串并序列化


Jackson2JsonRedisSerializer: 跟JacksonJsonRedisSerializer实际上是一样的


JacksonJsonRedisSerializer: 序列化object对象为json字符串,jackson-json工具提供了javabean与json之间的转换能力,可以将pojo实例序列化成json格式存储在redis中,也可以将json格式的数据转换成pojo实例。因为jackson工具在序列化和反序列化时,需要明确指定Class类型,因此此策略封装起来稍微复杂。【需要jackson-mapper-asl工具支持】


JdkSerializationRedisSerializer: 序列化java对象(被序列化的对象必须实现Serializable接口),使用JDK本身序列化机制,将pojo类通ObjectInputStream/ObjectOutputStream进行序列化操作,最终redis-server中将存储字节序列。是目前最常用的序列化策略


StringRedisSerializer: 简单的字符串序列化,根据指定的charset对数据的字节序列编码成string,是“new String(bytes, charset)”和“string.getBytes(charset)”的直接封装。是最轻量级和高效的策略。


GenericToStringSerializer:类似StringRedisSerializer的字符串序列化


GenericJackson2JsonRedisSerializer:类似Jackson2JsonRedisSerializer,但使用时构造函数不用特定的类


OxmSerializer:提供了将javabean与xml之间的转换能力,目前可用的三方支持包括jaxb,apache-xmlbeans;redis存储的数据将是xml工具。不过使用此策略,编程将会有些难度,而且效率最低;不建议使用。【需要spring-oxm模块的支持】
 

Jdk序列化速度快,占用空间大,不易查看,通过redis命令查看类似\xAC\xED\x00\x05t\x00\x011不方便,Hash最好还是用GenericJackson2JsonRedisSerializer
可以通过手动配置, 将redisTemplate的序列化方式进行更改,推荐将所有Template的key都采用String的序列化方式,而value的序列化方式可以采用不同的序列化方式
 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值