1. 程式人生 > >Redis 混合儲存最佳實踐指南

Redis 混合儲存最佳實踐指南

Redis 混合儲存例項是阿里雲自主研發的相容Redis協議和特性的雲資料庫產品,混合儲存例項突破 Redis 資料必須全部儲存到記憶體的限制,使用磁碟儲存全量資料,並將熱資料快取到記憶體,實現訪問效能與儲存成本的完美平衡。

架構及特性

命令相容

混合儲存相容絕大多數 Redis 命令,與原生 Redis 相比,如下命令不支援或受限制;不支援的主要原因是考慮到效能,如業務中有使用到,請提交工單。

Keys(鍵) List(連結串列) Scripting(Lua指令碼)
RENAME LINSERT SCRIPT 不支援LOAD和DEBUG子命令
RENAMENX LREM  
MOVE    
SWAPDB    
SORT 不支援STORE選項    

選型指南 - 場景

選型指南 - 規格

選擇混合儲存例項時,需要選擇合適的【記憶體配置 + 磁碟配置】;磁碟決定能儲存的資料總量,記憶體決定能儲存的熱資料總量,例項生產時會根據儲存的規格配置選擇合適的CPU資源配置,目前暫不支援自定義CPU核數。

比如【64GB記憶體 + 256GB磁碟】例項,意思是例項最多能儲存 256GB 的資料(以KV儲存引擎的物理檔案總大小為準),其中 64GB 資料可以快取在記憶體。

案例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 資料儲存到 KV 儲存引擎,每個key都會額外元資料資訊,儲存空間佔用會有一定的放大,建議在磁碟空間選擇上,留有適當餘量,按實際儲存需求的 1.2 - 1.5倍預估。

效能指標

Redis 混合儲存的效能與記憶體磁碟配比,以及業務的訪問高度相關;根據規格配置及業務訪問模式的不同,簡單 set/get 的效能可在幾千到數萬之間波動。最好情況所有的訪問都記憶體命中,效能與 Redis 記憶體版基本一致;最差情況所有的訪問都需要從磁碟讀取。

測試場景:2000w key,value大小為1KB,25%的熱key能儲存在記憶體,get 請求測試資料如下

測試集 記憶體版(100%資料在記憶體) 混合儲存版(25%資料在記憶體)
隨機訪問 12.3(萬) 1.5
高斯分佈80%的概率訪問20%的key 12.0 5.4
高斯分佈99%的概率訪問1%的key 13.5 11.4

應用場景

視訊直播類

視訊直播類業務往往存在大量熱點資料,大部分的請求都來自於熱門的直播間。使用 Redis 混合儲存型例項,記憶體中保留熱門直播間的資料,不活躍的直播間資料被自動儲存到磁碟上,可以達到對有限記憶體的最佳利用效果。

電商類

電商類應用有大量的商品資料,新上架的商品會被頻繁訪問,而較老的商品訪問熱度不高;使用 Redis 混合儲存型例項,可以輕鬆突破記憶體容量限制,將大量的商品資料儲存到磁碟,在正常業務請求中,活躍的商品資料會逐步快取在記憶體中,以最低的成本滿足業務需求。

線上教育類

線上教育類的場景,有大量的課程、題庫、師生交流資訊等資料,通常只有熱門課程、最新題庫題庫會被頻繁訪問; 使用 Redis 混合儲存型,將大量的課程資訊儲存到磁碟,活躍的課程、題庫資訊會換入到記憶體並常駐記憶體,保證高頻訪問資料的效能,實現效能與儲存成本的平衡。

其他場景

其他資料訪問有明顯冷熱特性,對效能要求不高的場景均可使用Redis混合儲存來降低儲存成本。


原文連結
本文為雲棲社群原創內容,未經