欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

深入理解Redis BigKey

 更新時間:2025年02月28日 09:43:21   作者:潛水的碼不二  
本文主要介紹了Redis中的BigKey問題及其處理方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

MoreKey

大批量往redis里面插入2000W測試數(shù)據(jù)key

  • LinuxBash下面執(zhí)行,插入100w數(shù)據(jù)腳本
# 生成100W條redis批量設(shè)置kv的語句(key=kn,value=vn)寫入到/tmp目錄下的redisTest.txt文件中

for((i=1;i<=100*10000;i++)); 
do echo "set k$i v$i" >> /tmp/redisTest.txt ;
done;
  • 通過Redis提供的管道–pipe命令插入100W大批量數(shù)據(jù)

結(jié)合自己機(jī)器的地址:

cat /tmp/redisTest.txt | redis-cli -h 127.0.0.1 -p 6379 -a 111111 --pipe

請?zhí)砑訄D片描述

嘗試keys * 花費時間

請?zhí)砑訄D片描述

key * 這個指令有致命的弊端,在實際環(huán)境中最好不要使用

請?zhí)砑訄D片描述

生產(chǎn)上限制keys */flushdb/flushall等危險命令以防止誤刪誤用

通過配置設(shè)置禁用這些命令,redistribution。conf在SECURITY這一項中

請?zhí)砑訄D片描述

請?zhí)砑訄D片描述

SCAN命令

1.語法

請?zhí)砑訄D片描述

2.特點

? Redis Scan命令基本語法如下:

SCAN cursor [MATCH pattern] [COUNT count]

? cursor -游標(biāo)

? pattern -匹配的模式

? count -指定從數(shù)據(jù)集里返回多少元素,默認(rèn)值為10。

SCAN 命令是一個基于游標(biāo)的迭代器,每次被調(diào)用之后, 都會向用戶返回一個新的游標(biāo), 用戶在下次迭代時需要使用這個新游標(biāo)作為 SCAN 命令的游標(biāo)參數(shù), 以此來延續(xù)之前的迭代過程。

SCAN 返回一個包含兩個元素的數(shù)組,

第一個元素是用于進(jìn)行下一次迭代的新游標(biāo),

第二個元素則是一個數(shù)組, 這個數(shù)組中包含了所有被迭代的元素。如果新游標(biāo)返回零表示迭代已結(jié)束。

SCAN的遍歷順序

非常特別,它不是從第一維數(shù)組的第零位一直遍歷到末尾,而是采用了高位進(jìn)位加法來遍歷。之所以使用這樣特殊的方式進(jìn)行遍歷,是考慮到字典的擴(kuò)容和縮容時避免槽位的遍歷重復(fù)和遺漏。

3.使用

請?zhí)砑訄D片描述

BigKey

多大算Big

參考《阿里云Redis開發(fā)規(guī)范》

請?zhí)砑訄D片描述

string和二級結(jié)構(gòu)

string是value,最大512MB但是≥10KB就是bigkey

list、hash、set和zset,個數(shù)超過5000就是bigkey

? List:一個列表最多可以包含2^32-1個元素(4294967295,每個列表超過40億個元素)。

? hash:Redis中每個hash可以存儲2^32-1鍵值對(40多億)

? set:集合中最大的成員數(shù)為2^32-1 (4294967295,每個集合可存儲40多億個成員)。

? …

危害

1.內(nèi)存不均,集群遷移困難

2.超時刪除,大key刪除作梗

3.網(wǎng)絡(luò)流量阻塞

找出BigKey

redis-cli --bigkeys

好處

給出每種數(shù)據(jù)結(jié)構(gòu)Top 1 bigkey,同時給出每種數(shù)據(jù)類型的鍵值個數(shù)+平均大小

不足

想查詢大于10kb的所有key,–bigkeys參數(shù)就無能為力了,需要用到memory usage來計算每個鍵值的字節(jié)數(shù)

redis-cli --bigkeys -a 111111

redis-cli -h 127.0.0.1 -p 6379 -a 111111 --bigkeys
每隔 100 條 scan 指令就會休眠 0.1s,ops 就不會劇烈抬升,但是掃描的時間會變長redis-cli -h 127.0.0.1 -p 7001 –-bigkeys -i 0.1

請?zhí)砑訄D片描述

MEMORY USAGE 鍵

請?zhí)砑訄D片描述

如何刪除

請?zhí)砑訄D片描述

String

一般用del,如果過于龐大unlink

hash

使用hscan每次獲取少量field-value,再使用hdel刪除每個field

請?zhí)砑訄D片描述

請?zhí)砑訄D片描述

list

使用ltrim漸進(jìn)式逐步刪除,直到全部刪除完成

請?zhí)砑訄D片描述

請?zhí)砑訄D片描述

set

使用sscan每次獲取部分元素,再使用srem命令刪除每個元素

請?zhí)砑訄D片描述

Zset

使用zscan每次獲取部分元素,再使用ZREMRANGEBYRANK命令刪除每個元素

請?zhí)砑訄D片描述

BigKey生產(chǎn)調(diào)優(yōu)

redis.conf配置文件LAZY FREEING相關(guān)說明

阻塞和非阻塞刪除命令

請?zhí)砑訄D片描述

優(yōu)化配置

請?zhí)砑訄D片描述

到此這篇關(guān)于深入理解Redis BigKey的文章就介紹到這了,更多相關(guān)Redis BigKey內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • 解讀緩存db redis local的取舍之道

    解讀緩存db redis local的取舍之道

    這篇文章主要介紹了解讀緩存db redis local的取舍之道,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • Redis中Scan命令的基本使用教程

    Redis中Scan命令的基本使用教程

    這篇文章主要給大家介紹了關(guān)于Redis中Scan命令的基本使用教程,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Redis具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • 簡單粗暴的Redis數(shù)據(jù)備份和恢復(fù)方法

    簡單粗暴的Redis數(shù)據(jù)備份和恢復(fù)方法

    這里我們來講解一個簡單粗暴的Redis數(shù)據(jù)備份和恢復(fù)方法,有一個在不同主機(jī)上遷移Redis數(shù)據(jù)的示例,還有一個備份腳本實現(xiàn)的關(guān)鍵點提示,一起來看一下:
    2016-06-06
  • Redis的持久化方案詳解

    Redis的持久化方案詳解

    在本篇文章里小編給大家整理的是關(guān)于Redis的持久化方案詳解,有興趣的朋友們可以參考下。
    2020-03-03
  • 詳解Redis如何處理Hash沖突

    詳解Redis如何處理Hash沖突

    在 Redis 中,哈希表是一種常見的數(shù)據(jù)結(jié)構(gòu),通常用于存儲對象的屬性,對于哈希表,最常遇到的是哈希沖突,那么,當(dāng) Redis遇到Hash沖突會如何處理?本文我們將詳細(xì)介紹Redis如何處理哈希沖突,需要的朋友可以參考下
    2024-09-09
  • 利用redis lua腳本實現(xiàn)時間窗分布式限流

    利用redis lua腳本實現(xiàn)時間窗分布式限流

    Lua是一種輕量小巧的腳本語言,Redis是高性能的key-value內(nèi)存數(shù)據(jù)庫,在部分場景下,是對關(guān)系數(shù)據(jù)庫的良好補(bǔ)充,本文給大家介紹了如何利用redis lua腳本實現(xiàn)時間窗分布式限流,需要的朋友可以參考下
    2024-03-03
  • 深入理解Redis7哨兵模式(保姆級教學(xué))

    深入理解Redis7哨兵模式(保姆級教學(xué))

    Redis的主從復(fù)制存在一定的缺陷,為了解決這一問題,Redis官方推薦一種高可用方案哨兵模式,本文主要介紹了深入理解Redis7哨兵模式,具有一定的參考價值,感興趣的可以了解一下
    2024-01-01
  • redis分布式鎖實現(xiàn)示例

    redis分布式鎖實現(xiàn)示例

    本文主要介紹了redis分布式鎖實現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-11-11
  • IDEA中的Redis插件連接Redis服務(wù)器

    IDEA中的Redis插件連接Redis服務(wù)器

    本文主要介紹了IDEA中的Redis插件連接Redis服務(wù)器,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • redis實現(xiàn)分布式全局唯一id的示例代碼

    redis實現(xiàn)分布式全局唯一id的示例代碼

    在某些場景中,我們需要生成全局的唯一ID,本文主要介紹了redis實現(xiàn)分布式全局唯一id的示例代碼,具有一定的參考價值,感興趣的可以了解一下
    2024-04-04

最新評論