阅读 redis 源码


Author: yifei / Created: June 17, 2017, 10:15 a.m. / Modified: June 17, 2017, 10:16 a.m. / Edit

字符串

redis 内部使用Simple Data String 代表字符串。结构如下:

sds的内存分配策略:

  1. 如果当前内存不能够放得下需要的字符串,长度翻倍。放得下则直接放。当超过30M时,则每次增长1M
  2. 如果释放内存时,不释放空间
  3. redis的字符串是二进制安全的

链表

redis 的 list 是使用链表实现的。

typedef struct listNode {
    struct listNode * prev;
    struct listNode * next;
    void * value;
} listNode;

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;

评论区