MST

星途 面试题库

面试题:Redis字符串对象内存占用的基础计算

假设在Redis中有一个字符串对象,值为'hello world',请简述如何计算该字符串对象大概的内存占用,并给出大致的计算公式(不考虑Redis内部复杂数据结构开销,仅从存储字符串本身角度)。
13.2万 热度难度
数据库Redis

知识考点

AI 面试

面试题答案

一键面试
  1. 计算方法简述
    • 在Redis中存储字符串,要考虑字符串本身内容和记录字符串长度等额外信息。
    • 对于简单动态字符串(SDS)结构,除了字符串实际内容外,还会有记录长度等元数据。
  2. 大致计算公式: 假设字符串为 s,长度为 len(s)
    • 大致内存占用 = 记录字符串长度等元数据的空间 + 字符串实际内容占用空间 + 1(为了兼容C字符串结尾的空字符 \0,虽然Redis的SDS不依赖这个空字符来判断字符串结束,但会预留空间)。
    • 在32位系统下,记录长度等元数据可能占用4字节,在64位系统下可能占用8字节。
    • 例如对于字符串 'hello world',长度 len = 11
      • 32位系统下大致内存占用 = 4 + 11 + 1 = 16字节。
      • 64位系统下大致内存占用 = 8 + 11 + 1 = 20字节。