redis - 如何找到 redis 主题(键的子集)的大小?
问题描述
我的 redis 键是使用各种主题(例如Topic:SubTopic:Key
)排序的。
我想找到一个部分Topic:*
或一个Topic:SubTopic:*
.
在一个主题下,我可以有各种条目(列表、字符串、散列、集合等)。
现在我知道 cli 有memory usage <key>
命令,但我想以某种方式使用 lua 在 redis 服务器上调用它。
我的方法是运行类似:
eval "local keys = redis.call('keys',KEYS[1]) ; local sum=0 ; for _,k in ipairs(keys) do sum = sum + redis.call('memory usage', k) end ; return sum" 1 Topic:SubTopic:*
我知道这个命令会对性能产生影响,因此我将离线运行它只是为了分析我们的数据结构,而不是在生产环境中。
我的主要问题是我找不到 redis 服务器命令来查找类似于 cli 命令的键的内存使用情况。
问题:
有没有更好的方法来分析我的密钥?使用
bigkeys
是不够的。如果没有,是否有任何等效的内存使用命令可以作为 lua 脚本的一部分运行以获取密钥的字节大小?
解决方案
您可以调用MEMORY USAGE
以获取字节大小,包括给定键和值的开销。
注意:即使离线运行,您也应该在 Lua 脚本中使用,SCAN
而不是KEYS
- 这将减少脚本的运行时内存消耗并防止沙箱的堆栈溢出。
推荐阅读
- excel - 如何检查列表中是否缺少日期?
- html - 获取一个 div 来填充整个页面以获取单独的背景图像
- css - 使用 CSS 在 GridPane 中居中子级
- javascript - 使用 JQuery 隐藏动态创建的 HTML 元素
- apache-spark - Pyspark:spark-submit 不像 CLI 那样工作
- html - 使用 R 将 html 列表转换为树
- python - 在python中,一个字典中可以有多个同名的键吗?如果是这样,您将如何删除特定的?
- python - 从 scipy 优化寻根算法
- ios - 如何创建 Swift 导入子模块
- asp.net - ASP.Net 网站 - 发布不会移动所有文件