Redis 基本数据结构
Redis 有 5 种数据结构:string (字符串)、list (列表)、set (集合)、hash (哈希) 和 zset (有序集合)。
string
Redis 所有的数据结构都是以唯一的 key 字符串作为名称,然后通过这个唯一 key 值来获取相应的 value 数据。不同类型的数据结构的差异就在于 value 的结构不一样。
list
链表。当列表弹出了最后一个元素之后,该数据结构自动被删除,内存被回收。
hash
字典的值只能是字符串。
set
相当于一个特殊的字典,字典中所有的 value 都是一个值 NULL。
zset
一个 set,保证了内部 value 的唯一性,另一方面它可以给每个 value 赋予一个 score,代表这个 value 的排序权重。它的内部实现用的是一种叫着跳跃列表的数据结构。
Redis 数据结构图
SDS
Redis 封装了一个简单动态字符串(simple dynamic string,SDS) 的数据结构来表示字符串。
字段 | 解释 |
---|---|
len | 字符串长度 |
alloc | 分配的空间长度 |
flags | sds类型 |
buf[] | 字节数组 |
链表
typedef struct listNode {
//前置节点
struct listNode *prev;
//后置节点
struct listNode *next;
//节点的值
void *value;
} listNode;
typedef struct list {
//链表头节点
listNode *head;
//链表尾节点
listNode *tail;
//节点值复制函数
void *(*dup)(</