J2Cache 中使用 Lettuce 替代 Jedis 管理 Redis 連接 原 薦

一直以來 J2Cache 都是使用 Jedis 連接 Redis 服務的。Jedis 是一個很老牌的 Redis 的 Java 開發包,使用很穩定,作者維護很勤勉,社區上能搜到的文章也非常非常多。算是使用範圍最廣的 Redis 開發包。但是 Jedis 比較推出時間比較早,整個設計思路比較傳統,例如不支持異步操作,接口設計比較繁瑣老套(相比其他開發包而已),使用連接池佔用很多的物理連接資源。當然,這個是可以理解的,比較一個比較早期的開發包,相對其做大的結構調整是很難的,而且用戶也不一定會接受。

自從 2.7.0 版本開始,J2Cache 就增加了 Lettuce 的支持。Lettuce是一個可伸縮線程安全的 Redis 客戶端。多個線程可以共享同一個RedisConnection。它利用優秀 Netty NIO 框架來高效地管理多個連接。

相比較 Jedis ,我覺得 Lettuce 的優點有如下幾個方面:

  • 更加直觀、結構更加良好的接口設計
  • 基於 Netty NIO 可以高效管理 Redis 連接,不用連接池方式
  • 支持異步操作(J2Cache 暫時沒用到這個特性)
  • 文檔非常詳盡

不過 Lettuce 需要至少 Java 8 的支持,好在 J2Cache 也要求至少 Java 8 ,就這麼愉快的決定了。

在 J2Cache 2.7.0 版本以及以後的更新版本中,想使用 Lettuce 替代 Jedis 的方法如下:

1. 修改 j2cache.properties 配置:

j2cache.broadcast = lettuce
j2cache.L2.provider_class = lettuce

2. 修改 j2cache.properties 對應的 Redis 連接信息:

lettuce.namespace =
lettuce.storage = hash
lettuce.channel = j2cache
lettuce.scheme = redis
lettuce.hosts = 127.0.0.1:6379
lettuce.password =
lettuce.database = 0
lettuce.sentinelMasterId =

其中 lettuce.scheme 包含如下幾種模式:

  1. redis : 連接單個 Redis 服務
  2. rediss : 使用 SSH 連接單個 Redis 服務
  3. redis-sentinel : 連接到 Redis Sentinel 集羣(結合 sentinelMasterId 進行使用)
  4. redis-cluster : 連接到 Redis Cluster

最後你還需要引入 Lettuce 的 Maven 包支持:

<dependency>
    <groupId>io.lettuce</groupId>
    <artifactId>lettuce-core</artifactId>
    <version>5.1.1.RELEASE</version>
    <scope>provided</scope>
</dependency>

當你在啓動日誌中看到如下信息就表明 Lettuce 已經正常工作:

[main] INFO net.oschina.j2cache.CacheProviderHolder - Using L2 CacheProvider : net.oschina.j2cache.lettuce.LettuceCacheProvider
[main] INFO io.lettuce.core.EpollProvider - Starting without optional epoll library
[main] INFO io.lettuce.core.KqueueProvider - Starting without optional kqueue library
[main] INFO net.oschina.j2cache.cluster.ClusterPolicy - Connected to redis channel:j2cache, time 680 ms.
[main] INFO net.oschina.j2cache.J2CacheBuilder - Using cluster policy : net.oschina.j2cache.lettuce.LettuceCacheProvider

使用有任何問題歡迎到 https://gitee.com/ld/J2Cache 提交 Issue。

全文完。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章