7.2 集成 Redis

Spring Boot 为集成 Redis 提供了方便的启动器(Starter),在 Spring Boot 的自动配置中我们可以看到是通过 RedisCacheConfiguration 来进行配置的。

在项目中,只需要添加spring-boot-starter-data-redis就可以集成使用 Redis 了。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

首先新建一个项目,选中Spring Data Redis(Access+Driver)依赖。

然后在 Spring Test 类中注入StringRedisTemplate模板类,添加一个测试方法,调用模板类对象操作 Redis。

package com.example.redis;
import static org.junit.jupiter.api.Assertions.assertEquals;
import javax.annotation.Resource;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.StringRedisTemplate;
@SpringBootTest
class SpringBootRedisApplicationTests {
	@Resource
	private StringRedisTemplate strTemplate;
	@Test
	public void testRedis() {
		strTemplate.opsForValue().set("name", "Kevin");
		String name = strTemplate.opsForValue().get("name");
		assertEquals("Kevin", name);
	}
}

运行测试用例:

检查其是否通过测试,JUnit 测试,绿色条为测试通过。

Redis 命令行中检查 name 的值,是否为“Kevin”。

以上就是 Spring Boot 中集成 Redis 并使用模板类操作 Redis 的示例。

通过查阅 Spring Boot 源码,在RedisTemplate这个类文件中可以非常清晰的看到其对 Reidis 不同的数据类型提供了不同的操作方法。

由于 Redis 中我们最经常操作的是数据类型是字符串类型的,所以 Spring Boot 专门扩展了一个字符串相关的模板类StringRedisTemplate extends RedisTemplate

下一节:在正常情况下,用户访问一个无状态的 http 请求,服务器为了记住这个用户,会在服务器端启动(这个session第一次访问服务器)/加载一个 session,并通过 session id 来保持用户端和服务器端的“状态”,比如该用户是否已经登录,是否已经分配了对应的角色,是否具有操作某些资源(菜单)的权限等。