玩转 Spring Boot 集成篇(Redis)(四)

2022-09-23 20:46:45 浏览数 (1)

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;
@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 缓存篇的讲解,主要分享了如下部分:

  • Redis 应用场景有哪些?
  • Redis 的 Java 客户端有哪些?
  • Spring Boot 如何集成 Redis 缓存数据库?

玩转 Spring Boot 集成 Redis 篇,就写到这里,希望大家能够喜欢。

通过近几篇的分享,着实体会到 Spring Boot 的开箱即用,组件高度封装,代码量极少,开发成本降低,势必有很多铁子已按奈不住想探究 Spring Boot 的背后原理。此时,客官莫急,再好体验、用一用 Spring Boot,待时机成熟时,会一起解剖分析。

0 人点赞