如何计算Redis数据库的大小(单位:MB)
Redis 数据库MB级空间占用计算方法
直接查询实际占用(结果最准,优先用)
不用自己按记录条数硬算,Redis自带的命令就能直接拿到真实内存占用,换算成MB就行:
- 统计整个Redis实例的总内存占用:执行
INFO memory命令,返回结果里的used_memory字段就是实例已用的总内存,单位是字节,直接做除法就能转成MB:MB值 = used_memory / 1024 / 1024。
比如返回的used_memory是10485760,算下来就是10MB。嫌自己算麻烦也可以直接看used_memory_human字段,是Redis自动格式化好的带单位的结果,不过要精确计算的话还是用字节值换算最稳妥。 - 统计单个分库的内存占用:如果用了Redis默认的多库(0-15号库),4.0以上版本可以在低峰期执行
DEBUG DATABASE 库编号,返回结果里的used_memory就是对应库的占用字节数,同样除以1024*1024就能得到MB值。注意这个命令会短暂阻塞实例,别在业务高峰跑。
按记录数估算容量(适合提前做容量规划的场景)
如果是提前算比如1000条记录要占多少空间,还没写入数据的话,可以按下面的方法算,注意不能只算key和value本身的长度,Redis存储每条记录还要带内部元数据开销,直接加总key/value长度算出来的结果会比实际小很多:
- 有测试环境的话最准:先写入1条和业务结构完全一致的测试数据,执行
MEMORY USAGE 测试key名,拿到单条记录的真实占用字节数(这个结果已经包含了key、value、存储结构元数据、过期信息的所有开销),直接乘总记录数,再除以10241024就是总MB数。
举个例子:单条记录查出来占1024字节(1KB),1000条总占用就是10241000 = 1024000字节,换算下来大概0.98MB。 - 没环境实测的话可以按经验值估算:
普通短key(key长10字节内,value是短字符串、整数)单条的元数据开销大概60-90字节,加上key和value本身的长度就是单条的大致占用。如果是哈希、列表、集合这类复杂结构,数据量没超过压缩列表阈值的时候元数据占比更高,一旦转成哈希表存储,单个元素的开销会涨到100字节以上。
避坑提醒
- 别拿RDB、AOF持久化文件的大小算内存占用:RDB是压缩后的快照文件,比实际内存小很多;AOF是顺序写的命令日志,和实际内存占用没有固定换算比例,算出来的结果完全不准。
- 设置了过期时间的key只要没被Redis清理掉,就还是会占内存,统计结果会包含这部分临时占用。
- 主从节点的内存占用可能有细微差异,统计业务容量以写入的主节点数值为准。
内容的提问来源于stack exchange,提问作者Sumit Yewale
相关产品推荐
相关产品推荐

