【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:指示迭代的方向,通常是正向还是反向。
相关推荐
SelectDB10 小时前
从 Machine-Readable 到 Agent-Ready:面向智能体的数据库接口演进
大数据·数据库·agent
cfm_291410 小时前
Redis高并发缓存架构设计与性能优化实战
redis·缓存·性能优化
画江湖Test10 小时前
Redis 块的原理
数据库·redis·缓存·性能优化
流烟默10 小时前
国产数据库CERDB是什么以及服务启停
数据库·cerdb
数据库小学妹10 小时前
关系型数据库核心原理拆解:SQL解析、事务引擎、存储结构全链路分析
数据库·经验分享·sql·数据库架构·dba
海市公约10 小时前
Redis主从复制全量同步七步时序与命令传播机制详解
数据库·redis·缓存·主从复制·高可用架构·全量同步
我是唐青枫10 小时前
Java JdbcTemplate 实战指南:用 Spring 轻量完成数据库增删改查
java·数据库·spring
梓䈑11 小时前
【MySQL】MySQL安装 和 配置
数据库·mysql
小马爱打代码11 小时前
Redis 和 MySQL 双写一致性:延迟双删、读写锁、MQ、Canal 怎么选?
数据库·redis·mysql