redis数据结构之链表

2018-10-21  本文已影响2人  0爱上1

前言

链表作为一种常用的数据结构,会内置在很多高级的编程语言中,而Redis使用的C语言并没有内置链表数据结构,故redis构建了自己的链表实现

链表特性

  1. 顺序节点访问

  2. 高效节点重排

  3. 灵活调整链表长度

redis中的链表用途

链表在Redis的应用十分广泛,如列表键的底层实现之一就是链表

列表键

当一个列表键包含的元素数量比较多的时候(> 512)或列表中包含的元素都是比较长的字符串的时候(任一个元素 > 64字节),Redis就会使用链表作为列表键的底层实现,否则使用压缩列表数据结构实现,后续文章会介绍


链表在redis中的实现

使用list结构来表示链表,使用listNode来表示每一个链表节点

list

typedef struct list {

    // 链表头节点
    listNode * head;

    // 链表尾节点
    listNode * tail;

    // 链表所包含的节点数量
    unsiged long len;

    // 操作节点函数...
}

listNode

typedef struct listNode {

    // 前置节点
    struct listNode * prev;

    // 后置节点
    struct listNode * next;

    // 节点的值
    void * value;
}

整体结构简图

链表结构图

Redis链表特性

总结

redis中自构建的链表数据结构,主要用于列表键的底层实现数据结构

上一篇 下一篇

猜你喜欢

热点阅读