本文共 2049 字,大约阅读时间需要 6 分钟。
工作中,经常有些Redis实例使用不恰当,或者对业务预估不准确,或者key没有及时进行处理等等原因,导致某些KEY相当大。
那么大Key会带来哪些问题呢?有以下几种办法可以知道某个Redis实例是否存在大key:
redis-cli 提供一个bigkeys参数,可以扫描redis中的大key
执行命令:
redis-cli --bigkeys -i 0.1 -- 每扫描100个key休息0.1秒
# Scanning the entire keyspace to find biggest keys as well as # average sizes per key type. You can use -i 0.1 to sleep 0.1 sec # per 100 SCAN commands (not usually needed). [00.00%] Biggest zset found so far 'testzset' with 129 members ------列出名为testzset的zset结构下面有129个元素 [00.00%] Biggest hash found so far 'h2' with 513 fields [00.00%] Biggest set found so far 'si1' with 5 members [00.00%] Biggest hash found so far 'h4' with 514 fields [00.00%] Biggest string found so far 'key' with 9 bytes -------- summary ------- Sampled 9 keys in the keyspace! Total key length in bytes is 27 (avg len 3.00) Biggest string found 'key' has 9 bytes Biggest set found 'si1' has 5 members Biggest hash found 'h4' has 514 fields Biggest zset found 'testzset' has 129 members 1 strings with 9 bytes (11.11% of keys, avg size 9.00) 0 lists with 0 items (00.00% of keys, avg size 0.00) 2 sets with 8 members (22.22% of keys, avg size 4.00) 4 hashs with 1541 fields (44.44% of keys, avg size 385.25) 2 zsets with 132 members (22.22% of keys, avg size 66.00) 0 streams with 0 entries (00.00% of keys, avg size 0.00)
原理比较简单,使用scan命令去遍历所有的键,对每个键根据其类型执行"STRLEN","LLEN","SCARD","HLEN","ZCARD"这些命令获取其长度或者元素个数。
该方法有两个缺点:
转载地址:http://dzesn.baihongyu.com/