CSNotesCSNotes
TODO
数据库
Java
SSM
React
学习路线
分布式
Redis
实用工具
GitHub
TODO
数据库
Java
SSM
React
学习路线
分布式
Redis
实用工具
GitHub
  • 第一章 Redis 基础

    • 一、Redis 数据结构

一、Redis 数据结构

(一)简单动态字符串

(二)链表

typedef struct listNode {
    struct listNode *prev;
    struct listNode *next;
    void *value;
} listNode;

listNode 是一个[双向链表](../datastructure/0203.md。

typedef struct list {
    listNode *head;//表头节点
    listNode *tail;//表尾节点
    void *(*dup)(void *ptr);//节点复制函数
    void (*free)(void *ptr);//节点释放函数
    int (*match)(void *ptr, void *key);//节点对比函数
    unsigned long len;//链表所包含的节点数量
} list;

(三)字典

struct dictEntry {
    void *key;
    union {
        void *val;
        uint64_t u64;
        int64_t s64;
        double d;
    } v;
    struct dictEntry *next;     /* Next entry in the same hash bucket. */
    void *metadata[];           /* An arbitrary number of bytes (starting at a
                                 * pointer-aligned address) of size as returned
                                 * by dictType's dictEntryMetadataBytes(). */
};

(四)跳跃表

(1)跳跃表节点

typedef struct zskiplistNode {
    sds ele;//
    double score;//分值
    struct zskiplistNode *backward;//后退指针
    struct zskiplistLevel {
        struct zskiplistNode *forward;//前进指针
        unsigned long span;//跨度
    } level[];//层
} zskiplistNode;

(2)跳跃表

typedef struct zskiplist {
    struct zskiplistNode *header, *tail;//表头指针和表尾指针
    unsigned long length;//表中节点的数量
    int level;//表中层数最大的节点的层数
} zskiplist;

(五)整数集合

typedef struct intset {
    uint32_t encoding;//编码方式
    uint32_t length;//集合包含的元素数量
    int8_t contents[];//保存元素的数组
} intset;

整数集合

(六)压缩列表

(七)对象

编辑此页
上次更新: 2026/9/18 20:24