Redis Redis 熱 Key解決方案

2022-09-29 15:21:18 字數 1325 閱讀 3359

什麼是redis熱key。

我們知道redis單機讀寫理論值是讀的速度是110000次/s,寫的速度是81000次/s。reidis 熱key就是指類似微博熱門事件、秒殺的商品,短時間大量的請求訪問同乙個key。

可能導致的問題有:1、二級快取

根據業務判斷把指定的熱key,在服務本地儲存乙份。降低redis壓力。

//本地快取初始化以及構造

private static loadingcache> configcache

= cachebuilder.newbuilder()

.concurrencylevel(8) //併發讀寫的級別,建議設定cpu核數

.expireafterwrite(10, timeunit.seconds) //寫入資料後多久過期

.initialcapacity(10) //初始化cache的容器大小

.maximumsize(10)//cache的容器最大

.recordstats()

// build方法中可以指定cacheloader,在快取不存在時通過cacheloader的實現自動載入快取

.build(new cacheloader>()

});//本地快取獲取

object result = configcache.get(key);

使用本地快取則存在以下問題:需要提前獲知熱點

快取容量有限

不一致性時間增長

熱點 key 遺漏

2、對key拆分

將熱key拆分成多份,使其均勻分布在每個redis-cluster上,每個服務獲取到熱key拆分的key集合,根據服務的ip或mac位址做hash,之後的值與拆key的數量做取餘,獲取到key的字尾。

3、整合解決方法

目前市面上已經有了不少關於hotkey相對完整的應用級解決方案,其中京東在這方面有開源的hotkey工具,原理就是在client端做洞察,然後上報對應hotkey,server端檢測到後,將對應hotkey下發到對應服務端做本地快取,並且這個本地快取在遠端對應的key更新後,會同步更新,已經是目前較為成熟的自動探測熱key、分布式一致性快取解決方案,京東零售熱key。

參考:

Redis中大key問題,熱key問題的解決方案

遇到大key 熱key問題,主要是去拆分 大key問題 業務場景中經常會有各種大key的情況,比如 1.單個簡單的key儲存的value很大 例如排行榜資訊,key是固定的,value排行榜幾十萬的資料 2.hash set zset list中儲存過多的元素 以萬為單位 由於redis是單執行緒執...

redis的大key和熱key問題

redis的大key和熱key實際上就是經常被訪問的key或者占用空間比較大的key。有什麼影響?舉個栗子,比如說某個明星出軌了,這個明星的搜尋量就會暴增,對redis造成很大的衝擊。redis檢視大key命令 redis cli bigkeys redis檢視熱key命令 redis cli ho...

Redis為什麼快,熱key解決

redis的速度非常的快,單機的redis就可以支撐每秒10幾萬的併發,相對於mysql來說,效能是mysql的幾十倍。速度快的原因主要有幾點 完全基於記憶體操作 c語言實現,優化過的資料結構,基於幾種基礎的資料結構,redis做了大量的優化,效能極高 使用單執行緒,無上下文的切換成本 基於非阻塞的...