本文讲解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 默认集成了一些配置信息,但是个人更加偏向于方案二的手动创建方式,为什么呢,因为更方便扩展。