标签:图片 解析 tno 哈希算法 字符串 map 操作 bsp mask
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记录最后使用时间。
标签:图片 解析 tno 哈希算法 字符串 map 操作 bsp mask
原文地址:https://www.cnblogs.com/yangyang12138/p/13205655.html