在 Redis 中找到最大对象的最简单方法是什么? [英] What is the easiest way to find the biggest objects in Redis?

查看:71
本文介绍了在 Redis 中找到最大对象的最简单方法是什么?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个 20GB 以上的 rdb 转储在生产中.我怀疑有一组特定的键使它膨胀.我想有一种方法可以始终从静态转储分析中找出前 100 个最大的对象,或者将其发送给服务器本身,顺便说一下,它有 7M 个对象.

I have a 20GB+ rdb dump in production. I suspect there's a specific set of keys bloating it. I'd like to have a way to always spot the first 100 biggest objects from static dump analysis or ask it to the server itself, which by the way has ove 7M objects.

像 rdbtools 这样的转储分析工具在这个(我认为)非常常见的用例中没有帮助!

Dump analysis tools like rdbtools are not helpful in this (I think) really common use case!

我正在考虑编写一个脚本并使用redis-cli 调试对象"迭代整个键集,但我感觉一定是缺少某些工具.

I was thinking to write a script and iterate the whole keyset with "redis-cli debug object", but I have the feeling there must be some tool I'm missing.

推荐答案

redis-cli 添加了一个选项:redis-cli --bigkeys

An option was added to redis-cli: redis-cli --bigkeys

基于 https://gist.github.com/michael-grunder/9257326 的示例输出>

Sample output based on https://gist.github.com/michael-grunder/9257326

$ ./redis-cli --bigkeys

# Press ctrl+c when you have had enough of it... :)
# You can use -i 0.1 to sleep 0.1 sec every 100 sampled keys
# in order to reduce server load (usually not needed).

Biggest string so far: day:uv:483:1201737600, size: 2
Biggest string so far: day:pv:2013:1315267200, size: 3
Biggest string so far: day:pv:3:1290297600, size: 5
Biggest zset so far: day:topref:2734:1289433600, size: 3
Biggest zset so far: day:topkw:2236:1318723200, size: 7
Biggest zset so far: day:topref:651:1320364800, size: 20
Biggest string so far: uid:3467:auth, size: 32
Biggest set so far: uid:3029:allowed, size: 1
Biggest list so far: last:175, size: 51


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

Sampled 329 keys in the keyspace!
Total key length in bytes is 15172 (avg len 46.12)

Biggest   list found 'day:uv:483:1201737600' has 5235597 items
Biggest    set found 'day:uvx:555:1201737600' has 47 members
Biggest   hash found 'day:uvy:131:1201737600' has 2888 fields
Biggest   zset found 'day:uvz:777:1201737600' has 1000 members

0 strings with 0 bytes (00.00% of keys, avg size 0.00)
19 lists with 5236744 items (05.78% of keys, avg size 275618.11)
50 sets with 112 members (15.20% of keys, avg size 2.24)
250 hashs with 6915 fields (75.99% of keys, avg size 27.66)
10 zsets with 1294 members (03.04% of keys, avg size 129.40)

这篇关于在 Redis 中找到最大对象的最简单方法是什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆