一.BigKey
1.海量数据里如何查询某一固定前缀的key
scan cursor match key* [COUNT count]
2.如何限制keys *, flushdb,flushall等危险命令防止误删除
rename-command keys ""
rename-command flushdb ""
rename-command flushall ""
3.memory usage 命令做什么用
1) 计算每个key占的字节数
2) memory usage key1 [samples 5]
4.Bigkey多大算大?如何发现,如何删除,如何处理
1) 多大算大:字符串不能超10K, hash,list,set,zset不能超5000条
2) 如何发现:
redis-cli -a 111111 -h 127.0.0.1 -p 6379 --bigkeys
# 每隔100条休眠0.1秒,防止剧烈抬升
redis-cli -a 111111 -h 127.0.0.1 -p 6379 --bigkeys -l 0.1
memory usage
3) 如何删除:非字符串的bigkey,不要使用del删除,使用hsacn,sscan,zset渐进删除,同时要注意防止bigkey过期的自动删除,内存不均,集群迁移困难,超时删除,网络阻塞
string: 用del,unlink
hash: hscan + hdel
list: 使用ltrim + del
set: sscan + srem删除
zset: zscan + zremrangebyrank
5.Bigkey调优,懒性释放lazyfree
lazyfree-lazy-server-del yes
replica-lazy-flush no yes
lazyfree-lazy-user-del yes
6.Morekey生产上redis数据库有1000w记录,如何遍历
1) 插入1000万条测试key
for((i=1;i<=100*10000;i++)); do echo "set k$i v$i" >> /tmp/redisTest.txt; done;
2) 导入到redis
cat /tmp/redisTest.txt | redis-cli -h 127.0.0.1 -p 6379 -a 111111 --pipe
3) 查看数量
dbsize
4) 不用keys,用scan
scan 0 math key1 count 10
文章介绍了在Redis中处理大数据量键值的方法,包括使用SCAN命令查询前缀键,限制并重命名危险命令以防止误删除,以及MemoryUsage命令的用途。讨论了什么是BigKey,如何发现和删除它们,推荐使用惰性释放(lazyfree)进行优化,并提供了遍历大量记录的示例。此外,还提到了针对不同数据结构的删除策略。
626

被折叠的 条评论
为什么被折叠?



