前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >高级的 Redis Java客户端 - Lettuce

高级的 Redis Java客户端 - Lettuce

作者头像
dys
发布2018-06-04 16:46:23
5.6K0
发布2018-06-04 16:46:23
举报
文章被收录于专栏:性能与架构性能与架构

1. 前言

Spring Boot 2.0中 Redis 客户端驱动现在由 Jedis变为了 Lettuce,这是随意的根据喜好的决定,还是有技术上的原因呢?

Lettuce 的确有很多优秀的特性,例如:

  • 基于 netty,支持事件模型
  • 支持 同步、异步、响应式 的方式
  • 可以方便的连接 Redis Sentinel
  • 完全支持 Redis Cluster
  • SSL 连接
  • Streaming API
  • CDI 和 Spring 的集成
  • 兼容 Java 8 和 9

2. 重要特性

(1)多线程共享

Jedis 是直连模式,在多个线程间共享一个 Jedis 实例时是线程不安全的,如果想要在多线程环境下使用 Jedis,需要使用连接池,每个线程都去拿自己的 Jedis 实例,当连接数量增多时,物理连接成本就较高了。

Lettuce 是基于 netty 的,连接实例可以在多个线程间共享,所以,一个多线程的应用可以使用一个连接实例,而不用担心并发线程的数量。

(2)异步

异步的方式可以让我们更好的利用系统资源,而不用浪费线程等待网络或磁盘I/O。

Lettuce 是基于 netty 的,netty 是一个多线程、事件驱动的 I/O 框架,所以 Lettuce 可以帮助我们充分利用异步的优势。

代码示例

连接

使用阻塞的方式读取

设置阻塞读取时的超时时间

异步方式,当 RedisFuture<T>是完成状态时自动触发后面的动作

(3)很好的支持 Redis Cluster

对 Cluster 的支持包括:

  • 支持所有的 Cluster 命令
  • 基于哈希槽的命令路由
  • 对 cluster 命令的高层抽象
  • 在多节点上执行命令
  • 根据槽和地址端口直接连接cluster中的节点
  • SSL和认证
  • cluster 拓扑的更新
  • 发布/订阅

(4)Streaming API

Redis 中可能会有海量的数据,当你获取一个大的数据集合时,有可能会被撑爆,Lettuce 可以让我们使用流的方式来处理。

示例1

示例2

3. 小结

Lettuce 值得我们深入学习一下,官方文档

https://github.com/lettuce-io/lettuce-core/wiki

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-05-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 JAVA高性能架构 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 前言
  • 2. 重要特性
    • (1)多线程共享
      • (2)异步
        • 代码示例
      • (3)很好的支持 Redis Cluster
        • (4)Streaming API
        • 3. 小结
        相关产品与服务
        云数据库 Redis
        腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档