redis使用過程中經常會有各種大key的情況, 比如:
由於redis是單執行緒執行的,如果一次操作的value很大會對整個redis的響應時間造成負面影響,所以,業務上能拆則拆,下面舉幾個典型的分拆方案。
1、單個簡單的key儲存的value很大
1.1、 改物件需要每次都整存整取
可以嘗試將物件分拆成幾個key-value, 使用multiget獲取值,這樣分拆的意義在於分拆單次操作的壓力,將操作壓力平攤到多個redis例項中,降低對單個redis的io影響;
1.2、該物件每次只需要訪問部分資料
可以像第一種做法一樣,分拆成幾個key-value, 也可以將這個儲存在乙個hash中,每個field代表乙個具體的屬性,使用hget,hmget來獲取部分的value,使用hset,hmset來更新部分屬性
2、 hash, set,zset,list 中儲存過多的元素
類似於場景一種的第乙個做法,可以將這些元素分拆。
以hash為例,原先的正常訪問流程是 hget(hashkey, field) ; hset(hashkey, field, value)
現在,固定乙個桶的數量,比如 10000, 每次訪問的時候,先在本地計算field的hash值,模除 10000, 確定了該field落在哪個key上。
newhashkey = hashkey + (*hash*(field) % 10000);
hset (newhashkey, field, value) ;
hget(newhashkey, field)
set, zset, list 也可以類似上述做法.
但有些不適合的場景,比如,要保證 lpop 的資料的確是最早push到list中去的,這個就需要一些附加的屬性,或者是在 key的拼接上做一些工作(比如list按照時間來分拆)
匯出匯出redis裡面的key值
匯出redis3.0集群查詢key的值 echo hget stockcodekey 1 600284 data redis3.0 bin79 redis cli c data redis3.0 bin79 xcc.txt使用redic cli匯入的兩種方法 有興趣看原文的,參見 語法 redis ...
Redis熱點大Key的優化過程
對於電商 中,我們經常可以會遇到熱門商品的搶購或者秒殺場景以及事先經過廣告投放等措施進行定向引流,這樣就會導致某個熱賣商品在短時間內湧入大量流量。比如,雙十一期間某些熱門商品的降價 當這其中的某一件商品被數萬次點選瀏覽或者購買時,會形成乙個較大的需求量,這種情況下就會造成熱點問題。熱點key產生問題...
Redis雪崩 穿透 熱點key等優化
請求cache拿不到資料,就會去儲存層拿,會一直請求資料。導致後端打崩。1.快取層快取空值,增加過期時間 2.布隆過濾器 快取雪崩就是指快取由於某些原因,整體crash掉了,導致大量請求到達後端資料庫,從而導致資料庫崩潰。如 1.某個時間點內,系統預載入的快取週期性集中失效了 設定快取n 隨機數過期...