https://developer.huawei.com/consumer/cn/blog/topic/03825550899620047
Redis 官方推薦的 Java 客戶端有Jedis、Lettuce 和 Redisson。本文總結這些客服端的優缺點
1. Jedis
Jedis 是老牌的 Redis 的 Java 實現客戶端,提供了比較全面的 Redis 命令的支持,其官方網址是:https://github.com/redis/jedis
優點:
- 支持全面的 Redis 操作特性(可以理解為API比較全面)。
- 老牌的redis客戶端,使用很穩定; spring-boot 1.x 默認使用jedis;
缺點:
- 使用阻塞的 IO,且其方法調用都是同步的,程序流需要等到 sockets 處理完 IO 才能執行,不支持異步;
- Jedis 客戶端實例不是線程安全的,所以需要通過連接池來使用 Jedis。
2. Lettuce
Lettuce是一種可擴展的線程安全的 Redis 客戶端,支持異步模式。如果避免阻塞和事務操作,如BLPOP和MULTIEXEC,多個線程就可以共享一個連接。Lettuce 底層基于 Netty,支持高級的 Redis 特性,比如哨兵,集群,管道,自動重新連接和Redis數據模型。Lettuce 的官網地址是:https://github.com/lettuce-io/lettuce-core
優點:
- 支持同步異步通信模式;
- Lettuce 的 API 是線程安全的,如果不是執行阻塞和事務操作,如BLPOP和MULTIEXEC,多個線程就可以共享一個連接;
- spring-boot 2.x 默認使用Lettuce;
3. Redisson
Redisson 是一個在 Redis 的基礎上實現的 Java 駐內存數據網格(In-Memory Data Grid)。它不僅提供了一系列的分布式的 Java 常用對象,還提供了許多分布式服務。其中包括( BitSet, Set, Multimap, SortedSet, Map, List, Queue, BlockingQueue, Deque, BlockingDeque, Semaphore, Lock, AtomicLong, CountDownLatch, Publish / Subscribe, Bloom filter, Remote service, Spring cache, Executor service, Live Object service, Scheduler service) Redisson 提供了使用Redis 的最簡單和最便捷的方法。Redisson 的宗旨是促進使用者對Redis的關注分離(Separation of Concern),從而讓使用者能夠將精力更集中地放在處理業務邏輯上。Redisson的官方網址是:https://redisson.org/
優點:
- 使用者對 Redis 的關注分離,可以類比 Spring 框架,這些框架搭建了應用程序的基礎框架和功能,提升開發效率,讓開發者有更多的時間來關注業務邏輯;
- 提供很多分布式相關操作服務,例如,分布式鎖,分布式集合,可通過Redis支持延遲隊列等。
缺點:
- Redisson 對字符串的操作支持比較差。
4. 使用建議
一般是采用如下搭配組合。
- Jedis + Redisson
- Lettuce + Redisson