redis数据解析
1.概述
数据结构主要包括列表,字符串,跳表,map,set等,底层基于c实现。
2.sds
redis自建的字符串,数据结构
struct sdshdr{ int len; int free; char buf[]; }
主要解决缓存溢出问题。
3.链表
redis自建的链表保存了双向信息,包括头节点和尾节点。
typedef struct listNode{ struct listNode *prev; struct listNode *next; void *value; }listNode; typedef struct list{ listNode *head; listNode *tail; unsigned long len; void *(*dup)(void *ptr); void *(*free)(void *ptr); int (*match)(void *ptr,void *key); }list;
4.哈希表
通过哈希算法实现的存储,每个字典中存在两个哈希表,当进行rehash操作时会在两个hash表间移动数据。
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.redis对象
redis中所有的数据都是一个对象,
typedef struct redisObject{ unsigned type:4; unsigned encoding:4; void *ptr; int lru; …… }robj;
type表示该对象为什么类型(如上面提到的sds,list等),lru记录最后使用时间。
相关推荐
王道革 2020-11-25
wangdonghello 2020-11-03
Langeldep 2020-11-16
chenhualong0 2020-11-16
聚合室 2020-11-16
koushr 2020-11-12
MRFENGG 2020-11-11
guoyanga 2020-11-10
fackyou00 2020-11-10
Orangesss 2020-11-03
dongCSDN 2020-10-31
rainandtear 2020-10-30
Quietboy 2020-10-30
liuyulong 2020-10-29
fansili 2020-10-29
温攀峰 2020-10-23
jackbon 2020-10-19
kaixinfelix 2020-10-04