已复制
全屏展示
复制代码

Redis内存占用估算

· 1 min read

使用方法

当需要往 Redis 写大批量的数据时,如何判断这批数据是否会把 Redis 打爆,这就需要提前预估数据量的大小。

命令 memory usage 可以预估一个 key 的占用内存,比如

10.10.2.12:6379[2]> memory usage live_send_gift SAMPLES 5000
1238209

# 返回数字单位(字节): the memory usage in bytes, or nil when the key does not exist.

SAMPLES 表示取多少个样例用来计算每个元素的平均占用字节,默认为5,按理说越大越准确

实际场景

假如有 100 万个 uid 需要写到一个无序集合里面:

  • 首先写入 10 万个uid到集合
  • 用 memory usage 查看这10万个uid占用了多少内存
  • 计算 100 万个 uid 需要多少内存。
10.10.2.12:6379> memory  help
 1) MEMORY <subcommand> [<arg> [value] [opt] ...]. Subcommands are:
 2) DOCTOR
 3)     Return memory problems reports.
 4) MALLOC-STATS
 5)     Return internal statistics report from the memory allocator.
 6) PURGE
 7)     Attempt to purge dirty pages for reclamation by the allocator.
 8) STATS
 9)     Return information about the memory usage of the server.
10) USAGE <key> [SAMPLES <count>]
11)     Return memory in bytes used by <key> and its value. Nested values are
12)     sampled up to <count> times (default: 5, 0 means sample all).
13) HELP
14)     Prints this help.
  • 参考资料
MEMORY USAGE
Estimates the memory usage of a key.
🔗

文章推荐