文档章节

J2Cache 中使用 Lettuce 替代 Jedis 管理 Redis 连接

红薯
 红薯
发布于 10/17 07:30
字数 667
阅读 750
收藏 5

一直以来 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。

全文完。

© 著作权归作者所有

共有 人打赏支持
红薯

红薯

粉丝 20740
博文 130
码字总数 47104
作品 8
深圳
产品经理
私信 提问
J2Cache 2.7.0 发布了,支持 Lettuce 替代 Jedis

J2Cache 2.7.0 在周末悄没声息的发布了!!! 该版本支持使用 Lettuce 替代 Jedis 连接 Redis ,目前二者并存,以后的版本可能会考虑直接替换掉 Jedis 。我之前不喜欢 Lettuce 是因为它依赖了...

红薯
09/15
0
0
J2Cache 2.7.2 发布,解决多个实例并存问题

@红薯:当你碰到一个百思不得其解的奇怪问题,折腾半天搞不定的时候,这个问题基本上可以判断是因为一个愚蠢错误引起的。 ------- 华丽分割线 ------- J2Cache 2.7.2 版本更新了,该版本主要...

红薯
10/16
0
0
J2Cache 2.7.6 发布,修复多实例和 Lettuce 问题

J2Cache 2.7.6 发布了,包括前面几个 2.7.5 和 2.7.4 ,该版本主要是修复两个问题: 同一个应用启用多 J2Cache 实例的数据隔离问题 启用 Lettuce 时无法设置 redis 数据 TTL 的问题 Maven: ...

红薯
10/31
0
0
J2Cache使用Redis消息队列服务

看到J2Cache里面已经和Redis打通了,但是有部分数据是可以独立在缓存外用Redis实现消息队列服务,请问如何让J2Cache接管Redis的连接服务呢

easymbol
11/16
0
0
J2Cache 2.6.0 发布,支持分布式 session 存储管理

J2Cache 2.6.0 版本发布啦,该版本最最值得关注的就是支持分布式的 session 存储管理,支持不同的 Servlet 容器。 此外,该版本包含了如下小改动: 配置中对值包含空格的处理 CacheObject 允...

红薯
09/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

分布式锁的实现

redis实现分布式锁 方法1:普通实现方案 实现方式: 使用指令: set key 随机值 ex 5 nx.意思是当key不存在的时候设置key. 如果key存在返回OK,否则返回nil. 实现过程: 1.执行命令set key true ...

grace_233
21分钟前
1
0
解决CKEditor 4 富文本编辑器在图片组件无法显示[上传]选项卡的相关问题

关于解决CKEditor 4 富文本编辑器在图片组件无法显示[上传]选项卡的相关问题。 本文可能会对以下现象得以解决: 图片上传组件,没有 [上传] 选项卡。 资源无法加载 [imgupload] ( Uncaught E...

Eller
24分钟前
0
0
限制php解析、user_agent、php相关配置

11月20日任务 11.28 限定某个目录禁止解析php 11.29 限制user_agent 11.30/11.31 php相关配置 11.28、限定某个目录禁止解析php 核心配置文件内容 <Directory /data/wwwroot/www.123.com/upl...

zgxlinux
29分钟前
1
0
博客园首页新随笔联系订阅管理 随笔

注解Annotation实现原理与自定义注解例子 什么是注解? 对于很多初次接触的开发者来说应该都有这个疑问?Annontation是Java5开始引入的新特征,中文名称叫注解。它提供了一种安全的类似注释的...

onedotdot
46分钟前
4
1
Spring boot + redis 用RedisTemlate实现简单的String key value 操作

springboot集成redis, 简单的key, value缓存操作. 1. application-local.properties # redis on local#spring.redis.port=6379#spring.redis.host=localhost#spring.redis.password=......

园领T
59分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部