面试题答案
一键面试- 计算方法简述:
- 在Redis中存储字符串,要考虑字符串本身内容和记录字符串长度等额外信息。
- 对于简单动态字符串(SDS)结构,除了字符串实际内容外,还会有记录长度等元数据。
- 大致计算公式:
假设字符串为
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字节。
- 大致内存占用 = 记录字符串长度等元数据的空间 + 字符串实际内容占用空间 + 1(为了兼容C字符串结尾的空字符