国产超清无码视频_中文字幕精品久久久人妻_亚洲综合久久成人AV_丰满少妇一级毛片试看一分钟

Redis大key
日期:2025年05月20日     新聞分類: 技術(shù)中心      瀏覽:452次

一、 什么是Redis大key

key存儲(chǔ)的value值非常大,當(dāng)value為哈希表、集合、有序集或鏈表時(shí)指存儲(chǔ)的元素過多(上萬(wàn))。

當(dāng)value為字符串時(shí)一般指單個(gè)字符串超過1M。

也包括Key數(shù)量極多的情況,例如key數(shù)量達(dá)到千萬(wàn)上億的規(guī)模

二、大key會(huì)有哪些問題

由于Redis主線程為單線程模型,大key也會(huì)帶來(lái)一些問題,如:

1、集群模式在slot分片均勻情況下,會(huì)出現(xiàn)數(shù)據(jù)和查詢傾斜情況,部分有大key的Redis節(jié)點(diǎn)占用內(nèi)存多,QPS高。

2、大key相關(guān)的刪除或者自動(dòng)過期時(shí),會(huì)出現(xiàn)qps突降或者突升的情況,極端情況下,會(huì)造成主從復(fù)制異常,Redis服務(wù)阻塞無(wú)法響應(yīng)請(qǐng)求。大key的體積與刪除耗時(shí)可參考下表:

key類型 field數(shù)量耗時(shí)

Hash  100萬(wàn)1000ms

List  100萬(wàn)1000ms

Set  100萬(wàn)1000ms

Sorted Set  100萬(wàn)1000ms

del命令刪除集合類象時(shí),時(shí)間復(fù)雜度為O(M),M為集合中元素個(gè)數(shù)

3、大key的操作,尤其是使用hgetall、lrange 0 -1、get、hmget 等操作時(shí),網(wǎng)卡可能會(huì)成為瓶頸

三、大key發(fā)現(xiàn)、刪除

Redis4.0前

1、redis-rdb-tools工具。redis實(shí)例上執(zhí)行bgsave,然后對(duì)dump出來(lái)的rdb文件進(jìn)行分析,找到其中的大KEY。

2、redis-cli --bigkeys命令??梢哉业侥硞€(gè)實(shí)例5種數(shù)據(jù)類型(String、hash、list、set、zset)的最大key。

--bigkeys給出了每種數(shù)據(jù)結(jié)構(gòu)的top 1 bigkey,同時(shí)給出了每種數(shù)據(jù)類型的鍵值個(gè)數(shù)以及平均大小

Redis 4.0后大key發(fā)現(xiàn)和刪除

memory usage命令和lazyfree機(jī)制

memory usage: 抽樣統(tǒng)計(jì)key大小

[root@*** ~]# > MEMORY USAGE key值

lazyfree機(jī)制:在刪除的時(shí)候只進(jìn)行邏輯刪除,把key釋放操作放在bio(Background I/O)單獨(dú)的子線程處理中,減少刪除大key對(duì)redis主線程的阻塞

當(dāng)刪除key滿足閾值條件時(shí),會(huì)將key放入BIO_LAZY_FREE后臺(tái)線程任務(wù)隊(duì)列

lazyfree有兩種方式

1.主動(dòng)刪除

使用UN命令,集合個(gè)數(shù)大于64個(gè)后采用后臺(tái)線程刪除

2.被動(dòng)刪除

需要做配置,默認(rèn)是關(guān)閉的

lazyfree-lazy-eviction 達(dá)到最大內(nèi)存淘汰時(shí)

lazyfree-lazy-expire 過期鍵刪除策略

lazyfree-lazy-server-del 針對(duì)有些指令在處理已存在的鍵時(shí),會(huì)帶有一個(gè)隱式的DEL鍵的操作。如rename命令,當(dāng)目標(biāo)鍵已存在,redis會(huì)先刪除目標(biāo)鍵

slave-lazy-flush 針對(duì)slave進(jìn)行全量數(shù)據(jù)同步,slave在加載master的RDB文件前,會(huì)運(yùn)行flushall來(lái)清理自己的數(shù)據(jù)場(chǎng)景

四、大key處理方式

哈希、集合、有序集合、鏈表中元素?cái)?shù)量過多

拆分多個(gè)小集合,比如使用key計(jì)算出一個(gè)hash值,然后存到 key+hash值對(duì)應(yīng)的value中

存儲(chǔ)的key過多

減少key個(gè)數(shù)可以減少對(duì)內(nèi)存的消耗,可以參考hash結(jié)構(gòu)存儲(chǔ),將多個(gè)key存儲(chǔ)在一個(gè)hash結(jié)構(gòu)中。

字符串類型單key的value過大

將value拆分,降低單次操作的對(duì)服務(wù)端帶來(lái)壓力

Redis其他

redis可以存多少key

redis最多可以處理 2^32個(gè)可以,每個(gè)實(shí)例可以處理2.5億

每個(gè)哈希、列表、集合最多可容納2^32

Redis內(nèi)存占用

●一個(gè)空實(shí)例將使用約3MB的內(nèi)存。

●1百萬(wàn)個(gè)小鍵->字符串值對(duì)使用?85MB的內(nèi)存。

1百萬(wàn)個(gè)鍵->哈希值,代表具有5個(gè)字段的對(duì)象,使

版權(quán)所有: 山西科達(dá)自控股份有限公司 備案號(hào):晉ICP備09004627號(hào)-2   

郵箱

keda@sxkeda.com

電話

400-0351-150

微信

專屬
客服

留言

右側(cè)導(dǎo)航