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 客户端取决于项目需求、性能要求和开发习惯等因素。

相关推荐
神奇的程序员3 小时前
从已损坏的备份中拯救数据
运维·后端·前端工程化
Goldn.4 小时前
Java核心技术栈全景解析:从Web开发到AI融合
java· spring boot· 微服务· ai· jvm· maven· hibernate
oden4 小时前
AI服务商切换太麻烦?一个AI Gateway搞定监控、缓存和故障转移(成本降40%)
后端·openai·api
李慕婉学姐5 小时前
【开题答辩过程】以《基于Android的出租车运行监测系统设计与实现》为例,不知道这个选题怎么做的,不知道这个选题怎么开题答辩的可以进来看看
java·后端·vue
m0_740043735 小时前
SpringBoot05-配置文件-热加载/日志框架slf4j/接口文档工具Swagger/Knife4j
java·spring boot·后端·log4j
编织幻境的妖5 小时前
SQL查询连续登录用户方法详解
java·数据库·sql
未若君雅裁5 小时前
JVM面试篇总结
java·jvm·面试
kk哥88996 小时前
C++ 对象 核心介绍
java·jvm·c++
招风的黑耳6 小时前
我用SpringBoot撸了一个智慧水务监控平台
java·spring boot·后端
xunyan62346 小时前
面向对象(下)-接口的理解
java·开发语言