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

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语言

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值