redis大key问题
文档
官方文档
说明
- redis版本:7.0.0
redis大key问题
安装redis
- 以单机版redis为例,安装redis参考文档:redis单机安装
什么是大key
- 大key并不是说key的本身,而是说value
- 《阿里云Redis开发规范》约定,String类型控制在10kb以内,hash、list、set、zset元素个数不要超过5000
- String的value,最大512MB,但是大于10kb就是大key
如何发现大key
-
连接
redis-cli添加--bigkeys参数,可以列出每种类型最大的key,以及每种类型key的个数和平均大小命令:
shellcd /opt/module/redis/bin ./redis-cli -a 123456 --bigkeys返回信息:
propertiesWarning: Using a password with '-a' or '-u' option on the command line interface may not be safe. # 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 string found so far '"k102211"' with 7 bytes [00.86%] Biggest list found so far '"list1"' with 3 items [18.00%] Biggest set found so far '"set1"' with 3 members [45.00%] Biggest string found so far '"k1000000"' with 8 bytes [57.52%] Biggest zset found so far '"zset1"' with 5 members [100.00%] Sampled 1000000 keys so far -------- summary ------- Sampled 1000003 keys in the keyspace! Total key length in bytes is 6888910 (avg len 6.89) Biggest list found '"list1"' has 3 items Biggest string found '"k1000000"' has 8 bytes Biggest set found '"set1"' has 3 members Biggest zset found '"zset1"' has 5 members 1 lists with 3 items (00.00% of keys, avg size 3.00) 0 hashs with 0 fields (00.00% of keys, avg size 0.00) 1000000 strings with 6888896 bytes (100.00% of keys, avg size 6.89) 0 streams with 0 entries (00.00% of keys, avg size 0.00) 1 sets with 3 members (00.00% of keys, avg size 3.00) 1 zsets with 5 members (00.00% of keys, avg size 5.00)- 返回信息提示,可以用
-i 0.1参数,使程序休眠 0.1 秒每100条SCAN命令(通常无需使用)。
- 返回信息提示,可以用
-
memory usage key命令,返回指定key占用多少子节内存命令:
shell127.0.0.1:6379> memory usage set1 (integer) 64
如何删除大key
- String类型,使用异步删除,
unlink - list、hash、set、zset类型,使用渐进式删除,即先删除里面的元素,再删除key本身
待补充