Lettuce操作redis

介绍

Lettuce 是一款基于 Netty 的高性能 Redis 客户端,支持同步、异步、响应式操作模式,对 Redis 的各种特性(如集群、哨兵、流、ACL 等)有完善支持,尤其适合高并发、分布式场景。

Lettuce 凭借其高性能和丰富的特性,成为 Java 生态中操作 Redis 的首选客户端之一,尤其适合高并发、分布式系统场景。

应用

spring-data-redis的驱动包替换为Lettuce

核心特性

  1. 多编程模型支持

    • 同步操作:通过 RedisCommands 执行阻塞式命令。
    • 异步操作:通过 AsyncRedisCommands 执行非阻塞命令,返回 CompletableFuture。
    • 响应式操作:通过 ReactiveRedisCommands 支持响应式编程(适配 RxJava、Project Reactor)。
  2. 高级特性支持

    • 兼容 Redis 6+ 的 ACL 权限控制、SSL 加密。
    • 支持 Redis 集群(自动分片、故障转移)、哨兵模式、主从复制。
    • 支持 Stream 数据结构(消息队列功能)、Lua 脚本、管道(Pipeline)等。
  3. 线程安全与高效性

    • 基于 Netty 的事件驱动模型,单连接可支持多线程并发操作(无需为每个线程创建连接)。
    • 内置连接池管理(可结合 commons-pool2),减少连接创建开销。

核心组件

  • RedisClient:Redis 客户端入口,负责创建连接。
  • StatefulRedisConnection:保持与 Redis 服务器的长连接,线程安全,可共享。
  • RedisCommands:同步命令接口(如 set、get)。
  • AsyncRedisCommands:异步命令接口(返回 CompletableFuture)。
  • ReactiveRedisCommands:响应式命令接口(返回 Mono/Flux)。

注意事项

  • 线程安全:StatefulRedisConnection 是线程安全的,可在多线程间共享,无需频繁创建。
  • 资源释放:RedisClient 和 StatefulRedisConnection 需在使用后关闭(推荐 try-with-resources 语法)。
  • 版本兼容:Lettuce 6.x 支持 Redis 6+ 的所有特性,若使用旧版 Redis,需选择对应兼容的 Lettuce 版本。

依赖

<dependency>
    <groupId>io.lettuce</groupId>
    <artifactId>lettuce-core</artifactId>
    <version>6.2.4.RELEASE</version> <!-- 稳定版本,支持 Redis 6+ -->
</dependency>

<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>3.3.0</version>
</dependency>

原文出处:/show_1GW1fGFgecKG.html