美文网首页
redis数据结构

redis数据结构

作者: c84f3109853b | 来源:发表于2017-04-01 01:12 被阅读0次

    SDS的定义

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

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

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

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

    优点:

    • 常数复杂度获取字符串长度
    • 杜绝缓冲区溢出
    • 减少修改字符串时带来的内存重分配次数
    • 实现了空间预分配和惰性空间释放
    • 二进制安全
    • 兼容部分C字符串函数

    链表和链表节点的实现

    每个链表节点使用一个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;

    相关文章

      网友评论

          本文标题:redis数据结构

          本文链接:https://www.haomeiwen.com/subject/pqibottx.html