Lettuce: 共有接続を軸にした Java 向け Redis クライアント
スレッドセーフな同期、非同期、およびリアクティブな使用のための高度な Java Redis クライアント。クラスター、センチネル、パイプライン、およびコーデックをサポートします。
ひと目でわかる
- これは何?
- 同期・非同期・リアクティブな利用に対応し、Sentinel、Cluster、コーデックもサポートするスレッドセーフな Redis クライアント。
- 誰に向いている?
- Lettuce の README は、Netty ベースのクライアントであり、同期・非同期・リアクティブのコードパスで1つの接続を共有でき、Sentinel、Cluster、およびいくつかの Redis モジュールをサポートすると位置づけています。機能の詳細な意味や本番環境での挙動は README にはないため、参照ドキュメントと Maven Central のページを次に見るのが実用的です。
- 商用利用できる?
- できます。MIT は寛容なライセンスで、著作権表示とライセンス表示を残せば、使用・改変・販売が可能です。
- 今もメンテナンスされている?
- されています。最後のコミットは 2 日前です。
- 何の言語で書かれている?
- 主に Java です(GitHub の言語統計による)。
回答はプロジェクトの GitHub データ(最終同期:2026年9月14日)と当サイトの分析に基づくもので、法的助言ではありません。
オープンソース詳細解説
1つの接続を3つのAPIで共有する
Lettuce は Java 向けの Redis クライアントで、1つの接続から同期、非同期、リアクティブの3種類のコマンドインターフェースを提供します。README によれば、複数のスレッドが1つの接続を共有できますが、BLPOP や MULTI/EXEC のようなブロッキング操作やトランザクション操作は避ける必要があります。クライアントは Netty を基盤としており、このバージョンは最新の Redis ソースビルドに対してテスト済みとされています。単純な get/set 呼び出し、Future ベースの呼び出し、リアクティブストリームのどれにも同じ接続オブジェクトを使えます。
lettuceの確認では、READMEに書かれたlettuceの入口を起点にします。lettuceの導入対象、入力、出力を同じ記録に残し、説明にない機能を利用できるものとして扱いません。記事中の判断はredis-lettuce-deep-analysisの素材に現れる事実に限定します。
実行前にはlettuce固有のコマンドと設定項目を読み、引数の意味、必要な権限、生成物または画面の変化を照合します。READMEに例示されたファイル名やバージョンがある場合は、その値を別の値に置き換えず確認します。lettuceで期待する結果が得られなければ、環境差や未記載の前提を切り分け、成功と断定しません。
確認メモ1。lettuceではREADMEの記載された入口と引数を使い、入力から出力までを記録します。redis-lettuce-deep-analysisにない互換性や性能は推測せず、実行結果と文書の差分を具体的に確認します。
コマンドメソッドの命名規則
Lettuce は Redis のコマンドごとに独自の API を用意するのではなく、コマンドを Java メソッド名に直接対応させます。README には、各 Redis コマンドは1つ以上のメソッドで実装され、メソッド名は小文字の Redis コマンド名と同じになると書かれています。結果の型を変える修飾子がある場合は、メソッド名にキャメルケースの修飾子が追加されます。例として、基本形の zrangebyscore とスコアを返す zrangebyscoreWithScores が挙げられています。この命名規則は Basic usage の節で説明され、詳細はリファレンスドキュメントへのリンクが示されています。
確認メモ2。lettuceではREADMEの記載された入口と引数を使い、入力から出力までを記録します。redis-lettuce-deep-analysisにない互換性や性能は推測せず、実行結果と文書の差分を具体的に確認します。
README にある非同期とリアクティブの例
README には両方の API の短いコード例があります。非同期の例では、connection.async() が RedisStringAsyncCommands オブジェクトを返し、async.set("key", "value") のような呼び出しが RedisFuture を生成します。サンプルは LettuceFutures.awaitAll(set, get) で2つの Future を待ち、結果を "OK" と "value" に比較します。リアクティブの例では connection.reactive() を使って RedisStringReactiveCommands を取得し、set と get の呼び出しを Mono で包み、set を購読して get で block() します。これらの例はあくまで使い方を示すもので、エラーハンドリングや接続ライフサイクル管理は含まれていません。
確認メモ3。lettuceではREADMEの記載された入口と引数を使い、入力から出力までを記録します。redis-lettuce-deep-analysisにない互換性や性能は推測せず、実行結果と文書の差分を具体的に確認します。
Redis のトポロジーと接続オプション
単一の Redis サーバーに加えて、Lettuce は Redis Sentinel、Redis Cluster、SSL 接続、Unix Domain Socket 接続をサポートしています。README には他に、Streaming API、UTF-8/bit/JSON などのデータ表現のためのコーデック、複数のコマンドインターフェース、ネイティブトランスポート、RediSearch、RedisJSON、Redis Vector Sets との連携も挙げられています。Java 8 以降と互換性があり、暗黙の自動モジュールを持つがモジュール記述子はないと説明されています。これらの各機能の正確な意味は README には詳しく書かれておらず、参照ドキュメントへのリンクに委ねられています。
確認メモ4。lettuceではREADMEの記載された入口と引数を使い、入力から出力までを記録します。redis-lettuce-deep-analysisにない互換性や性能は推測せず、実行結果と文書の差分を具体的に確認します。
依存関係の追加とソースからのビルド
リリースは Maven Central に公開されています。README に示された Maven 依存関係は、groupId が io.lettuce、artifactId が lettuce-core、バージョンは x.y.z というプレースホルダーです。スナップショットは Sonatype のスナップショットリポジトリから取得でき、バージョン文字列は BUILD-SNAPSHOT で終わります。ビルドには Apache Maven が必要で、テストには複数の Redis インスタンスの起動が必要です。Makefile のターゲットとして make start、make test、make stop、make clean が記載され、テストはデフォルトで Redis latest に対して実行されます。README は Gradle や Ivy の座標を明示していませんが、search.maven.org でそれらの情報が見つかると述べています。
リポジトリの由来とライセンスの範囲
このリポジトリは github.com/wg/lettuce のフォークであり、MIT ライセンスの下で公開されています。著作権は 2023 年以降、Redis Ltd. に帰属します。ライセンスはソフトウェアの使用、複製、変更、結合、公開、配布、サブライセンス、販売を許可し、実質的な部分に著作権表示を含めることを要求します。ソフトウェアは現状のまま提供され、いかなる保証もありません。README 自体には性能ベンチマーク、稼働保証、セキュリティ上の主張は含まれておらず、バグや質問は GitHub Issues に誘導されています。これらはプロジェクトの品質に関する判断ではなく、ソース資料にそれらの記述が存在しないという事実です。
編集部の結論
Lettuce の README は、Netty ベースのクライアントであり、同期・非同期・リアクティブのコードパスで1つの接続を共有でき、Sentinel、Cluster、およびいくつかの Redis モジュールをサポートすると位置づけています。機能の詳細な意味や本番環境での挙動は README にはないため、参照ドキュメントと Maven Central のページを次に見るのが実用的です。
コミュニティノート