本文讲解Spring Boot基础下,如何整合Redis,编写数据访问。
修改 POM 文件,添加 spring-boot-starter-redis 依赖。
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-redis</artifactId> </dependency>
在 src/main/resources/application.properties 中配置数据源信息。
spring.redis.host=localhost spring.redis.port=6379 spring.redis.password= spring.redis.database=1 spring.redis.pool.max-active=8 spring.redis.pool.max-wait=-1 spring.redis.pool.max-idle=500 spring.redis.pool.min-idle=0 spring.redis.timeout=0
在 src/main/resources/config/redis.properties 中配置数据源信息。
# redis redis.host=localhost redis.port=6379 redis.password= redis.database=1
通过 Java Config 创建redisTemplate。
@Configuration
@PropertySource("classpath:config/redis.properties")
public class RedisConfig {
@Autowired
private Environment env;
@Bean
public RedisConnectionFactory redisConnectionFactory() {
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
JedisConnectionFactory jedisConnectionFactory = new JedisConnectionFactory();
jedisConnectionFactory.setHostName(env.getProperty("redis.host").trim());
jedisConnectionFactory.setPort(Integer.parseInt(env.getProperty("redis.port").trim()));
jedisConnectionFactory.setPassword(env.getProperty("redis.password").trim());
jedisConnectionFactory.setDatabase(Integer.parseInt(env.getProperty("redis.database").trim()));
jedisConnectionFactory.setUsePool(true);
jedisConnectionFactory.setPoolConfig(jedisPoolConfig);
return jedisConnectionFactory;
}
@Bean
public RedisTemplate<String, String> redisTemplate() {
RedisTemplate<String, String> redisTemplate = new StringRedisTemplate();
redisTemplate.setConnectionFactory(redisConnectionFactory());
redisTemplate.afterPropertiesSet();
return redisTemplate;
}
}
@Repository
public class RedisBaseDao {
@Resource(name="redisTemplate")
protected ValueOperations<String, String> valueOperations;
public void addValue(String key, String value){
valueOperations.set(key, value);
}
public String getValue(String key){
return valueOperations.get(key);
}
}
@Repository
public class ValueRedisDao {
@Autowired
public RedisBaseDao redisBaseDao;
private String getKey(){
return "param";
}
public void save(String param){
this.redisBaseDao.addValue(this.getKey(), param);
}
public String getParam(){
return this.redisBaseDao.getValue(this.getKey());
}
}
编写单元测试用例,测试Redis是否正常工作。
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(WebMain.class)
public class RedisTest {
@Autowired
private ValueRedisDao valueRedisDao;
@Test
public void test() throws Exception {
this.valueRedisDao.save("LiangGzone");
System.out.println(this.valueRedisDao.getParam());
}
}
上面这个简单的案例,让我们看到了 Spring Boot 整合 Redis 的整个流程。实际上,与 Spring 4 中 通过 Spring Data Redis 整合 Redis 并无二意, Spring Boot 默认集成了一些配置信息,但是个人更加偏向于方案二的手动创建方式,为什么呢,因为更方便扩展。