redis大key问题
文档
官方文档
下载地址
说明
- 版本选择:
redis-7.0.0.tar.gz - 下载地址:https://download.redis.io/releases/redis-7.0.0.tar.gz
redis大key问题
安装redis
- 以单机版redis为例,安装redis参考文档:redis单机安装
生成100万条string类型的测试数据
-
生成100万条string类型的测试数据
shellfor((i=1;i<=100*10000;i++)); do echo "set k$i v$i" >> redisTest.txt; done; cat redisTest.txt | ../bin/redis-cli -p 6379 -a 123456 --pipe
生成string类型的大key
-
包含5万字符
shellecho "SET big:string:5w $(printf 'x%.0s' {1..50000})" > string_5w.txt; cat string_5w.txt | ../bin/redis-cli -p 6379 -a 123456 --pipe -
包含10万字符
shellecho "SET big:string:10w $(printf 'x%.0s' {1..100000})" > string_10w.txt; cat string_10w.txt | ../bin/redis-cli -p 6379 -a 123456 --pipe -
包含50万字符
shell# 生成5个文件,每个包含10万字符的APPEND命令 for file_num in {1..5}; do echo "APPEND big:string:50w $(printf 'x%.0s' {1..100000})" > string_50w_$file_num.txt done; # 先初始化空key echo "SET big:string:50w ''" | ../bin/redis-cli -p 6379 -a 123456 --pipe # 依次执行5个文件 cat string_50w_1.txt | ../bin/redis-cli -p 6379 -a 123456 --pipe cat string_50w_2.txt | ../bin/redis-cli -p 6379 -a 123456 --pipe cat string_50w_3.txt | ../bin/redis-cli -p 6379 -a 123456 --pipe cat string_50w_4.txt | ../bin/redis-cli -p 6379 -a 123456 --pipe cat string_50w_5.txt | ../bin/redis-cli -p 6379 -a 123456 --pipe
生成hash类型的大key
-
包含5万键值对
shellfor((i=1;i<=50000;i++)); do echo "HSET big:hash:5w field_$i value_$i" >> hash_5w.txt; done; cat hash_5w.txt | ../bin/redis-cli -p 6379 -a 123456 --pipe -
包含10万键值对
shellfor((i=1;i<=100000;i++)); do echo "HSET big:hash:10w field_$i value_$i" >> hash_10w.txt; done; cat hash_10w.txt | ../bin/redis-cli -p 6379 -a 123456 --pipe -
包含50万键值对
shellfor((i=1;i<=500000;i++)); do echo "HSET big:hash:50w field_$i value_$i" >> hash_50w.txt; done; cat hash_50w.txt | ../bin/redis-cli -p 6379 -a 123456 --pipe
生成list类型的大key
-
包含5万元素
shellfor((i=1;i<=50000;i++)); do echo "RPUSH big:list:5w item_$i" >> list_5w.txt; done; cat list_5w.txt | ../bin/redis-cli -p 6379 -a 123456 --pipe -
包含10万元素
shellfor((i=1;i<=100000;i++)); do echo "RPUSH big:list:10w item_$i" >> list_10w.txt; done; cat list_10w.txt | ../bin/redis-cli -p 6379 -a 123456 --pipe -
包含50万元素
shellfor((i=1;i<=500000;i++)); do echo "RPUSH big:list:50w item_$i" >> list_50w.txt; done; cat list_50w.txt | ../bin/redis-cli -p 6379 -a 123456 --pipe
生成set类型的大key
-
包含5万成员
shellfor((i=1;i<=50000;i++)); do echo "SADD big:set:5w member_$i" >> set_5w.txt; done; cat set_5w.txt | ../bin/redis-cli -p 6379 -a 123456 --pipe -
包含10万成员
shellfor((i=1;i<=100000;i++)); do echo "SADD big:set:10w member_$i" >> set_10w.txt; done; cat set_10w.txt | ../bin/redis-cli -p 6379 -a 123456 --pipe -
包含50万成员
shellfor((i=1;i<=500000;i++)); do echo "SADD big:set:50w member_$i" >> set_50w.txt; done; cat set_50w.txt | ../bin/redis-cli -p 6379 -a 123456 --pipe
生成zset类型的大key
-
包含5万成员
shellfor((i=1;i<=50000;i++)); do echo "ZADD big:zset:5w $i member_$i" >> zset_5w.txt; done; cat zset_5w.txt | ../bin/redis-cli -p 6379 -a 123456 --pipe -
包含10万成员
shellfor((i=1;i<=100000;i++)); do echo "ZADD big:zset:10w $i member_$i" >> zset_10w.txt; done; cat zset_10w.txt | ../bin/redis-cli -p 6379 -a 123456 --pipe -
包含50万成员
shellfor((i=1;i<=500000;i++)); do echo "ZADD big:zset:50w $i member_$i" >> zset_50w.txt; done; cat zset_50w.txt | ../bin/redis-cli -p 6379 -a 123456 --pipe
命令行查看
-
查看string类型key的value包含的字符数
shell# 命令: STRLEN <key> ../bin/redis-cli -p 6379 -a 123456 STRLEN big:string:5w ../bin/redis-cli -p 6379 -a 123456 STRLEN big:string:10w ../bin/redis-cli -p 6379 -a 123456 STRLEN big:string:50w -
查看hash类型key的value包含的键值对数
shell# 命令: HLEN <key> ../bin/redis-cli -p 6379 -a 123456 HLEN big:hash:5w ../bin/redis-cli -p 6379 -a 123456 HLEN big:hash:10w ../bin/redis-cli -p 6379 -a 123456 HLEN big:hash:50w -
查看list类型key的value包含的元素数
shell# 命令: LLEN <key> ../bin/redis-cli -p 6379 -a 123456 LLEN big:list:5w ../bin/redis-cli -p 6379 -a 123456 LLEN big:list:10w ../bin/redis-cli -p 6379 -a 123456 LLEN big:list:50w -
查看set类型key的value包含的成员数
shell# 命令: SCARD <key> ../bin/redis-cli -p 6379 -a 123456 SCARD big:set:5w ../bin/redis-cli -p 6379 -a 123456 SCARD big:set:10w ../bin/redis-cli -p 6379 -a 123456 SCARD big:set:50w -
查看zset类型key的value包含的成员数
shell# 命令: ZCARD <key> ../bin/redis-cli -p 6379 -a 123456 ZCARD big:zset:5w ../bin/redis-cli -p 6379 -a 123456 ZCARD big:zset:10w ../bin/redis-cli -p 6379 -a 123456 ZCARD big:zset:50w -
查看每种类型最大的key
shell../bin/redis-cli -a 123456 --bigkeys -
查看某个key占用的字节数
shell../bin/redis-cli -a 123456 memory usage big:string:50wMEMORY USAGE返回的是 Redis 为该 key 分配的总内存,包括元数据、结构开销和碎片,因此会大于纯 value 的字节数
-
查看key的总数
shell../bin/redis-cli -a 123456 dbsize
参考资料
注意事项
- 部分内容由AI生成
- 如有不对,欢迎指正!!!