项目中多个Redis缓存的使用

项目中多个Redis缓存的使用

redis作为缓存,在项目中经常使用,下面简单介绍一些相关使用知识,
一,默认的 redis 操作类使用,
Java的springboot中引入redis操作类为:
org.springframework.data.redis.core.RedisTemplate默认其注入spring的IOC容器的实例名称为:redisTemplate ,连接配置信息在application.yml(或.properties)的spring.redis.xxx/database/host/port/password/pool.yyy/min-idle/max-idle/max-wait/max-active;参考文件见后面的 application.yml

二,多个 redis 缓存的使用,
如果同一个项目中使用多个不同的redis缓存(在不同的服务器),则在建立连接产生实例时通过@Bean(name="指定redis实例名称",如a)注解指定不同的名称然后再注入到spring的IOC容器中,在使用时也通过@resource(name="指定redis实例名称",如a)找到各个不同需要的redis的Service类;

三,非默认的 redis 操作类使用,
默认的 redis 的取出指定key的值的类型为Object类型,需要String强制转换一下为字符串,同样存进默认的redis时需要首先序列化为json字符串
不过可以使用StringRedisTemplate操作类,该类继承 redisTemplate ,是其子类,该类取出指定key的值直接为String类型了,该类的配置连接信息跟默认的 redisTemplate 的一样;

application.yml 文件

#===================================================
# SpringBoot 2.x.x
#===================================================
# server evn setting, key和值之间至少有一个空格
#===================================================
server:
   address: 127.0.0.1
   port: 8080
   servlet:
      contextPath:/
   session-timeout: 30

#===================================================
# spring config setting 
#===================================================
spring:
   #配置试图相关信息
   thymeleaf: 
      prefix: classpath:/templates/
      suffix: .html

   #redis 连接的配置信息
   redis:
      hostName: 127.0.0.1 #redis服务器IP
      port: 6379      #redis服务器端口
      password: ''    #redis服务器IP
      database: 0     #数据库索引,默认0
      timeout: 0      #连接超时时间(毫秒)
      jedis:
         pool: 
            maxActive: 8   #连接池最大连接数,负值表示没有限制
            maxWait: 3000  #连接池最大阻塞等待时间,负值表示没有限制
            maxIdle: 8     #连接池中的最大空闲连接数 
            minIdle: 1     #连接池中的最小空闲连接数   
      
      #以下redis配置连接信息比较少用,可以不指定,不配置时使用默认值      
      maxTotal: 1000   
      #jedis v2.4以后用,控制一个pool可分配多少个jedis实例
        
      minEvictableIdleTimeMillis: 300000
      #连接的最小空闲时间 默认1800000毫秒(30分钟)
      
      numTestsPerEvictionRun: 1024
      #每次释放连接的最大数目,默认3
      
      timeBetweenEvictionRunsMillis: 30000
      #逐出扫描的时间间隔(毫秒) 如果为负数,则不运行逐出线程, 默认-1
      
      testOnBorrow: true
      #是否在从池中取出连接前进行检验,如果检验失败,则从池中去除连接并尝试取出另一个  
      
      testWhileIdle: true
      #在空闲时检查有效性, 默认false 

个人简单写的例子,欢迎拍砖留言讨论...