目錄
MoreKey案例
測試數(shù)據(jù)
如何向redis數(shù)據(jù)庫中一次性的插入100W條數(shù)據(jù)
如何將 100W條數(shù)據(jù)一次性寫入redis數(shù)據(jù)庫中
遍歷百萬、千萬級別數(shù)據(jù)能否使用keys *?
生產(chǎn)上如何限制keys *、flushdb、flushall等危險命令?
不使用keys *使用什么遍歷?
使用scan命令——用于迭代數(shù)據(jù)庫中的數(shù)據(jù)庫鍵
BigKey案例
多大算Big?
如何發(fā)現(xiàn)BigKey?
--Bigkeys命令
memory usage
?如何刪除BigKey?
BigKey生產(chǎn)調(diào)優(yōu)
MoreKey案例
測試數(shù)據(jù)
如何向redis數(shù)據(jù)庫中一次性的插入100W條數(shù)據(jù)
生成100W條redis批量設置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;
如何將 100W條數(shù)據(jù)一次性寫入redis數(shù)據(jù)庫中
利用redis提供的管道命令 -pipe插入100W條數(shù)據(jù)
cat /tmp/redisTest.txt | redis-cli -h 本地主機 -p 端口號 -a 密碼?--pipe
遍歷百萬、千萬級別數(shù)據(jù)能否使用keys *?
key * 這個指令有致命的弊端,在實際環(huán)境中最好不要使用
keys*這個指令相當于一次性吐出所有key,由于redis是單線程的,所有的操作都是原子性的,keys算法屬于遍歷算法,時間復雜度是O(n),在實際生產(chǎn)環(huán)境中如果執(zhí)行該指令,可能會導致redis服務卡頓,更嚴重的可能會導致redis緩存雪崩或者數(shù)據(jù)庫宕機宕機
生產(chǎn)上如何限制keys *、flushdb、flushall等危險命令?
通過修改redis.conf配置文件
?(ps:記得重啟redis)
(pps:如果aof及rdb文件中包含了禁用掉的命令,redis會啟動失敗,需要刪除對應aof及rdb文件)
不使用keys *使用什么遍歷?
使用scan命令——用于迭代數(shù)據(jù)庫中的數(shù)據(jù)庫鍵
?語法:
SCAN cursor [MATCH pattern] [COUNT count]
-cursor:游標
-pattern:匹配的模式
-count:指定從數(shù)據(jù)集中返回多少元素,默認為10
BigKey案例
大key問題本質(zhì)上是key對應的value大
多大算Big?
--String是value,最大512M但是超過10kb就是BigKey
--list、set、hash、zset個數(shù)超過5000就算是BigKey
如何發(fā)現(xiàn)BigKey?
--Bigkeys命令
redis-cli -h 本地主機名 -p 端口號?-a 密碼? --bigkeys
給出每種數(shù)據(jù)結(jié)構(gòu)Top 1 bigkey,同時給出每種數(shù)據(jù)類型的鍵值個數(shù)+平均大小,但不能查詢到大于10kb的所有key
memory usage
?memory usage key
?如何刪除BigKey?
參考《阿里云Redis開發(fā)規(guī)范》
BigKey生產(chǎn)調(diào)優(yōu)
redis.conf優(yōu)化配置文章來源:http://www.zghlxwxcb.cn/news/detail-426350.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-426350.html
到了這里,關(guān)于Redis——BigKey問題的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!