Spring Boot如何整合Redis

Spring Boot是目前非常流行的Java Web开发框架, Redis是非关系型数据库的一种, 以键值对的形式存储 。 Spring对Redis的支持是通过Spring Data Redis来实现的, 给我们提供了RedisTemplate和StringRedisTemplate两种模板来操作数据 。 Spring Boot框架也提供了对Redis的支持, 下面我们来讲一下Spring Boot框架整合Redis的步骤 。 操作方式 01 Spring Boot整合Redis我们需要添加依靠的jar包, spring-boot-starter-data-redis中包含spring和redis相关的jar包, jedis作为redis的客户端也需要添加到工程中, Spring Boot的版本信息在父pom中已指定, 子模块中的spring相关的jar包无需别的指定 。
org.springframework.boot
spring-boot-starter-data-redis

redis.clients
jedis
3.0.0-m1


02 【Spring Boot如何整合Redis】Spring Boot会按照application.properties中的设置装备摆设对Redis的属性进行主动设置装备摆设, 并注入到RedisProperties类中 。 在application.properties设置装备摆设文件中这些属性都是以spring.redis为前缀的, 值得注重的是在Spring Boot 1.5.x版本中默认的Redis客户端是jedis, 是以在设置装备摆设文件中无需指定, 如下图所示 。

03 Spring Boot 1.5.x版本的整合设置装备摆设网上可以搜刮年夜量的文章, 然而Spring Boot 2.x版本的整合伙料却很是少, 甚至供给的设置装备摆设不克不及正常利用, 是以本文本家儿要讲解Spring Boot 2.x整合Redis以及Redis的利用环境 。 spring-boot 2.x版本有jedis和lettuce两种客户端, 是以我们必需要去指定利用哪一种客户端, 两个客户端的设置装备摆设如下图所示, 本文利用的是Jedis客户端毗连池, 具体的设置装备摆设如下 。
# Redis数据库索引(默认为0)
spring.redis.database=0
# Redis办事器地址
spring.redis.host=127.0.0.1
# Redis办事器毗连端口
spring.redis.port=6379
# Redis办事器毗连暗码(默认为空)
spring.redis.password=xylx1.t!@#
# 设置装备摆设jedis毗连池
# 毗连池最年夜毗连数(利用负值暗示没有限制)
spring.redis.jedis.pool.max-active=8
# 毗连池最年夜梗阻期待时候(利用负值暗示没有限制)
spring.redis.jedis.pool.max-wait=-1ms
# 毗连池中的最年夜余暇毗连
spring.redis.jedis.pool.max-idle=8
# 毗连池中的最小余暇毗连
spring.redis.jedis.pool.min-idle=0
# 毗连超不时间(毫秒)
spring.redis.timeout=5000ms
由设置装备摆设我们可以看到spring-boot 2.x版本时候设置需要加单元ms, 因为参数的类型为Duration 。 别的spring.redis.timeout尽量不要设置装备摆设0, 不然可能会呈现io.lettuce.core.RedisCommandTimeoutException: Command timed out超时错误 。

04 设置装备摆设文件编纂完当作后, 我们起头编写代码实现Redis数据的存储和读取 。 我们建立一个RedisUtil东西类, 该类利用@Component注解暗示交由Spring办理, StringRedisTemplate是Spring供给的, 可以利用@Autowired注解直接注入, 接下来便可以书写存和取的代码了 。
@Component
public class RedisUtil {
@Autowired
private StringRedisTemplate redisTemplate;
/**
* 存字符串
* @param key 缓存键
* @param value 缓存值
* @param expireTime 过时时候(s)
*/
public void setString(String key, String value, int expireTime){
ValueOperations ops = redisTemplate.opsForValue();
if (expireTime != 0) {
ops.set(key, value, expireTime, TimeUnit.SECONDS);
} else {
ops.set(key,value);
}
}
/**
* 取字符串
* @param key 缓存键
* @return 缓存值
*/
public String getString(String key){

推荐阅读