全面解析下Spring Boot操作Redis的几种方案( 二 )

使用
接下来 , 可以直接在 Service 中注入 StringRedisTemplate 或者 RedisTemplate 来使用:
@Service public class HelloService {@AutowiredRedisTemplate redisTemplate;public void hello() {ValueOperations ops = redisTemplate.opsForValue();ops.set("k1", "v1");Object k1 = ops.get("k1");System.out.println(k1);} }Redis 中的数据操作 , 大体上来说 , 可以分为两种:

  1. 针对 key 的操作 , 相关的方法就在 RedisTemplate 中
  2. 针对具体数据类型的操作 , 相关的方法需要首先获取对应的数据类型 , 获取相应数据类型的操作方法是 opsForXXX
调用该方法就可以将数据存储到 Redis 中去了 , 如下:
全面解析下Spring Boot操作Redis的几种方案

文章插图
 
k1 前面的字符是由于使用了 RedisTemplate 导致的 , RedisTemplate 对 key 进行序列化之后的结果 。
RedisTemplate 中 , key 默认的序列化方案是 JdkSerializationRedisSerializer。
而在 StringRedisTemplate 中 , key 默认的序列化方案是 StringRedisSerializer  , 因此 , 如果使用 StringRedisTemplate  , 默认情况下 key 前面不会有前缀 。
不过开发者也可以自行修改 RedisTemplate 中的序列化方案 , 如下:
@Service public class HelloService {@AutowiredRedisTemplate redisTemplate;public void hello() {redisTemplate.setKeySerializer(new StringRedisSerializer());ValueOperations ops = redisTemplate.opsForValue();ops.set("k1", "v1");Object k1 = ops.get("k1");System.out.println(k1);} }当然也可以直接使用 StringRedisTemplate:
@Service public class HelloService {@AutowiredStringRedisTemplate stringRedisTemplate;public void hello2() {ValueOperations ops = stringRedisTemplate.opsForValue();ops.set("k2", "v2");Object k1 = ops.get("k2");System.out.println(k1);} }另外需要注意  , Spring Boot 的自动化配置 , 只能配置单机的 Redis  , 如果是 Redis 集群 , 则所有的东西都需要自己手动配置 , 关于如何操作 Redis 集群 , 松哥以后再来和大家分享 。
方案二:Spring Cache通过 Spring Cache 的形式来操作 Redis , Spring Cache 统一了缓存江湖的门面 , 这种方案 , 松哥之前有过一篇专门的文章介绍 , 小伙伴可以移步这里:Spring Boot中 , Redis缓存还能这么用! 。
方案三:回归原始时代第三种方案 , 就是直接使用 Jedis 或者 其他的客户端工具来操作 Redis  , 这种方案在 Spring Boot 中也是支持的 , 虽然操作麻烦 , 但是支持 , 这种操作松哥之前也有介绍的文章 , 因此这里就不再赘述了 , 可以参考 Jedis 使用 。
总结Spring Boot 中 , Redis 的操作 , 这里给大家总结了三种方案 , 实际上前两个使用广泛一些 , 直接使用 Jedis 还是比较少 , 基本上 Spring Boot 中没见过有人直接这么搞 。
好了 , 本文就说到这里 , 有问题欢迎留言讨论 。
小编在学习过程中整理了一些学习资料 , 可以分享给做java的工程师朋友们 , 相互交流学习 , 需要的可以私信(资料)即可免费获取Java架构学习资料(里面有高可用、高并发、高性能及分布式、Jvm性能调优、Spring源码 , MyBatis , Netty,Redis,Kafka,MySQL,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多个知识点的架构资料)
其中覆盖了互联网的方方面面 , 期间碰到各种产品各种场景下的各种问题 , 很值得大家借鉴和学习 , 扩展自己的技术广度和知识面 。最后记得帮作者点个关注




推荐阅读