Spring Boot集成Redis
与关系型数据库一样,Spring Boot 也提供了对 NoSQL 数据库的集成扩展,如对 Redis 数据库的操作。通过默认配置即可使用RedisTemplate 模板类操作非关系型数据库。
Spring Boot 为 Redis 提供了基本的自动配置,依赖于 spring-boot-starter-data-redis 包。该包提供了自动配置的RedisConnectionFactory、StringRedisTemplate 和 Redis-Template 实例。如果不配置,则默认连接 localhost:6379 服务器。
StringRedisTemplate 继承自 RedisTemplate,默认采用 String 的序列化策略。如果使用 RedisTemplate,则可以实现自己的序列化方式。
连接 Redis 可以使用 Lettuce 或 Jedis 客户端。Spring Boot 默认使用 Lettuce 客户端。因为 Lettuce 的连接是基于 Netty 的,所以多线程是安全的。
RedisTemplate 提供了以下 5 种数据结构的操作方法:
(1)在 application.yml 配置文件中添加配置,代码如下:
(2)在 Controller 类中注入 StringRedisTemplate 实例,代码如下:
声明:《Java系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。
集成Redis
Redis 可以作为缓存、消息中间件或多类型的 key-value 数据库。作为非关系型数据库,Redis 支持多种类型的存储方式,包括 String(字符串)、List(列表)、Hash(哈希)、Set(集合)和Sorted Set(有序集合)等。Spring Boot 为 Redis 提供了基本的自动配置,依赖于 spring-boot-starter-data-redis 包。该包提供了自动配置的RedisConnectionFactory、StringRedisTemplate 和 Redis-Template 实例。如果不配置,则默认连接 localhost:6379 服务器。
StringRedisTemplate 继承自 RedisTemplate,默认采用 String 的序列化策略。如果使用 RedisTemplate,则可以实现自己的序列化方式。
连接 Redis 可以使用 Lettuce 或 Jedis 客户端。Spring Boot 默认使用 Lettuce 客户端。因为 Lettuce 的连接是基于 Netty 的,所以多线程是安全的。
RedisTemplate 提供了以下 5 种数据结构的操作方法:
- opsForValue:操作字符串类型;
- opsForHash:操作哈希类型;
- opsForList:操作列表类型;
- opsForSet:操作集合类型;
- opsForZSet:操作有序集合类型。
Redis操作示例
下面给出一个集成了 Redis 操作的简单示例。(1)在 application.yml 配置文件中添加配置,代码如下:
spring:
redis:
host: localhost
port: 6379
password: redistest
timeout: 1000
lettuce:
pool:
max-active: 10 //①
max-wait: 1000 //②
max-idle: 2 //③
min-idle: 0 //④
- 注释①:连接池的最大连接数。
- 注释②:连接池的最大阻塞等待时间。
- 注释③:连接池中的最大空闲连接数。
- 注释④:连接池中的最小空闲连接数。
(2)在 Controller 类中注入 StringRedisTemplate 实例,代码如下:
@RestController @RequestMapping("/hi") public class HiController { //自动注入StringRedisTemplate @Autowired private StringRedisTemplate stringRedisTemplate; @GetMapping("/redis/add") public String redisAdd(int id) { //Redis set操作 stringRedisTemplate.opsForValue().set("redis_test_"+id, "redistest!"); return "1"; } @GetMapping("/redis/query") public String redisQuery(int id) { //Redis get操作 String val = stringRedisTemplate.opsForValue().get("redis_test_"+id); return val; } @GetMapping("/redis/delete") public String redisDelete(int id) { //Redis delete操作 stringRedisTemplate.delete("redis_test_"+id); return "1"; } }
- 访问接口 http://localhost:8080/hi/redis/add?id=1,可以在 Redis 中添加一个 String 类型的数据;
- 访问接口 http://localhost:8080/hi/redis/query?id=1,可以查询一个 String 类型的数据;
- 访问接口 http://localhost:8080/hi/redis/delete?id=1,可以删除 Redis 数据。
声明:《Java系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。