赞
踩
哪些地方使用到了SDS?
在存储数据中,redis中键值对中键或值可以SDS,如果值是一个链表,链表中包含多个SDS,SDS类型于里面的最基本数据类型
除了存储数据,还有哪些地方使用到了SDS?
SDS还被用作缓冲区:AOF时作为AOF的缓冲区,以及客户端输入缓冲区
SDS的C源码结构是什么样的?SDS是如何实现的?
3.2之前的版本:
- sturct sdshdr{
- unsigned int len;//已使用的字符串长度
- unsigned int free;//未使用的字符串长度
- char buf[];//字符串数组的引用
- }
3.2之后的版本:根据字符串的长度,有5种结构体
C语言中分配N+1个字符串的空间,能存储N个字符串,空字符结尾
C语言获取一个字符串的长度,需要遍历一个字符串,时间复杂度O(n)
在SDS中直接访问len属性,就可以得到SDS的长度,时间复杂度为O(1)
SDS在获取字符串长度时,不会有多的性能损耗,比如命令strlen可
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。