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 依赖,依赖配置如下。
<!-- 引入 Redis 依赖--><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId></dependency>
1.2. 添加配置
在 application.properties文件中加入 redis 连接配置,可依据实际项目需要进行配置。
## 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,无须其它额外的配置,开箱即用。
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;
@SpringBootTestclass 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 缓存篇的讲解,主要分享了如下部分:
玩转 Spring Boot 集成 Redis 篇,就写到这里,希望大家能够喜欢。
通过近几篇的分享,着实体会到 Spring Boot 的开箱即用,组件高度封装,代码量极少,开发成本降低,势必有很多铁子已按奈不住想探究 Spring Boot 的背后原理。此时,客官莫急,再好体验、用一用 Spring Boot,待时机成熟时,会一起解剖分析。