簡介:Redis 混合存儲執行個體是阿裡雲自主研發的相容Redis協定和特性的雲資料庫産品,混合存儲執行個體突破 Redis 資料必須全部存儲到記憶體的限制,使用磁盤存儲全量資料,并将熱資料緩存到記憶體,實作通路性能與存儲成本的完美平衡。
架構及特性

指令相容
混合存儲相容絕大多數 Redis 指令,與原生 Redis 相比,如下指令不支援或受限制;不支援的主要原因是考慮到性能,如業務中有使用到,請送出工單。
選型指南 - 場景
選型指南 - 規格
選擇混合存儲執行個體時,需要選擇合适的【記憶體配置 + 磁盤配置】;磁盤決定能存儲的資料總量,記憶體決定能存儲的熱資料總量,執行個體生産時會根據存儲的規格配置選擇合适的CPU資源配置,目前暫不支援自定義CPU核數。
比如【64GB記憶體 + 256GB磁盤】執行個體,意思是執行個體最多能存儲 256GB 的資料(以KV存儲引擎的實體檔案總大小為準),其中 64GB 資料可以緩存在記憶體。
記憶體選型建議:Redis 混合存儲為保證最大程度的相容 redis 原生通路協定,要求所有的key必須常駐記憶體,value 可以根據冷熱讀來自動決定存儲在記憶體還是磁盤,是以記憶體空間必須要足以存儲所有的key、以及對應的元資訊。
磁盤選型建議:因 Redis 資料存儲到 KV 存儲引擎,每個key都會額外中繼資料資訊,存儲空間占用會有一定的放大,建議在磁盤空間選擇上,留有适當餘量,按實際存儲需求的 1.2 - 1.5倍預估。
案例1:使用者A使用Redis Cluster 存儲了 100GB 的資料,總的通路QPS不到2W,其中80%的資料都很少通路到。使用者A 可以使用 【32GB記憶體 + 128GB磁盤】 混合存儲執行個體,節省了近 70GB 的記憶體存儲,存儲成本下降50%+。
案例2:使用者B在IDC自建 Pika/SSDB 執行個體,解決Redis存儲成本高的問題,存儲了約400GB的資料,其中活躍通路的在10%左右,叢集運維負擔很重,想遷移至雲資料庫;使用者B可以使用【64GB記憶體 + 512GB磁盤】混合存儲執行個體,來保證免運維的同時,服務品質不下降。
性能名額
Redis 混合存儲的性能與記憶體磁盤配比,以及業務的通路高度相關;根據規格配置及業務通路模式的不同,簡單 set/get 的性能可在幾千到數萬之間波動。最好情況所有的通路都記憶體命中,性能與 Redis 記憶體版基本一緻;最差情況所有的通路都需要從磁盤讀取。
測試場景:2000w key,value大小為1KB,25%的熱key能存儲在記憶體,get 請求測試資料如下:
應用場景
視訊直播類
視訊直播類業務往往存在大量熱點資料,大部分的請求都來自于熱門的直播間。使用 Redis 混合存儲型執行個體,記憶體中保留熱門直播間的資料,不活躍的直播間資料被自動存儲到磁盤上,可以達到對有限記憶體的最佳利用效果。
電商類
電商類應用有大量的商品資料,新上架的商品會被頻繁通路,而較老的商品通路熱度不高;使用 Redis 混合存儲型執行個體,可以輕松突破記憶體容量限制,将大量的商品資料存儲到磁盤,在正常業務請求中,活躍的商品資料會逐漸緩存在記憶體中,以最低的成本滿足業務需求。
線上教育類
線上教育類的場景,有大量的課程、題庫、師生交流資訊等資料,通常隻有熱門課程、最新題庫題庫會被頻繁通路;使用 Redis 混合存儲型,将大量的課程資訊存儲到磁盤,活躍的課程、題庫資訊會換入到記憶體并常駐記憶體,保證高頻通路資料的性能,實作性能與存儲成本的平衡。
其他場景
其他資料通路有明顯冷熱特性,對性能要求不高的場景均可使用Redis混合存儲來降低存儲成本。
常見問題
磁盤還有剩餘空間,但記憶體先滿了,導緻寫入報錯 OOM error
- 記憶體規格太小,導緻記憶體空間不足以容納所有key及其中繼資料資訊,建議在控制台更新執行個體規格即可,增大執行個體記憶體。
- key對應的value比較小,混合存儲對于比較小的value(比如小于20byte),不會觸發換出換出到磁盤,因為小的value換出到磁盤,在記憶體裡還是會存儲一些meta資訊,最終導緻換出到磁盤并不能騰出記憶體空間;這個問題混合存儲核心在持續優化,盡量适應更多的應用場景。
雲資料庫 Redis 版
一種穩定可靠、性能卓越、可彈性伸縮的資料庫服務。基于飛天分布式系統和全SSD盤高性能存儲,支援主備版和叢集版兩套高可用架構。