Spring Boot中集成Redis

Redis Apr 7, 2018

Redis简介

翻译自官网:

Redis是一个开源,使用内存存储数据的结构化存储系统,通常被用作数据库,缓存和消息中间件。支持多种数据结构例如:字符串(strings),散列表(hashes),列表(list),集合(sets),支持范围查询的有序集合(sorted sets with range queries),位图(bitmaps),hyperloglogs和支持半径查询的地理空间索引。 Redis内置了数据复制(replication),Lua脚本(Lua scripting),LRU驱动事件(LRU eviction),事务(transactions)以及不同级别的磁盘持久化(persistence)功能, 并且通过Redis哨兵(Sentinel)和自动分区(Cluster)功能提供了高可用性。

Spring Data Redis简介

Spring Data Redis是Spring Data大家族中的一部分,它为Spring应用程序提供简单配置和使用Redis的能力。就像其它Spring Data家族的成员一样,它提供对框架的高层次和低层次的抽象操作,来和数据仓库进行交互,让开发者不用关注框架的细节,更轻松的去使用框架。

集成

环境:

  1. Spring Boot v2.0.0.RELEASE
  2. Spring data Redis v2.0.0.RELEASE
  3. JDK v1.8
  4. Redis server v4.0.2

1. 安装并启动Redis

如果使用Mac,你可以通过homebrew安装:

brew install redis

然后启动服务:

redis-server

2. 引入项目需要的依赖

通过Maven引入依赖:

 <dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-redis</artifactId>
    </dependency>
    
    <!--测试用如果不使用Spring MVC 不需要引用-->
    <!--<dependency>-->
        <!--<groupId>org.springframework.boot</groupId>-->
        <!--<artifactId>spring-boot-starter-web</artifactId>-->
    <!--</dependency>-->

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-pool2 -->
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-pool2</artifactId>
        <version>2.5.0</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
    <dependency>
        <groupId>redis.clients</groupId>
        <artifactId>jedis</artifactId>
        <version>2.9.0</version>
    </dependency>

</dependencies>

3. 配置Spring Data Redis

@Configuration
public class RedisConfig {
//打印log
private Logger logger = Logger.getLogger(RedisConfig.class.getName());

/**
 * 配置redisTemplate,对redis的操作都是通过redisTemplate完成。
 * 通过方法参数注入Redis连接工厂。
 * @param redisConnectionFactory
 * @return
 */
@Bean
public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory){
    RedisTemplate<String, String> redisTemplate = new RedisTemplate<>();
    redisTemplate.setConnectionFactory(redisConnectionFactory);
    return redisTemplate;
}

/**
 * 配置jedis,一个java的redis客户端。使用单机的默认配置。
 * @return
 */
@Bean
public RedisConnectionFactory jedisConnectionFactory(){
    JedisConnectionFactory jedisConnectionFactory;
    RedisStandaloneConfiguration redisStandaloneConfiguration = new RedisStandaloneConfiguration(); //单机模式
    jedisConnectionFactory = new JedisConnectionFactory(redisStandaloneConfiguration);
    return jedisConnectionFactory;
}
}

Ps:从Spring Data 2.0 开始废弃了直接设置的方式,需要使用单机,哨兵或者集群三种配置模式。见下图:

image_1c9gte6c01h4b15m7qck1voi1q9k9.png-76.2kB

4. 测试Redis

@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = RedisApplication.class)
public class RedisConfigTest {

@Qualifier("redisTemplate") //Spring Boot自动配置会自动生成一个StringRedisTemplate。我们指定自己编写的RedisTemplate。
@Autowired
RedisTemplate<String, String> redisTemplate;

@Test
public void testRedis(){
    redisTemplate.opsForValue().set("zzx_test", "hello redis");
    Assert.assertEquals("hello redis", redisTemplate.opsForValue().get("zzx_test"));
}
}

5. 完成

最后测试成功,我们可以愉快的使用Redis了^_^

image_1cafg3or6lvo18tld371mqb48h9.png-25.4kB

zzx

There is my place for writing,coding and reading