数字通常是如何存储在redis中的?例如,它似乎支持有限数量的标量,主要的标量是 string type . 或者,只是在客户端执行数字操作,例如:
string type
> SET id 4 >>> int(r.get(id)) + ...
k4emjkb11#
为了节省内存,redis有一个复杂的编码机制。价值 SET 命令为字符串类型。为了在redis中保存一个字符串,我们需要一个用于该字符串的内存块,以及一个指向该内存块的指针。但是,如果该值可以转换为整数,redis会将字符串值转换为整数,并使用指针保存整数。这样就可以节省大量内存,即不需要为字符串分配额外的内存块。另外,redis为整数0到9999预先分配10000个对象。如果键的值在0到9999之间,redis将使这些键共享该值,即指向这些预分配对象的指针,而不是为这些键创建新对象。
SET
1条答案
按热度按时间k4emjkb11#
为了节省内存,redis有一个复杂的编码机制。
价值
SET
命令为字符串类型。为了在redis中保存一个字符串,我们需要一个用于该字符串的内存块,以及一个指向该内存块的指针。但是,如果该值可以转换为整数,redis会将字符串值转换为整数,并使用指针保存整数。这样就可以节省大量内存,即不需要为字符串分配额外的内存块。另外,redis为整数0到9999预先分配10000个对象。如果键的值在0到9999之间,redis将使这些键共享该值,即指向这些预分配对象的指针,而不是为这些键创建新对象。