redis 链表结构

链表

链表提供了高效的节点重排能力,以及顺序性的节点访问方式。

redis 链表实现

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;
  • dup 函数用于复制链表节点所保存的值
  • free 函数用于释放链表节点所保存的值
  • match 函数用于对比链表节点所保存的值和另一个输入值是否相等

redis 链表实现特性:

  • 双端:带有prev和next指针
  • 无环:表头节点的prev指针和表尾节点的next指针都指向NULL
  • 带表头指针和表尾指针:获取链表头尾节点复杂度为o(1)
  • 带链表长度计数器:获取链表中节点数量的复杂度为O(1)
  • 多态:可以通过dup,free,match三个属性为节点值设置类型特定函数
重点
  • 链表被广泛用于Redis的各种功能,比如列表键,发布与订阅,慢查询,监视器等
  • 每个链表节点由一个listNode结构来表示,每个链表都有一个指向前置节点和后置节点的指针
  • 每个链表使用一个list结构来表示,这个结构带有表头节点指针,表尾节点指针
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值