栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

SDS字符串结构的原理与实现 (C++实现)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SDS字符串结构的原理与实现 (C++实现)

redis中字符串结构没有采用传统的const char*指针来表示,而是设计一种新的SDS字符串结构。

SDS特点:

(1)传统的字符串一般采用strlen()库函数获取长度值,时间复杂度为O(n)。SDS结构中声明一个新的长度变量,用来保存字符串的长度,访问长度的时间复杂度是O(1),是一种典型的空间换取时间的策略。

采用这种策略的原因是redis对键值的操作经常需要访问字符串的长度属性,可以有效提高了运行的时间效率。

                                                          

                                   

(2)传统的字符串可能出现拼接时缓冲区不够的情况,需要程序员手动的分配空间后再拼接;而SDS拼接或者拓展时无需考虑内部空间不够的问题,API内部实现时会检查空间是否完整才扩展。杜绝缓冲区溢出的的可能,提高了使用的安全性。

(3)SDS内部采用的内存分配策略是预分配多余的空间,从而减少分配次数(类似vector容器的内存分配策略)。

采用这种分配策略原因是:使用字符串时经常遇到一种情景是反复修改内容,从而可能需要多次的内存分配。

 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/947753.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号