原理—数据结构
动态字符串SDS
- Redis中保存的key是字符串,value往往是字符串或字符串的集合
- 不过Redis没有直接使用C语言中的字符串,因为C语言字符串存在很多问题: 获取字符串长度的需要通过运算 非二进制安全 不可修改 Redis构建了一种新的字符串结构,称为简单动态字符串(Simple Dynamic String),简称SDS。
- 这只是其中一个SDS,8位的(5位的已经基本弃用)
- SDS之所以叫做动态字符串,是因为它具备动态扩容的能力
IntSet
- IntSet是Redis中set集合的一种实现方式,基于整数数组来实现,并且具备长度可变,有序等特征
contents里面存的是指针
Intset可以看做是特殊的整数数组,具备一些特点:
- Redis会确保Intset中的元素唯一、有序
- 具备类型升级机制,可以节省内存空间
- 底层采用二分查找方式来查询