Spring Boot中支持的Redis访问客户端有哪些?

在与Redis进行交互的时候,常见的客户端访问工具有如下几种Redis CLI(Command Line Interface)、Redis Desktop Manager、RedisInsight、Redisson、Lettuce、Jedis,而在我们编码的时候最常见的Redis客户端访问工具就是Jedis与Lettuce,下面我们就来看看在Redis中如何集成这两种客户端访问工具。

Jedis客户端方式

Jedis是一个流行的Java Redis客户端,它提供了简单易用的API,并且与Redisson和Lettuce相比,它更轻量级。虽然它在性能上可能不如Lettuce,但它仍然是一个强大而灵活的工具。在很多场景下都有使用。

下面就来看看如何在Spring Boot项目中整合Jedis客户端工具。

第一步、引入POM依赖

xml 复制代码
<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>3.7.0</version>
</dependency>

第二步、添加配置信息

在SpringBoot项目的配置文件中添加Redis的链接信息。

yaml 复制代码
spring:
  redis:
    host: localhost
    port: 6379
    password:   # 如果 Redis 设置了密码,则填写密码

第三步、如何使用

配置完上面的两步之后,接下来,就是在需要用到Redis的地方引入JedisPool对象就可以了,如下所示。

typescript 复制代码
@Service
public class RedisService {
    @Autowired
    private JedisPool jedisPool;
    public void setValue(String key, String value) {
        try (Jedis jedis = jedisPool.getResource()) {
            jedis.set(key, value);
        }
    }
    public String getValue(String key) {
        try (Jedis jedis = jedisPool.getResource()) {
            return jedis.get(key);
        }
    }
}

Lettuce客户端连接

Lettuce是一个高性能的Java Redis客户端,与Redisson类似,它也提供了丰富的功能和异步API。它被广泛用于构建高性能的分布式应用程序。

Lettuce 是一个基于 Netty 的 Redis 客户端,性能较好,支持异步操作。

下面就来看看如何整合Lettuce客户端

第一步、引入POM依赖

xml 复制代码
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

第二步、添加配置

在 Spring Boot 配置文件中配置 Redis 连接信息(与 Jedis 配置方式相同)。当然Lettuce还提供了一些其他的配置,比如说连接池大小、空闲线程、可用线程等配置。有兴趣的读者可以自己研究这些配置内容。

yaml 复制代码
spring:
  redis:
    host: localhost
    port: 6379
    password:   # 如果 Redis 设置了密码,则填写密码

第三步、使用

在需要使用 Redis 的地方,直接注入StringRedisTemplate或者RedisTemplate对象即可。当然在SpringBoot中还提供了对于Redis对象序列化方式的配置,可以通过Config配置类的方式添加RedisTemplate中。如果不做配置,那么默认使用SpringBoot中自带的支持的序列化方式。

typescript 复制代码
@Service
public class RedisService {
    @Autowired
    private StringRedisTemplate stringRedisTemplate;

    public void setValue(String key, String value) {
        stringRedisTemplate.opsForValue().set(key, value);
    }
    public String getValue(String key) {
        return stringRedisTemplate.opsForValue().get(key);
    }
}

以上是使用 Jedis 和 Lettuce 的常见整合方式。在实际项目中,选择合适的 Redis 客户端需要根据项目的具体需求、性能要求和开发习惯来决定。

Jedis与Lettuce的区别与联系

底层实现

  • Jedis 使用了阻塞式 IO,它是直接连接 Redis 的客户端,每个 Jedis 实例都是一个直接连接,因此在多线程环境中,需要使用连接池来管理 Jedis 实例。
  • Lettuce 基于 Netty 框架实现了非阻塞式 IO,它是一个异步、线程安全的 Redis 客户端,一个 Lettuce 实例可以处理多个连接。

连接方式

  • Jedis 是基于连接池的方式管理连接的,每次操作 Redis 都会从连接池中获取连接,操作完成后将连接归还到连接池。
  • Lettuce 是基于异步和回调的方式,使用了单个连接实例来处理所有的 Redis 操作,不需要像 Jedis 那样使用连接池。

线程安全

  • Jedis 的实例不是线程安全的,如果需要在多线程环境中使用 Jedis,必须通过连接池来管理连接。
  • Lettuce 是线程安全的,一个 Lettuce 实例可以被多个线程共享,无需额外的同步操作。

总结

综上所述,Jedis 和 Lettuce 在底层实现、连接方式、线程安全性和性能等方面有所不同,但都可以在 Spring Boot 中使用,并且提供了类似的功能和整合方式。选择使用哪种 Redis 客户端取决于项目需求、性能要求和开发习惯等因素。

相关推荐
xcl092529 分钟前
幼儿托育系统开发实战:从需求分析到上线全流程指南
java·大数据·需求分析
吴声子夜歌37 分钟前
ApacheCommons——commons-cli(命令行参数解析)
java·开发语言·apache
小小猪的春天1 小时前
Java 手写第一个 MCP Server:Spring AI MCP 半小时跑通
java·人工智能·spring boot·ai编程
find1star1 小时前
LeetCode 141:环形链表
java·算法·leetcode·链表
爱学堂IT分享1 小时前
鹤翔老师pmp项目管理培训认证考试课 (直播录播题库送学时证明)【共58课时】-51CTO学堂
后端
今天AI了吗2 小时前
DeepSeek Harness 深度解析:从评测架构到实战落地
java·网络·数据库·人工智能·架构·java-ee
王的宝库2 小时前
Go 项目结构:从单文件到标准工程布局
开发语言·后端·golang
许彰午2 小时前
27-AuthService登录链路
java·低代码·架构
泡海椒2 小时前
JQuick-Curl 性能分析:并发场景下的性能表现与调优,第三方接口调用不只要快写也要稳跑
java·开发语言·okhttp
码事漫谈3 小时前
类型即世界:一个 C++ 程序员的本体论入门
后端