redis一些面試題
來自?https://www.bilibili.com/video/BV13R4y1v7sP?p=104
1 阿里廣告平臺(tái),海量數(shù)據(jù)里查詢某一固定前綴的key
海量數(shù)據(jù)情況下不得使用 keys* 可以使用scan命令
語法

scan命令?

特點(diǎn)

使用

2 小紅書,你如何生產(chǎn)上限制keys */flushdb/flushall等危險(xiǎn)命令以防止誤刪誤用?
通過配置設(shè)置禁用這些命令,redis.conf在SECURITY這一項(xiàng)中

這樣,keys * 就沒用了
flushdb,flushall也沒用了
3 美團(tuán),MEMORY USAGE命令你用過嗎?
用過 該命令是用來查看某個(gè)key在內(nèi)存中占用大小的命令,返回結(jié)果以字節(jié)為單位
4 BigKey問題,多大算big?你如何發(fā)現(xiàn)?如何刪除?如何處理?
多大算big?

string類型的key占用內(nèi)存大于10kb就是大key,hash,list,set,zset的元素個(gè)數(shù)超過5000算大key
你如何發(fā)現(xiàn)?
可以使用redis-cli --bigkeys 在進(jìn)入redis的時(shí)候會(huì)遍歷,幫我們們發(fā)現(xiàn)bigkey,也可以使用memory usage 查看key在內(nèi)存中占用的大小,單位是字節(jié)

如何刪除?
string 刪除 一般用del 如果過于龐大用 unlink
hash類型數(shù)據(jù)可以先刪除元素,再刪除key,其他類型同理,先砍樹干,再砍樹根




5 BigKey你做過調(diào)優(yōu)嗎?惰性釋放lazyfree了解過嗎?

解決方案:

6 Morekey問題,生產(chǎn)上redis數(shù)據(jù)庫(kù)有1000w記錄,你如何遍歷? key *可以嗎?
同第一題