【Redis初级】简单动态字符串(一)

来源:互联网 发布:python ftp 传输模式 编辑:程序博客网 时间:2024/06/16 12:15

Redis是C编写的开源高性能数据服务器。

参考书籍:《Redis设计与实现》
内容:
-1- Redis的SDS定义
-2- SDS与C字符串的区别
-3- SDS的API

-1- Redis的SDS定义:
struct定义的SDS。有三个属性:len、free和char数组buf,buf遵循C以‘\0’结尾的惯例。

-2- SDS与C字符串的区别:
<1> SDS的len可以直接返回数组长度,C数组长度获取O(N),SDS为O(1),
<2>拼接操作(sdscat),SDS先检查扩容,再执行,避免buffer overflow
**<3>**redis在分配字符串的高性能策略:空间预分配、惰性空间释放。
空间预分配:小于1M,预留double;大于1M,预留1M。够用则不分配,连增N字,最多重分配N次。
惰性空间释放:移除字符不释放空间,用free记录,以便于避免增长时的充分配。
<4>二进制安全:C语言只能保存文本,而不能保存图片、视频等。空格符会被误认为终止符。
SDS的API都会以处理二进制的方式处理SDS的buf,不会对数据做限制和过滤。而SDS用len来判断是否读取结束。
<5>遵循’\0’结尾,可以使用C语言

原创粉丝点击