转载

Spring Boot 揭秘与实战(二) 数据存储篇 - Redis

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

原文  http://blog.720ui.com/2016/springboot_02_data_redis/
正文到此结束
Loading...