关于SpringBoot 集成 Redis
Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API.
application.properties添加配置文件
<!-- redis的jar包 springboot集成的starter-redis -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-redis</artifactId>
</dependency>
application.properties添加配置文件
# REDIS (RedisProperties)
# Redis数据库索引(默认为0)
spring.redis.database=0
# Redis服务器地址 (我配的是本地地址)
spring.redis.host=127.0.0.1
# Redis服务器连接端口
spring.redis.port=6379
# Redis服务器连接密码(默认为空)
spring.redis.password=123456
# 连接池最大连接数(使用负值表示没有限制)
spring.redis.pool.max-active=8
# 连接池最大阻塞等待时间(使用负值表示没有限制)
spring.redis.pool.max-wait=-1
# 连接池中的最大空闲连接
spring.redis.pool.max-idle=8
# 连接池中的最小空闲连接
spring.redis.pool.min-idle=0
# 连接超时时间(毫秒)
spring.redis.timeout=0
相关的配置java类
import java.util.ArrayList;
import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
import redis.clients.jedis.JedisShardInfo;
import redis.clients.jedis.ShardedJedisPool;
@Configuration //自动扫描
public class RedisCacheConfiguration {
Logger logger = LoggerFactory.getLogger(RedisCacheConfiguration.class);
@Value("${spring.redis.host}")
private String host;
@Value("${spring.redis.port}")
private int port;
@Value("${spring.redis.timeout}")
private int timeout;
@Value("${spring.redis.pool.max-idle}")
private int maxIdle;
@Value("${spring.redis.pool.max-wait}")
private long maxWaitMillis;
@Value("${spring.redis.password}")
private String password;
public JedisPoolConfig getconfig() {
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
jedisPoolConfig.setMaxIdle(maxIdle);
jedisPoolConfig.setMaxWaitMillis(maxWaitMillis);
jedisPoolConfig.setMaxTotal(100);
return jedisPoolConfig;
};
@Bean
public JedisPool redisPoolFactory() {
JedisPool jedisPool = new JedisPool(getconfig(), host, port, timeout, password);
logger.info("【redis】JedisPool注入成功----------redis地址:" + host + ":" + port);
return jedisPool;
}
@Bean
public ShardedJedisPool shardedJedisPoolFactory() {
List<JedisShardInfo> shards = new ArrayList<JedisShardInfo>();
JedisShardInfo info = new JedisShardInfo(host, port);
info.setPassword(password);
shards.add(info);
ShardedJedisPool shardedJedisPool = new ShardedJedisPool(getconfig(), shards);
logger.info("【redis】ShardedJedisPool注入成功---------");
return shardedJedisPool;
}
}
注意事项
如果springboot的启动类在此类的外层,则不需要引入此类。否则再启动类里面加入@import(RedisCacheConfiguration.class),以便于有效加载redis相关配置。
使用实例:
@Autowired
private JedisPool jedisPool;
@Autowired
private ShardedJedisPool shardedJedisPool;
以上内容本人已亲测,如果有什么改进的地方,还望大家都多指出。欢迎参考。