redis的java客戶端lettuce的使用

2021-08-26 05:35:00 字數 3512 閱讀 3775

從官方文件翻譯並整理的,有地方可能表述不準確

lettuce是乙個執行緒安全的redis客戶端。提供同步,非同步和reactive(?)的 apis.。如果可以避開阻塞和事務型的操作比如blpopmulti/exec,多個執行緒可以分享同乙個連線。多個連線被nio框架netty有效的管理。

並且支援哨兵模式,集群模式和資料模式。

他的大部分方法對正好對應redis的命令。

redisuri是redis連線的一些標準資訊,比如需要提供資料庫名稱,密碼,url,超時時間等。有三種方式可以建立:

redis :// [: password@] host [: port] [/ database][? [timeout=timeout[d|h|m|s|ms|us|ns]] [&_database=database_]]

rediss :// [: password@] host [: port] [/ database][? [timeout=timeout[d|h|m|s|ms|us|ns]] [&_database=database_]]

redis-socket://path [?[timeout=timeout[d|h|m|s|ms|us|ns]][&_database=database_]]

redis-sentinel :// [: password@] host1[: port1] [, host2[: port2]] [, hostn[: portn]] [/ database][?[timeout=timeout[d|h|m|s|ms|us|ns]] [&_sentinelmasterid=sentinelmasterid_] [&_database=database_]]

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();

biz.paluch.redis

lettuce

5.0.0.beta1

redisclient client = redisclient.create("redis://localhost");

statefulredisconnectionconnect = client.connect();

rediscommandscommands = connect.sync(); 

string value = commands.get("foo");

redisasynccommandsredisasync = connect.async();

redisfutureredisfuture = redisasync.get("a");

try catch (interruptedexception e) catch (executionexception e)

redisfuture的get方法是阻塞方法,會一直阻塞到返回結果,可以新增超時時間 

connection.close(); 

client.shutdown();

懵逼ing...

發布訂閱的使用

事務的使用

自定義命令

主從模式的使用

哨兵模式的使用

集群模式的使用

lettuce是執行緒安全的,可以被多個執行緒同時使用,所以執行緒池不是必須的。lettuce提供了一般的連線池支援。

lettuce的連線池依賴common-pool2

org.apache.commons

commons-pool2

2.4.3

redisclient client = redisclient.create(redisuri.create(host, port));

genericobjectpool> pool = connectionpoolsupport

.creategenericobjectpool(() -> client.connect(), new genericobjectpoolconfig());

// executing work

try (statefulredisconnectionconnection = pool.borrowobject())

// terminating

pool.close();

client.shutdown();

redisclusterclient clusterclient = redisclusterclient.create(redisuri.create(host, port));

genericobjectpool> pool = connectionpoolsupport

.creategenericobjectpool(() -> clusterclient.connect(), new genericobjectpoolconfig());

// execute work

try (statefulredisclusterconnectionconnection = pool.borrowobject())

// terminating

pool.close();

clusterclient.shutdown();

Redis的Java客戶端Jedis

commons pool 1.6.jar jedis 2.1.0.jar 用windows中的eclipse連線虛擬機器的redis的注意事項 禁用linux的防火牆 linux裡執行命令 service iptables stop redis.conf中注釋掉 bind 127.0.0.1 然後 ...

Redis的Python客戶端redis py

1.安裝 1.redis py a.使用easy install sudo easy install redis b.原始碼安裝git clone cd redis py python setup.py install 2.parser安裝 parser可以控制如何解析redis響應的內容。redi...

Redis的Python客戶端redis py

1.redis py a.使用easy install 1 sudo easy install redis b.原始碼安裝 1 2 3 git clone cd redis py python setup.py install 2.parser安裝 parser可以控制如何解析redis響應的內容。...