Redis 基础教程

Redis 命令

Redis 高级教程

Redis 笔记

original icon
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.knowledgedict.com/tutorial/redis-get-key-memory-size.html

redis 如何查看指定 key 的大小,即所占内存空间大小

Redis 笔记 Redis 笔记


我们在使用 Redis 时,往往想要查看单个指定 key 的内存所占大小,以此来进一步判断如何更合理地存储比较大的键。

解决方法

redis 在 4.0 版本开始,提供了允许查看特定 key 大小的命令 MEMORY USAGE 命令,具体示例如下:

redis_host:6379> set knowledge dict
OK
redis_host:6379> memory usage knowledge
(integer) 59

返回指定 key 的内存占用字节数。

如果要查看的 key 是内嵌类型(除 string 之外的集合类型),可以使用 SAMPLES 选项来可以指定采样的元素个数。

假设,键 knowledgedict 是哈希(hash)类型,它有 10000 个元素,那么预估该键的占用大小,可以通过 SAMPLES 选项来指定采样元素个数,进行抽样平均计算后预估总大小,示例如下:

redis_host:6379> MEMORY USAGE knowledgedict SAMPLES 100
(integer) 617977753
redis_host:6379> MEMORY USAGE knowledgedict SAMPLES 1000
(integer) 624950853

可以看出,抽样的个数不一样,会导致预估大小的变化,主要是因为抽样及平均算法导致。

抽样是使用 LRU 采样方式,默认抽样 5 个元素,计算抽样个数的平均占用大小,然后根据总元素个数算出总大小,所以计算是近似值。

这是使用抽样求平均的算法,要想获取 key 较精确的内存值,就指定更大 SAMPLES 个数。但并不是越大越好,因为越大,命令占用 cpu 时间分片就大。

此外,memory usage不包含 key 本身字符串的内存占用,也不包含 key expire 的内存占用。

查看 memory usage 更多信息参见 MEMORY USAGE 命令详解

MySQL 如何用命令获取查看每个数据库(database)所占空间大小,其实在 MySQL 中,information_schema 库中 ...
在Java中,要比较两个对象的大小通常需要实现`Comparable`接口或使用`Comparator`。示例代码:第三方库依赖:无###使 ...
Redis 如何查看 key 的数量(个数),有三个相关命令,分别是 info、dbsize 和 keys。 ...
###方法一:使用compareTo方法导入必要的包:创建两个日期对象并使用其compareTo方法进行比较。示例代码:###方法三:使用I ...
###方法1:使用内置的sorted函数这是Python内置的最简单和最常见的方法,它不会修改原始列表,而是返回一个新的已排序列表。示例代码 ...