本文讲解Spring Boot基础下,如何整合Redis,编写数据访问。
环境依赖
修改 POM 文件,添加 spring-boot-starter-redis 依赖。
- <dependency>
 
- <groupId>org.springframework.boot</groupId>
 
- <artifactId>spring-boot-starter-redis</artifactId>
 
- </dependency>
 
数据源
方案一 使用 Spring Boot 默认配置
在 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;
 
-  }
 
- }
 
使用 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 默认集成了一些配置信息,但是个人更加偏向于方案二的手动创建方式,为什么呢,因为更方便扩展。
源代码
相关示例完整代码: springboot-action
(完)
 
Spring Boot 揭秘与实战(二) 数据存储篇 - Redis
原文:http://www.cnblogs.com/cnblog-long/p/7238731.html