我想为每个用户存储一些用户信息到redis。数据类型为key-value。
例如:
$redis.set("user_info:12345", #{some data})
有什么方法可以评估内存占用吗?
我觉得redis的key和value都会消耗内存,怎么知道消耗了多少内存?
最佳答案
从 v4 开始,我们有 MEMORY USAGE 命令做得更好,它反射(reflect)了键名、它们的值以及内部数据结构的所有相关开销的整个 RAM 消耗。
$redis.memory :usage, key_name
DEBUG OBJECT 输出不是衡量 Redis 中键的内存消耗的可靠方法 - serializedlength
字段以持久化对象所需的字节为单位给出,而不是内存中的实际占用空间,包括数据本身之上的各种管理开销。
为了说明这一点,我创建了一组 250 万个整数并比较了每个整数的输出:
> r.memory :usage, 'testkey'
=> 132003825
> r.debug :object, 'testkey'
=> "Value at:0x7fe739e09a00 refcount:1 encoding:hashtable serializedlength:12404474 lru:729393 lru_seconds_idle:68"
MEMORY USAGE
报告 132,003,825 字节 (126 MiB)DEBUG OBJECT
仅报告 12,404,474 字节 (12 MiB) 👎
关于ruby-on-rails - 如何评估 Rails 应用程序中 Redis 键值的内存占用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26051246/