Redis 混合存储最佳实践指南
Redis 混合存儲實例是阿里云自主研發的兼容Redis協議和特性的云數據庫產品,混合存儲實例突破 Redis 數據必須全部存儲到內存的限制,使用磁盤存儲全量數據,并將熱數據緩存到內存,實現訪問性能與存儲成本的完美平衡。
架構及特性
?
命令兼容
混合存儲兼容絕大多數 Redis 命令,與原生 Redis 相比,如下命令不支持或受限制;不支持的主要原因是考慮到性能,如業務中有使用到,請提交工單。
| 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 請求測試數據如下
| 隨機訪問 | 12.3(萬) | 1.5 |
| 高斯分布80%的概率訪問20%的key | 12.0 | 5.4 |
| 高斯分布99%的概率訪問1%的key | 13.5 | 11.4 |
應用場景
視頻直播類
視頻直播類業務往往存在大量熱點數據,大部分的請求都來自于熱門的直播間。使用 Redis 混合存儲型實例,內存中保留熱門直播間的數據,不活躍的直播間數據被自動存儲到磁盤上,可以達到對有限內存的最佳利用效果。
電商類
電商類應用有大量的商品數據,新上架的商品會被頻繁訪問,而較老的商品訪問熱度不高;使用 Redis 混合存儲型實例,可以輕松突破內存容量限制,將大量的商品數據存儲到磁盤,在正常業務請求中,活躍的商品數據會逐步緩存在內存中,以最低的成本滿足業務需求。
在線教育類
在線教育類的場景,有大量的課程、題庫、師生交流信息等數據,通常只有熱門課程、最新題庫題庫會被頻繁訪問; 使用 Redis 混合存儲型,將大量的課程信息存儲到磁盤,活躍的課程、題庫信息會換入到內存并常駐內存,保證高頻訪問數據的性能,實現性能與存儲成本的平衡。
其他場景
其他數據訪問有明顯冷熱特性,對性能要求不高的場景均可使用Redis混合存儲來降低存儲成本。
原文鏈接
本文為云棲社區原創內容,未經允許不得轉載。
總結
以上是生活随笔為你收集整理的Redis 混合存储最佳实践指南的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于函数计算的 Serverless A
- 下一篇: 高可用 kubernetes 集群部署实