redis数据类型的数据结构

原创
admin 3小时前 阅读数 3 #Redis
文章标签 Redis

<a target="_blank" href="https://glio.ithorizon.cn/tag/Redis/"style="color:#2E2E2E">Redis</a>数据类型的数据结构

Redis数据类型的数据结构

Redis是一种开源的、基于内存的键值存储数据库,它提供了多种数据结构来适应不同的场景。以下是Redis中常见的数据类型及其数据结构介绍。

1. 字符串(String)

字符串是Redis中最基本的数据类型,用于存储单纯的字符串、整数或浮点数。它的数据结构如下:

struct sdshdr {

int len; // 字符串长度

int free; // 未使用的空间

char buf[]; // 字符数组

};

2. 列表(List)

列表是按照插入顺序排序的字符串元素集合。它的数据结构是一个双向链表,如下:

typedef struct listNode {

struct listNode *prev; // 前一个节点

struct listNode *next; // 后一个节点

void *value; // 节点值

} listNode;

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;

3. 集合(Set)

集合是无序的、不重复的字符串元素集合。它的数据结构是一个哈希表,如下:

typedef struct intset {

uint32_t encoding; // 编码行为

uint32_t length; // 集合长度

int64_t contents[]; // 集合元素数组

} intset;

4. 哈希(Hash)

哈希是一个键值对集合,它提供了字段和相关性的值。它的数据结构是另一个哈希表,如下:

typedef struct dict {

dictType *type; // 类型特定函数

void *privdata; // 私有数据

dictht ht[2]; // 两个哈希表

long rehashidx; // rehash索引

int iterators; // 当前迭代器数量

} dict;

typedef struct dictht {

dictEntry **table; // 哈希表数组

unsigned long size; // 哈希表大小

unsigned long sizemask; // 大小掩码,用于计算索引

unsigned long used; // 已使用节点数量

} dictht;

typedef struct dictEntry {

void *key; // 键

union {

void *val; // 值

uint64_t u64;

int64_t s64;

} v;

struct dictEntry *next; // 链接下一个节点

} dictEntry;

5. 有序集合(ZSet)

有序集合是集合的一种扩展,每个元素都会相关性一个分数(score),用于排序。它的数据结构是一个跳表(SkipList)和哈希表,如下:

typedef struct zskiplistNode {

sds ele; // 元素

double score; // 分数

struct zskiplistNode *backward; // 后退指针

struct zskiplistLevel {

struct zskiplistNode *forward; // 前进指针

unsigned long span; // 跨度

} level[]; // 层级数组

} zskiplistNode;

typedef struct zskiplist {

struct zskiplistNode *header, *tail; // 头尾节点

unsigned long length; // 长度

int level; // 最大层级

} zskiplist;

typedef struct zset {

dict *dict; // 哈希表

zskiplist *zsl; // 跳表

} zset;

以上是Redis中常见数据类型的数据结构介绍,这些数据结构促使

本文由IT视界版权所有,禁止未经同意的情况下转发

热门