Redis 应用场景?在实际项目研发中,经常把 Redis 用做热数据缓存,例如省份、地市、卡 bin 信息等;在 Web 项目里经常用作 Session 共享存储;还会用作短信验证码、Token 等有效期验证等场景。
Redis 之所以在这么多项目场景中使用,得益于其是一个高性能的 key-value 数据库,支持高并发访问的可用于缓存的 NoSQL 数据库。
Redis 的 Java 客户端有哪些?Redis 官方推荐的 Java 客户端有 Jedis、lettuce 和 Redisson。
Jedis:Spring Boot 1.X 版本默认客户端,Jedis 提供了比较全面的 Redis 命令的支持。 Lettuce:Spring Boot 2.X 版本默认客户端,Lettuce 底层基于 Netty,用于线程安全同步,异步和响应使用,支持集群、Sentinel、管道和编码器等高级特性。 Redisson:提供了使用 Redis 的最简单便捷的方法,提供了某些分布式的操作。
Spring Boot 很好地支持了 Redis,可以在项目中使用 SpringData 进行 Redis 数据操作。
本文将重点分享 Spring Boot 与 Redis 如何集成?
1. Spring Boot 集成 Redis
Spring Boot 提供了 Redis 集成启动器(Starter),依赖于 spring-data-redis 和 lettuce 库。
spring-data-redis:对 Reids 底层开发包高度封装,让开发者对 Redis 的 CRUD 操作起来更加方便。
Spring Boot 集成 Redis,只需简单引入 spring-boot-starter-data-redis 依赖包,就可轻松使用(开箱即用)。
1.1. 引入依赖
在 pom.xml 中引入 Redis 所需的 Maven 依赖,依赖配置如下。
代码语言:javascript复制<!-- 引入 Redis 依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
1.2. 添加配置
在 application.properties文件中加入 redis 连接配置,可依据实际项目需要进行配置。
代码语言:javascript复制## Redis 缓存配置信息
# 主机名称
spring.redis.host=127.0.0.1
# 端口号
spring.redis.port=6379
# 认证密码
spring.redis.password=
# 连接超时时间
spring.redis.timeout=500
# 默认数据库
spring.redis.database=0
# 最大连接数
spring.redis.jedis.pool.max-active=100
# 最大等待连接超时时间
spring.redis.jedis.pool.max-wait=-1
# 最大维持连接数
spring.redis.jedis.pool.max-idle=8
# 最小维持连接数
spring.redis.jedis.pool.min-idle=0
1.3. 编写代码
RedisTemplate 是 Spring 针对 Redis 操作封装的一个比较实用的模板,代码只需注入 RedisTemplate,无须其它额外的配置,开箱即用。
代码语言:javascript复制package com.example.demo;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.RedisTemplate;
import javax.sql.DataSource;
import java.sql.SQLException;
@SpringBootTest
class RedisTemplateTests {
@Autowired
private RedisTemplate<String, String> redisTemplate;
@Test
public void redisTest() {
String key = "slogan";
// 操作 String 类型
redisTemplate.opsForValue().set(key, "grow up");
System.out.println("slogan 在 redis 中创建完毕");
String value = redisTemplate.opsForValue().get(key);
System.out.println("从 redis 中获得 2022 slogan 是:" value);
// 操作 List 类型
redisTemplate.opsForList().leftPush("list", "vvv");
System.out.println("List 类型的数据操作:" redisTemplate.opsForList().leftPop("list"));
// 操作 Set 类型
redisTemplate.opsForSet().add("set", "v_v_v");
System.out.println("Set 类型的数据操作:" redisTemplate.opsForSet().pop("set"));
// 操作 Hash 类型
redisTemplate.opsForHash().put("hash", "test", "hello");
System.out.println("Hash 类型的数据操作:" redisTemplate.opsForHash().get("hash", "test"));
// 操作 ZSet 类型
redisTemplate.opsForZSet().add("zset", "z_v", 1);
redisTemplate.opsForZSet().add("zset", "z_v_v", 2);
System.out.println("ZSet 类型的数据操作:" redisTemplate.opsForZSet().range("zset", 0, 2));
}
}
1.4. 测试集成
执行单元测试类,控制台输出如下:
至此,Spring Boot 集成 Redis 缓存已大功告成,只需注入 RedisTemplate 就可以了,可谓是简单、真简单,真是快哉!
2. 例行回顾
本文是 Spring Boot 项目集成 Redis 缓存篇的讲解,主要分享了如下部分:
- Redis 应用场景有哪些?
- Redis 的 Java 客户端有哪些?
- Spring Boot 如何集成 Redis 缓存数据库?
玩转 Spring Boot 集成 Redis 篇,就写到这里,希望大家能够喜欢。
通过近几篇的分享,着实体会到 Spring Boot 的开箱即用,组件高度封装,代码量极少,开发成本降低,势必有很多铁子已按奈不住想探究 Spring Boot 的背后原理。此时,客官莫急,再好体验、用一用 Spring Boot,待时机成熟时,会一起解剖分析。
参考资料:
https://spring.io/
https://start.spring.io/
https://spring.io/projects/spring-boot
https://github.com/spring-projects/spring-boot
https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/
https://stackoverflow.com/questions/tagged/spring-boot
《Spring Boot从入门到实战》《深入浅出Spring Boot 2.x》
《一步一步学Spring Boot:微服务项目实战(第二版)》
《Spring Boot揭秘:快速构建微服务体系》