项目中多个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
个人简单写的例子,欢迎拍砖留言讨论...