zoukankan      html  css  js  c++  java
  • spring boot通过Spring Data Redis集成redis

    在spring boot中,默认集成的redis是Spring Data Redis,Spring Data Redis针对redis提供了非常方便的操作模版RedisTemplate

    idea中新建spring boot项目的时候,引入Spring Data Redis依赖:

    创建成功后的项目依赖pom.xml如下:

    其实spring-boot-starter-data-redis依赖中就包含了spring-data-redis依赖

     

    application.properties中配置redis的信息:

    可以看到默认连接的redis服务端主机和端口是localhost和6379

    我的redis安装在了本地,端口也是默认的6379,所以application.properties中没有写东西

    当开发者在项目中引入了Spring Data Redis,并配置了redis的基本信息,此时自动化配置就会生效,看一下spring boot中redis的自动化配置类

    • 首先标记这是一个配置类,同时该配置在RedisOperations存在的情况下才会生效(即项目中引入了Spring Data Redis)
    • 然后导入在application.properties中配置的属性
    • 然后再导入连接池信息
    • 最后,提供了两个bean,RedisTemplate和StringRedisTemplate,其中StringRedisTemplate是RedisTemplate的子类,两个方法基本一致,

       不同之处主要体现在操作的数据类型不同,RedisTemplate中的两个泛型都是Object,意味着存储的key和value都可以是一个对象,而StringRedisTemplate

       的两个泛型都是String,意味着StringRedisTemplate的key和value都只能是字符串。如果开发者没有提供相关的bean,这两个配置就会生效,否则不会生效

       终端开启redis服务端,并保持开启状态,确保一会可以连得上redis服务端:

    Spring Data Redis中真正操作redis可以采用RedisTemplate的方式

    • 针对key的操作,相关的方法就在RedisTemplate中
    • 针对具体数据类型的操作,相关的方法首先获取对应的数据类型,获取对应数据类型的操作方法是opsForXXX

    在测试类中注入redisTemplate,redis支持的五种数据类型在RedisTemplate类中对应相应的方法:

    以操作字符串的opfForValue()方法为例:

    name前面的字符是由于使用了RedisTemplate导致的,RedisTemplate对key进行序列化之后对结果

    RedisTemplate中,key默认的序列化方案是JdkSerializationRedisSerializer

    而在StringRedisTemplate中,key默认的序列化方案是StringRedisSerializer,因此,如果使用StringRedisTemplate,默认情况下key前面不会有前缀

    不过开发者也可以自行修改RedisRemplate中的序列化方案,也可以直接使用StringRedisTemplate

     另外需要注意,spring boot的自动化配置,只能配置单机的redis,如果是redis集群,则所有的东西都需要手动配置

  • 相关阅读:
    操作缓冲池
    占位图像
    GCD 常用代码
    资源共享(抢夺)
    drf版本控制 django缓存
    drf分页器
    解析器,路由控制,响应器
    drf 频率组件 META字典详情
    vue创建路由,axios前后台交互,element-ui配置使用,django contentType组件
    redis列表,字典,管道,vue安装,创建项目
  • 原文地址:https://www.cnblogs.com/yanguobin/p/11447728.html
Copyright © 2011-2022 走看看