Redis
- 分类
- 分布式系统
- 难度
- 未设置
- 来源数
- 1
- 更新时间
- 2026/03/29 00:57
答案
string内部是由SDS,简单动态字符串实现的,它相比于基于C语言的这种字符串,有几点好处: 1. 它是以len来判断是否结束,而不是用空字符,因此它不仅可以存储文本,还可以存储二进制数据,也就是收它可以存图片、视频、音频等等数据 2. 它获得字符串长度是O(1)的复杂度,因为它会记录自身的长度 3. 它的拼接不会造成缓冲区的溢出,因为它拼接的时候会判断SDS空间是否足够,如果不够的话会进行扩容 + 如果所需的 sds 长度小于 1 MB,那么最后的扩容是按照翻倍扩容来执行的,即 2 倍的newlen + 如果所需的 sds 长度超过 1 MB,那么最后的扩容长度应该是 newlen + 1MB。
相关题目(5)
什么是热点 key,如何处理?共源 1
分布式系统Redis
watch dog 机制是什么?共源 1
分布式系统并发锁Redis
Redis 如何实现分布式锁?共源 1
分布式系统锁Redis
分布式系统并发Redis
元信息
审核状态: active
关联来源: 1
来源面经题(0)
这道题目前没有手动沉淀的面经题来源。
来源(1)
Java八股(数据库).md
knowledge_noteQuestion 91: String 的内部实现?
Source answer: string内部是由SDS,简单动态字符串实现的,它相比于基于C语言的这种字符串,有几点好处: 1. 它是以len来判断是否结束,而不是用空字符,因此它不仅可以存储文本,还可以存储二进制数据,也就是收它可以存图片、视频、音频等等数据 2. 它获得字符串长度是O(1)的复杂度,因为它会记录自身的长度 3. 它的拼接不会造成缓冲区的溢出,因为它拼接的时候会判断SDS空间是否足够,如果不够的话会进行扩容 + 如果所需的 sds 长度小于 1 MB,那么最后的扩容是按照翻倍扩容来执行的,即 2 倍的newlen + 如果所需的 sds 长度超过 1 MB,那么最后的扩容长度应该是 newlen + 1MB。
Reviewed answer: Redis String 底层使用 SDS。其优势包括:可存储二进制数据、获取长度时间复杂度为 O(1)、拼接时可自动扩容避免缓冲区溢出;扩容策略通常是小于 1MB 时翻倍扩容,大于 1MB 时按 newlen+1MB 扩容。