> 文章列表 > 8.redis-BigKey

8.redis-BigKey

8.redis-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