玩转 Spring Boot 集成篇(Redis)

2022-02-25 09:41:40 浏览数 (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;

@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揭秘:快速构建微服务体系》

0 人点赞