redis之大key bigkeys

######################

 

 

 发现大keys:

复制代码
[work@a8-dba-cloud-db00.wh cdrom]$ ./redis_7001/bin/redis-cli  -a jJAV0kTokNb8iZvwfqniCxmFZEsbOH5n   -c   --bigkeys  -p 7001 -h 192.168.31.33
Warning: 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 '"mykey84336"' with 5 bytes
[00.00%] Biggest list   found so far '"mylist170898"' with 1 items
[00.00%] Biggest hash   found so far '"obj135479"' with 1 fields
[00.00%] Biggest string found so far '"mykey345061"' with 6 bytes
[02.00%] Biggest list   found so far '"mylist"' with 410013 items
[25.94%] Biggest hash   found so far '"obj"' with 410014 fields

-------- summary -------

Sampled 615176 keys in the keyspace!
Total key length in bytes is 6395083 (avg len 10.40)

Biggest   list found '"mylist"' has 410013 items
Biggest   hash found '"obj"' has 410014 fields
Biggest string found '"mykey345061"' has 6 bytes

205144 lists with 615156 items (33.35% of keys, avg size 3.00)
205110 hashs with 615123 fields (33.34% of keys, avg size 3.00)
204922 strings with 1173982 bytes (33.31% of keys, avg size 5.73)
0 streams with 0 entries (00.00% of keys, avg size 0.00)
0 sets with 0 members (00.00% of keys, avg size 0.00)
0 zsets with 0 members (00.00% of keys, avg size 0.00)
复制代码

 

解决大keys:

  • 当Redis版本大于4.0时,可使用UNLINK命令安全地删除大Key,该命令能够以非阻塞的方式,逐步地清理传入的Key;
  • 当Redis版本小于4.0时,避免使用阻塞式命令KEYS,而是建议通过SCAN命令执行增量迭代扫描key,然后判断进行删除。
  • 当vaule是string时,比较难拆分,则使用序列化、压缩算法将key的大小控制在合理范围内,但是序列化和反序列化都会带来更多时间上的消耗;
  • 当value是string,压缩之后仍然是大key,则需要进行拆分,一个大key分为不同的部分,记录每个部分的key,使用multiget等操作实现事务读取;
  • 当value是list/set等集合类型时,根据预估的数据规模来进行分片,不同的元素计算后分到不同的片。




 

 

 

 

 

 

 

 

 

 

 

 

######################

posted @   igoodful  阅读(107)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示