所有主流的编程语言都有 Redis 的客户端,首先是因为 Redis 客户端与服务端之间的通信协议是基于 TCP 的,TCP 本身就非常流行,其次是因为 Redis 制定了 一个简单高效的序列化协议 RESP(Redis Serialization Protocol),RESP 既容易被机器解析,又容易被人类识别。
Java 有很多 Redis 客户端,比如 Jedis、Redisson 等。
Jedis
优点
- 提供了比较全面的 Redis 操作特性的 API
- API 基本与 Redis 的指令一一对应,使用简单易理解
缺点
- 同步阻塞 IO,不支持异步,需要通过连接池来使用 Jedis,线程不安全
Redisson
优点
- 基于 Netty 框架的事件驱动的通信,可异步调用,线程安全
- 不仅支持对常用数据类型的操作,还支持排序、事务、管道、分区等 Redis 特性
- 支持 Redis 单节点(single)模式、哨兵(sentinel)模式、主从(Master/Slave)模式以及集群(Redis Cluster)模式,适合分布式开发
缺点
- API 更抽象,学习使用成本高