Lettuce - 高级Java Redis客户端
Lettuce是一个可扩展的线程安全Redis客户端,支持同步、异步和响应式使用。多个线程可以共享一个连接,前提是避免使用阻塞和事务操作,如BLPOP
和MULTI
/EXEC
。
Lettuce基于netty构建。
支持高级Redis功能,如Sentinel、集群、管道、自动重连和Redis数据模型。
此版本的Lettuce已经过最新Redis源代码构建版本的测试。
- 同步、异步和响应式使用
- Redis Sentinel
- Redis 集群
- SSL和Unix域套接字连接
- 流式API
- CDI和Spring集成
- 编解码器(用于UTF8/位/JSON等数据表示)
- 多个命令接口
- 支持原生传输
- 兼容Java 8++(隐式自动模块,无描述符)
如何使用Redis?
交流
- GitHub 讨论(问答、想法、一般讨论)
- Stack Overflow(问题):https://stackoverflow.com/questions/tagged/lettuce
- Discord:
- Twitter:
- GitHub 问题(错误报告、功能请求)
文档
二进制文件/下载
可以在 http://search.maven.org 找到 Maven、Ivy、Gradle 等的二进制文件和依赖信息。
lettuce 的发布版本可在 Maven 中央仓库中找到。也可以查看发布版本。
Maven 示例:
<dependency>
<groupId>io.lettuce</groupId>
<artifactId>lettuce-core</artifactId>
<version>x.y.z</version>
</dependency>
如果你更喜欢即将发布的主要版本的最新快照,请使用我们的 Maven 快照仓库并声明适当的依赖版本。
<dependency>
<groupId>io.lettuce</groupId>
<artifactId>lettuce-core</artifactId>
<version>x.y.z.BUILD-SNAPSHOT</version>
</dependency>
<repositories>
<repository>
<id>sonatype-snapshots</id>
<name>Sonatype 快照仓库</name>
<url>https://oss.sonatype.org/content/repositories/snapshots/</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
基本用法
RedisClient client = RedisClient.create("redis://localhost");
StatefulRedisConnection<String, String> connection = client.connect();
RedisStringCommands sync = connection.sync();
String value = sync.get("key");
每个 Redis 命令都由一个或多个方法实现,方法名称与小写的 Redis 命令名称相同。带有多个修饰符的复杂命令,如果修改了结果类型,则会将驼峰式的修饰符作为命令名称的一部分,例如 zrangebyscore 和 zrangebyscoreWithScores。
更多详情请参见基本用法。
异步 API
StatefulRedisConnection<String, String> connection = client.connect();
RedisStringAsyncCommands<String, String> async = connection.async();
RedisFuture<String> set = async.set("key", "value");
RedisFuture<String> get = async.get("key");
LettuceFutures.awaitAll(set, get) == true
set.get() == "OK"
get.get() == "value"
更多详情请参见异步 API。
响应式 API
StatefulRedisConnection<String, String> connection = client.connect();
RedisStringReactiveCommands<String, String> reactive = connection.reactive();
Mono<String> set = reactive.set("key", "value");
Mono<String> get = reactive.get("key");
set.subscribe();
get.block() == "value"
更多详情请参见响应式 API。
发布/订阅
RedisPubSubCommands<String, String> connection = client.connectPubSub().sync();
connection.getStatefulConnection().addListener(new RedisPubSubListener<String, String>() { ... })
connection.subscribe("channel");
构建
Lettuce 使用 Apache Maven 构建。测试需要多个运行中的 Redis 实例来应对不同的测试用例,这些实例通过 Makefile
配置。测试默认在 Redis unstable
版本上运行。
构建步骤:
$ git clone https://github.com/lettuce-io/lettuce-core.git
$ cd lettuce/
$ make prepare ssl-keys
$ make test
- 初始环境设置(克隆并构建
redis
):make prepare
- 设置SSL密钥:
make ssl-keys
- 运行构建:
make test
- 手动启动Redis:
make start
- 手动停止Redis:
make stop
错误和反馈
对于错误、问题和讨论,请使用GitHub Issues。
许可证
- 本仓库采用"MIT"许可证。详见LICENSE。
- 从https://github.com/wg/lettuce分叉而来
贡献
Github是用于社交编程的平台:如果你想编写代码,我鼓励通过从此仓库的分叉中提交拉取请求来贡献。 为错误和新功能创建Github工单,并对你感兴趣的工单进行评论,同时查看CONTRIBUTING.md