SpringBoot整合Redis

SpringBoot整合Redis

SpingBoot 对于 Redis 提供了开箱即用的 starter。而且抽象出了一层更加高级的API,底层Redis的客户端对用户来说是透明的。可以是 Jedis,也可以是 Lettuce

导入依赖

使用的是Lettuce作为Redis的客户端

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
	<groupId>io.lettuce</groupId>
	<artifactId>lettuce-core</artifactId>
</dependency>
<dependency>
	<groupId>org.apache.commons</groupId>
	<artifactId>commons-pool2</artifactId>
</dependency>

配置

详细的配置类 org.springframework.boot.autoconfigure.data.redis.RedisProperties

spring:
  redis:
    database: 0
    host: localhost
    port: 6379
    password:
    # 连接超时时间(毫秒)
    timeout: 2000
    lettuce:
      pool:
        # 连接池最大连接数(使用负值表示没有限制)
        max-active: 8
        # 连接池最大阻塞等待时间(使用负值表示没有限制)
        max-wait: -1
        # 连接池中的最大空闲连接
        max-idle: 8
        # 连接池中的最小空闲连接
        min-idle: 0

Spring提供的客户端

RedisTemplate<K, V>

顶层的一个接口,泛型。K 表示key的数据类型, V 表示 value的数据类型。

StringRedisTemplate

Sping提供的RedisTemplate 的实现,K V 都是字符串,它针对redis客户端中大量api进行了归类封装,将同一类型操作封装为operation接口。一般直接通过IOC注入该类实例使用

@Autowired
private StringRedisTemplate stringRedisTemplate;

ListOperations stringRedisTemplate.opsForList();// 返回操作list的operation
SetOperations stringRedisTemplate.opsForSet();// 返回操作set的operation
ValueOperations stringRedisTemplate.opsForValue();// 返回操作普通k/v的operation
ZSetOperations stringRedisTemplate.opsForZSet();// 返回操作zset的operation
HashOperations stringRedisTemplate.opsForHash();// 返回操作hash的operation

简单的CRUD

@Autowired
private StringRedisTemplate stringRedisTemplate;

public void foo() {
	this.stringRedisTemplate.opsForValue().set("name", "SpringBoot");
	this.stringRedisTemplate.opsForValue().get("name");
	this.stringRedisTemplate.delete("name");
}