Redis相關技術選型調研

1. Redis相關技術選型調研

1.1. 目的

爲了實現私有化Redis集羣,調研Redis版本選型、集羣方案選型及Java、Golang語言客戶端選型。

1.2. Redis版本選擇

1.2.1. Redis版本對比

目前Redis有兩大版本5.0.x和6.0.x,如下是對比表格:

對比項目 Redis 5.0.x Redis 6.0.x
當前分支 Old Stable
GA版本發佈日期 2018-10-17 2020-04-30
當前版本號 5.0.10 6.0.10
當前版本發佈日期 2020-10-26 2021-01-12
升級迫切性
上一次升級高迫切性版本 5.0.8 6.0.8
上一次升級高迫切性版本發佈日期 2020-03-12 2020-09-09

官方升級迫切性定義:

  • 低:除非要使用新功能,否則無需升級。
  • 中等:對服務器進行升級編程,但這並不緊急。
  • 高:存在一個嚴重的錯誤,可能會影響部分用戶。升級!
  • 嚴重:有一個影響大多數用戶的嚴重錯誤。儘快升級。
  • 安全性:版本中包含安全性修復程序。

Redis 6.0 新特性介紹:

https://zhuanlan.zhihu.com/p/140466294

1.2.2. Redis版本選擇

根據上面對比,6.0.10版本已經進入較爲穩定階段,且支持較多新特性,建議使用該版本進行集羣環境部署。

1.3. Redis集羣方案選型

常見的Redis集羣方案有以下幾種:

  • 客戶端分片;
  • Codis;
  • Twemproxy;
  • Redis Cluster;

1.3.1. Redis集羣方案對比

對比項目 客戶端分片 Codis Twemproxy Redis Cluster
發佈組織 - 豌豆莢 Twitter 官方
當前版本 - 3.2.2 0.4.1 6.0.10
發佈日期 - 2018/1/29 2015/6/23 2021/1/12
使用方式 Client維護路由直連Redis 通過Proxy訪問 通過Proxy訪問 Client內置路由規則直連Redis
性能 有損耗 有損耗
Pipeline 支持 支持 支持 僅支持單個節點 Pipeline,不支持跨節點
客戶端是否需要關心
支持在線水平擴容 不支持 支持 不支持 支持
可維護性 運維簡單,開發人員維護成本高 組件較多,部署複雜 部署簡單 運維簡單,官方維護
故障自動恢復 需部署哨兵 需部署哨兵 需部署哨兵 內置哨兵

1.3.2. Redis集羣方案選擇

根據對比,建議選擇Redis Cluster方案,實施細節還需進一步調研。

1.4. Redis客戶端選型

目前使用語言棧爲:Java、Golang、Python。

客戶端官方列表:https://redis.io/clients

1.4.1. Java 客戶端選型

官方推薦如下三種:

對比項目 Jedis lettuce Redisson
當前版本 3.5.1 6.0.2 3.15.0
發佈日期 2021/1/23 2021/1/12 2021/1/29
特點 比較全面的提供了Redis的操作特性 高級 Redis 客戶端,用於線程安全同步,異步和響應使用,支持集羣,Sentinel,管道和編碼器。 實現了基於Redis的一些高級能力,如:分佈式鎖、延遲隊列等
實現與使用 實現簡單,使用簡單 實現較爲複雜,使用簡單 實現複雜,使用簡單
網絡 阻塞IO Netty Netty
Redis連接 使用連接池 共享連接,線程安全,且自動重連 共享連接
社區維護 更新快 更新快 氛圍企業版和開源版,更新快
其他 SpringBoot 1.x 默認使用 SpringBoot 2.x 默認使用 github star最高

建議默認使用 lettuce,如果有特殊需求,如分佈式鎖,延時隊列等可以使用Redisson。

1.4.2. Golang 客戶端選型

官方推薦如下兩個:

對比項目 Radix Redigo go-redis/redis(官方無特別推薦)
當前版本 3.7.0 1.8.4 8.5.0
發佈日期 2021/1/10 2021/2/19 2021/2/4
star 485 8.2k 10.8k

建議使用Redigo

1.4.3. Python 客戶端選型

對比項目 redis-py walrus
當前版本 3.5.3 0.8.1
發佈日期 2020/6/2 2020/4/4
star 9.1k 835

建議使用 redis-py

1.5. 總結

綜上,Redis版本建議選擇 6.0.10,Redis集羣方案建議選擇 Redis Cluster。

Java 客戶端建議選擇 lettuce,有需要的可以使用 Redisson。 Golang 客戶端建議選擇 Redigo。 Python 客戶端建議選擇 redis-py。

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