【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:指示迭代的方向,通常是正向还是反向。
相关推荐
AI_56781 分钟前
阿里云OSS成本优化:生命周期规则+分层存储省70%
运维·数据库·人工智能·ai
choke2334 分钟前
软件测试任务测试
服务器·数据库·sqlserver
龙山云仓5 分钟前
MES系统超融合架构
大数据·数据库·人工智能·sql·机器学习·架构·全文检索
IT邦德6 分钟前
OEL9.7 安装 Oracle 26ai RAC
数据库·oracle
luffy545921 分钟前
windows下通过docker-desktop创建redis实例
windows·redis·docker·容器
时艰.21 分钟前
java性能调优 — 高并发缓存一致性
java·开发语言·缓存
jianghua00125 分钟前
Django视图与URLs路由详解
数据库·django·sqlite
那我掉的头发算什么25 分钟前
【Mybatis】Mybatis-plus使用介绍
服务器·数据库·后端·spring·mybatis
倔强的石头10627 分钟前
关系数据库替换用金仓:数据迁移过程中的完整性与一致性风险
数据库·kingbase
_Johnny_27 分钟前
ETCD 配额/空间告警模拟脚本
数据库·chrome·etcd