redisのjavaクライアントlettuceの使用
5698 ワード
公式文書から翻訳して整理したものは、表現が不正確な場合があります
ドキュメントのアドレス:https://github.com/lettuce-io/lettuce-core/wiki/About-lettuce
1.lettuceの紹介
lettuceはスレッドが安全なredisクライアントです.同期、非同期、reactive(?)の提供のAPIs..ブロックやトランザクション型の操作、例えば
また、哨兵モード、クラスタモード、データモードをサポートします.
彼の大部分の方法はredisの命令にちょうど対応している.
2. RedisURI
1.作成
RedisURIは、データベース名、パスワード、url、タイムアウト時間など、redis接続の標準情報です.次の3つの方法で作成できます. RedisURI.create("redis://localhost/"); RedisURI.Builder.redis("localhost", 6379).auth("password").database(1).build(); new RedisURI("localhost", 6379, 60, TimeUnit.SECONDS);
2.uriの文法単独のredis: redis ://[: password@] host [: port] [/database][? [timeout=timeout[d|h|m|s|ms|us|ns]] [&_database=database_]] 個別のredis ssl: rediss ://[: password@] host [: port] [/database][? [timeout=timeout[d|h|m|s|ms|us|ns]] [&_database=database_]] 個別のredis unixのsocket redis-socket :// path [?[timeout=timeout[d|h|m|s|ms|us|ns]][&_database=database_]] redis哨兵モード redis-sentinel ://[: password@] host1[: port1] [, host2[: port2]] [, hostN[: portN]] [/database][?[timeout=timeout[d|h|m|s|ms|us|ns]] [&_sentinelMasterId=sentinelMasterId_] [&_database=database_]]
3.時間単位d天 h時間 m分 s秒 ms ms ms usマイクロ秒 ns納秒 4.例urlとport builder ssl builder String RedisURI
3.基本使用 maven 接続確立 同期方式 非同期方式
RedisFutureのgetメソッドはブロックメソッドで、結果を返すまでブロックされ、タイムアウト時間を追加できます.接続を閉じる
4. Reactive API
呆然と...
5. Pub Sub
サブスクリプションの使用のパブリッシュ
6. Transactions
トランザクションの使用
7. dynamic Redis Command Interfaces
カスタムコマンド
8. Master Slave
マスタスレーブモードの使用
9. Redis Sentinel
歩哨モードの使用
10. Redis Cluster
クラスタモードの使用
11.接続プールの使用
lettuceはスレッドが安全で、複数のスレッドで同時に使用できるので、スレッドプールは必須ではありません.lettuceは、一般的な接続プールのサポートを提供します.
lettuceの接続プール依存common-pool 2
1.接続プールの返却の2つの方式 StatefulConnection.close() GenericObjectPool.returnObject(…)
2.基本使用
3.クラスタ使用
ドキュメントのアドレス:https://github.com/lettuce-io/lettuce-core/wiki/About-lettuce
1.lettuceの紹介
lettuceはスレッドが安全なredisクライアントです.同期、非同期、reactive(?)の提供のAPIs..ブロックやトランザクション型の操作、例えば
BLPOP
とMULTI
/EXEC
を避けることができれば、複数のスレッドが同じ接続を共有することができます.複数の接続は、NIOフレームワークnettyによって効率的に管理されます.また、哨兵モード、クラスタモード、データモードをサポートします.
彼の大部分の方法はredisの命令にちょうど対応している.
2. RedisURI
1.作成
RedisURIは、データベース名、パスワード、url、タイムアウト時間など、redis接続の標準情報です.次の3つの方法で作成できます.
2.uriの文法
3.時間単位
RedisClient client = RedisClient.create(RedisURI.create("localhost", 6379));
client.setDefaultTimeout(20, TimeUnit.SECONDS);
// …
client.shutdown();
RedisURI redisUri = RedisURI.Builder.redis("localhost")
.withPassword("authentication")
.withDatabase(2)
.build();
RedisClient client = RedisClient.create(redisUri);
RedisURI redisUri = RedisURI.Builder.redis("localhost")
.withSsl(true)
.withPassword("authentication")
.withDatabase(2)
.build();
RedisClient client = RedisClient.create(redisUri);
RedisURI redisUri = RedisURI.create("redis://authentication@localhost/2");
RedisClient client = RedisClient.create(redisUri);
// …
client.shutdown();
3.基本使用
biz.paluch.redis
lettuce
5.0.0.Beta1
RedisClient client = RedisClient.create("redis://localhost");
StatefulRedisConnection connect = client.connect();
RedisCommands commands = connect.sync();
String value = commands.get("foo");
RedisAsyncCommands redisAsync = connect.async();
RedisFuture redisFuture = redisAsync.get("a");
try {
String a = redisFuture.get();
System.out.println(a);
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
RedisFutureのgetメソッドはブロックメソッドで、結果を返すまでブロックされ、タイムアウト時間を追加できます.
connection.close();
client.shutdown();
4. Reactive API
呆然と...
5. Pub Sub
サブスクリプションの使用のパブリッシュ
6. Transactions
トランザクションの使用
7. dynamic Redis Command Interfaces
カスタムコマンド
8. Master Slave
マスタスレーブモードの使用
9. Redis Sentinel
歩哨モードの使用
10. Redis Cluster
クラスタモードの使用
11.接続プールの使用
lettuceはスレッドが安全で、複数のスレッドで同時に使用できるので、スレッドプールは必須ではありません.lettuceは、一般的な接続プールのサポートを提供します.
lettuceの接続プール依存common-pool 2
org.apache.commons
commons-pool2
2.4.3
1.接続プールの返却の2つの方式
2.基本使用
RedisClient client = RedisClient.create(RedisURI.create(host, port));
GenericObjectPool> pool = ConnectionPoolSupport
.createGenericObjectPool(() -> client.connect(), new GenericObjectPoolConfig());
// executing work
try (StatefulRedisConnection connection = pool.borrowObject()) {
RedisCommands commands = connection.sync();
commands.multi();
commands.set("key", "value");
commands.set("key2", "value2");
commands.exec();
}
// terminating
pool.close();
client.shutdown();
3.クラスタ使用
RedisClusterClient clusterClient = RedisClusterClient.create(RedisURI.create(host, port));
GenericObjectPool> pool = ConnectionPoolSupport
.createGenericObjectPool(() -> clusterClient.connect(), new GenericObjectPoolConfig());
// execute work
try (StatefulRedisClusterConnection connection = pool.borrowObject()) {
connection.sync().set("key", "value");
connection.sync().blpop(10, "list");
}
// terminating
pool.close();
clusterClient.shutdown();