Redis作為NoSQL最受歡迎的資料庫之一,在國内市場長期占據Key-Value NoSQL市場的榜首。它的高性能,易用性和提供的常用資料結構極大的簡化了開發人員和使用者的開發和使用,能夠更好更快的建構出客戶系統。
3月11日,Redis企業版(Tair)& 專屬主機組将召開重磅新品釋出會!
性能提升高達3倍,TCO最高降低90%!十年磨一劍,打造旗艦級緩存服務,邀您一同見證商業和技術的創新!
Redis在使用時也有一些短處,經常遇到的有:
1、沒有管控系統。Redis隻提供一個存儲核心,無論是生存周期管理還是參數配置都需要自己開發。
2、單線程模型,容易卡住。Redis使用了無鎖的單線程模型來工作,但是如果有一個特别慢的查詢,那麼就會整體卡住Redis本身,使判活失敗導緻執行個體不可用。
3、叢集版和擴縮容不完善。Redis本身提供了叢集版功能,但是在大叢集下并不完善;使用者更習慣使用proxy代理來管控叢集。變配和擴縮容的難度非常大。
4、監控和審計缺失。對于高速NoSQL資料庫而言,需要有更完善的基礎設施來支撐。不僅包括完善的監控,告警系統,還有日志、診斷及審計等,完整得搭建服務平台非常繁瑣。
由于Redis經常作為高速記憶體存儲和緩存使用,一般用于使用者資料鍊路的關鍵線上業務。如果Redis有了問題會直接影響使用者的産品功能和使用者體驗。缺乏必要的管理和監控,沒有對Redis核心引擎做增強,一旦遇到問題使用者的業務就很難快速發現,快速處理和恢複。
簡而言之,Redis很難做到“開箱即用”,要在引擎核心和管控系統做大量工作。
1、雲Redis企業版
正如上文中提到的Redis的不足,阿裡雲最早将Redis放到公有雲的最基本出發點就是解決“有”和“無”的問題,提供完善的開箱即用的功能,和平滑擴縮容的能力。社群版Redis無論是主備版本還是叢集版本都完全相容Redis所有指令,使用者能夠很快的遷移并快速部署自己的業務服務。
阿裡雲是國内最早将Redis商業化的公司之一,也是國内對Redis社群貢獻最大的實體。如在新釋出的Redis-6.0RC中,aliyun的commit貢獻僅次于作者。其中很多核心的改進如短連結優化,正則比對效率等已經釋出至官方。

對于小型應用服務來說,阿裡雲Redis社群版已經足夠。
2、雲Redis 企業版(Tair)
阿裡在内部大型系統諸如電商(淘寶,天貓)、優酷、高德等使用Redis非常早,但發現Redis在支撐大型或者超大型服務上的能力還是有所欠缺的,主要問題有:
1、單線程Redis有很明顯的C10K問題,即在大連結狀态下抗沖擊能力很差。大型和超大型應用動辄就有一萬或者幾萬程序連接配接Redis,一個沖激響應或者一個慢查詢就可能導緻連接配接數雪崩。
2、要求單分片有更強的服務能力。Redis社群版的一個很大的問題是一個Redis程序在O(1)的操作大緻有10~13w OPS的服務能力,在極端和突然場景下仍舊不夠,如常用的資料結構和指令。
3、資料結構子產品(Module)。Redis提供的基礎的Hash、List、Set等是通用的是對通用網際網路環境的總結,而在阿裡和大型企業有着更多的子產品的需求。引入新的特定的資料結構子產品能夠極大的簡化使用者開發,并大幅提升使用者系統的性能。
4、混合存儲。針對大容量低通路但對RT(latency)不敏感的應用,使用混合存儲不但能大幅降低使用者的成本,還能提供更優秀的持久化能力和資料可靠性。
5、另外,與Redis社群版不同,客戶也需要一個長期維護的穩定版本,保證使用者業務的持續被內建的能力。
對于企業版來講,在完全繼承社群版能力上,着重解決應用運作得“好”,使用者開發得“爽”的問題,解決使用者在深度使用Redis的痛點和瓶頸。
01、Tair和Redis
Tair團隊是阿裡集團最核心的團隊之一,負責整個阿裡的緩存和高速存儲體系。MemCache/Redis/圖資料庫GDB都是Tair團隊将阿裡内部成熟的産品孵化到雲上,服務公有雲和專有雲客戶。
雲Redis企業版就是Tair3.0。它将阿裡多年來在高速存儲技術再次輸出到雲上,打造對内對外一緻的服務,使得我們雲上客戶也能夠享受到阿裡技術的紅利,再次突破技術的桎梏,為使用者業務的高速發展保駕護航!
02、性能增強版
性能增強版Redis即RDB3.0,旨在為使用者提供更強大的服務能力和靈活的建構能力,主要包括:
多線程Redis可以突破Redis單機性能極限,對于常用的資料結構加速可達三倍(400-450K OPS)。支援高達數萬連接配接的沖擊,足以應對大型的活動如熱播,秒殺等場景。
社群高版本Redis6.0 RC雖然也支援多線程,但是IO架構上與性能增強版不同,但仍未解決C10K和大連結沖擊問題
03、混合存儲版
混合存儲版Redis即PDB3.0,它使用磁盤來存儲使用者的資料,并提供了高度的Redis相容力。它特别适合通路量并不大但有大量資料存儲的應用場景。
混合存儲Redis很好解決了存儲成本與性能的的平衡問題:經常通路的資料緩存在記憶體中,這樣做既提升了存儲的經濟型,也保證了對熱資料的通路效率。
高效的換入換出通道,能夠将使用者的熱請求資料前置到記憶體中,能夠讓業務應用獲得更好的時延體驗。
由于新硬體的引入,存儲和高速NoSQL資料庫正處于變革期。混合存儲将持續将業内最先進的裝置如NVM,RDMA等加速至系統引擎,能夠讓雲上使用者盡快享受到最新技術帶來的産品優勢,從容的應對未來的挑戰。
04、資料結構子產品(modules)
資料結構子產品(Module)提供了更多常見的新資料類型,能夠讓使用者更靈活快速的建構出高效服務。這些子產品已經在阿裡内部廣泛使用多年,非常具有代表性和特色,其中包括:
CAS/CAD:提供原redis string指令的compare-and-swap/compare-and-delete能力,可用于原子交換、分布式鎖等場景。尤其是分布式鎖這個場景,阿裡集團的大多數分布式鎖都是使用SETNX/CAD/CAS來實作的。
TairString:支援并發通路的String類型,每個String都攜帶version版本号,可用于并發更新,和樂觀鎖等場景
TairHash:大幅改良了Redis hash類型的不足,為每個field(子key)都攜帶了逾時(TTL)和版本号(version),使用者可以非常友善的建構賬号系統,安全審計規則、流控器等場景
TairBloom:完全相容RedisBloom,提供高性能的可伸縮的布隆過濾器(bloomfilter),可用于機器學習、爬蟲系統等。
TairDoc:完全相容reJSON子產品,提供JSON格式的結構化存儲。TairDoc具備更強大的功能,諸如同時支援JSON Pointer和JSON Path兩種文法、支援JSON到XML/YAML格式的轉換等。特别适合在前端和配置中心類應用中使用。
TairGis: 重量級的專業GIS子產品,提供了點、線、面之間的相交、包含等關系運算,彌補了Redis原生geo資料結構隻能做點位置運算的不足。可以使用者替換PostGIS+緩存場景,特别适合地圖、物流、電子圍欄(點和多邊形的地理位置關系)、地理勘探等應用場景,高德菜鳥等很多高性能地理位置業務很多都是建構于TairGIS之上。比如最近的疫區檢測,通過輸入疫區的地理位置圍欄,就可以判斷路線是否經過(線段與多邊形是否相交)
3、總結
随着雲上客戶的高速發展,使用者已經逐漸發展并觸摸到了社群Redis的能力的邊緣。同時,Tair作為阿裡原創的高性能記憶體資料庫産品,也已經逐漸完成了“企業版Redis應該是什麼形态”這個問題的探索,并在阿裡集團的各個部門進行了研發與充分的驗證。
從2016年起的雙11大促和每次促銷活動以及線上的各項互動遊戲、優酷世界杯、高德出行節,曆次大麥的搶購、推薦與推送、菜鳥的每一次大資料路線仿真運算都與企業版Redis的高性能和極高的可靠性息息相關。
值得一提的是,Redis在國内的使用方式與國際市場并不完全相同。在國際市場上,它更多的被當作“緩存”來使用,這是它的定位。而在國内,更多的被當作記憶體資料庫來使用。這本身就對企業版Redis提出了更高的要求。這也是阿裡雲Redis後續持之努力的方向。
請大家持續的關注企業版Redis(Tair),明天Redis企業版(Tair)& 專屬主機組将召開重磅釋出會,點選閱讀原文即可觀看!我們也希望大家給我們更多的回報和使用建議。謝謝大家!
直播預告
點我預約Redis企業版(Tair)& 專屬主機組
重磅新品釋出會
3月11日(周三)15:00-16:00
性能提升高達3倍
TCO最高降低90%
十年磨一劍
打造旗艦級緩存服務
邀您一同見證商業和技術的創新!