【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:指示迭代的方向,通常是正向还是反向。
相关推荐
小小龙学IT1 分钟前
Qt Graphics View Framework(图形视图框架)深度解析:从 Scene/View/Item 到工业级 2D 场景
开发语言·数据库·qt
aikopen12 分钟前
高可用 API 网关限流与微服务过载保护实战:从 Sentinel 动态阈值到 DB 连接池舱壁
数据库·微服务·sentinel
whcyhhh17 分钟前
头歌实践教学平台:数据科学与大数据技术导论(七下)
大数据·数据库·python
迪康coolmu20 分钟前
企业IT运维闭环——工单管理与远程协助一体化实践
java·大数据·运维·网络·数据库·人工智能·安全
李可以量化28 分钟前
Redis Client 从入门到精通(一)下:redis-py 核心数据结构操作与连接管理
数据结构·redis·python·bootstrap·量化交易·qmt
cmes_love35 分钟前
期权分钟行情数据下载:商品/股指/ETF期权全覆盖
数据库·区块链
骇客野人41 分钟前
MySQL / PostgreSQL 单表及表数据备份恢复实施方案
数据库·mysql·postgresql
东方护航数据恢复(深圳)44 分钟前
勒索病毒零赎金解密:加密样本逆向分析与可恢复性评估方法论
大数据·网络·数据库
心平气和量大福大1 小时前
android-实例2-数据库sqlite(查询)
android·数据库·sqlite
海兰1 小时前
【数据库】告别数据库性能噩梦,拥抱 UUID v7
数据库