SDS结构
SDS是C语言实现的一个结构体:
一个简单的例子如下:
动态扩容
在c语言中,如果要对字符串操作:
拼接–>先进行内存重分配来扩展底层数组大小,如果忘记了这一步,会导致缓冲区溢出...,进而提高整体执行效率
并且SDS还提供了惰性空间释放的功能,即对字符串缩短操作而言,不会立刻使用内存重分配算法来回收多出来的字节,而是通过一个free属性进行记录,当后面需要进行字符串增长时,就会用到...可以在任意一端进行压入/弹出操作,并且该操作的时间复杂度为0(1)。
压缩列表可以包含任意多个节点,每个节点可以保存一个字节数组或者一个整数值。
压缩列表是列表键和哈希键的底层实现之一。...,层数是1到32之间的随机数
不同层指针到下一个节点的跨度不同,层级越高,跨度越大
增删改成效率与红黑树基本一致,实现却更为简单
RedisObject
Redis中的任意数据类型的键和值都会被封装为一个...编码的转换
如果对保存整数值的字符串对象追加了一个字符串值,那么该字符串对象底层会从int编码转换为raw编码
如果对embstr编码的字符串进行修改,那么底层编码也会从embstr转换为raw
List