redis数据结构

2017-04-01  本文已影响0人  c84f3109853b

SDS的定义

每个sds.h/sdshdr结构表示一个SDS值:

struct sdshdr {
// 记录buf数组中已使用字节的数量
// 等于SDS所保存字符串的长度
int len;

// 记录buf数组中未使用字节的数量
int free;

// 字节数组,用于保存字符串
char buf[];
};

优点:

链表和链表节点的实现

每个链表节点使用一个adlist.h/listNode结构来表示:

typedef struct listNode {
// 前置节点
struct listNode *prev;
// 后置节点
struct listNode *next;
// 节点的值
void *value;
} listNode;

使用adlist.h/list来持有链表:

typedef struct list {
// 表头节点
listNode *head;
// 表尾结点
listNode *tail;
// 链表所包含的节点数量
unsigned long len;
// 节点值复制函数
void * ( *dup)(void *ptr);
// 节点释放函数
void (* free)(void *ptr);
// 节点值对比函数
int (*match)(void *ptr, void *key);
} list;

上一篇下一篇

猜你喜欢

热点阅读