【Redis 源码】4adlist列表.md

1 数据结构说明

在 Redis 中,链表是用来实现列表(list)数据类型的底层数据结构之一。链表在 Redis 中被称为 list,它是一个双向链表,每个节点包含一个指向数据的指针。

2 数据结构

c 复制代码
typedef struct listNode {
    struct listNode *prev;
    struct listNode *next;
    void *value;
} listNode;
  • prev:指向当前节点的前一个节点。
  • next:指向当前节点的后一个节点。
  • value:存储在节点中的实际数据。
c 复制代码
typedef struct list {
2    listNode *head;
3    listNode *tail;
4    void *(*dup)(void *ptr);
5    void (*free)(void *ptr);
6    int (*match)(void *ptr, void *key);
7    unsigned long len;
8} list;
  • head:指向链表的第一个节点。
  • tail:指向链表的最后一个节点。
  • dup:一个复制数据的函数指针,用于在需要复制数据时使用。
  • free:一个释放数据的函数指针,用于释放节点中的数据。
  • match:一个匹配数据的函数指针,用于判断节点中的数据是否与给定的键匹配。
  • len:链表中节点的数量。
c 复制代码
typedef struct listIter {
2    listNode *next;
3    int direction;
4} listIter;

链表迭代器定义,

  • next:指向下一个要访问的节点。
  • direction:指示迭代的方向,通常是正向还是反向。
相关推荐
Elseide艾思2 分钟前
艾思政策数据库正式发布(1989年至今)
数据库
zhengfei61117 分钟前
OrangeHRM RCE 最新漏洞利用 - CVE-2025-66224
数据库
中國移动丶移不动23 分钟前
Python MySQL 数据库操作完整示例
数据库·python·mysql
木风小助理39 分钟前
B+树何以成为数据库索引的“天选之结构”?
数据库
7ioik41 分钟前
为什么lnnoDB存储引擎默认使用B+树作为索引结构?
数据库·b树·oracle
斯普信专业组2 小时前
PostgreSQL高可用集群部署与配置指南
数据库·postgresql
利刃大大3 小时前
【MyBatis】MyBatis操作动态sql && MyBatisGenerator
数据库·sql·mybatis
a努力。3 小时前
美团Java面试被问:Redis集群模式的工作原理
java·redis·后端·面试
一瓢西湖水3 小时前
loader命令导出大批量数据维护SQL
数据库·sql
颜颜yan_4 小时前
时序数据库选型指南:工业物联网时代如何选择数据底座
数据库·物联网·时序数据库