7.1 数据结构
Posted fmys
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了7.1 数据结构相关的知识,希望对你有一定的参考价值。
7.1.1 value 对象的通用结构
typedef struct redisObject{
unsigned type:4;
unsigned encoding:4;
unsigned lru:REDIS_LRU_BITS;
int refcount;
void *ptr;
} robj;
type指String、List等结构类型。
encoding指这些结构化类型具体的实现(承载)方式,同一个类型可以有多种实现,例如String可以用int来承载,也可以用封装的char[]来承载,List可以用ziplist或者链表来承载。
lru 表示本对象的空转时长,用于有限内存下长久不访问的对象的清理。
refcount 是应用计数用于对象的垃圾回收。
ptr 指向的是以encoding方式实现这个对象的实际承载者的地址,如string对象对应的是sds地址。
7.1.2 String
三种类型:
字符串
整数
浮点数
1.基本操作
2.内存数据结构
以int、SDS(simple dynamic string)作为结构存储。
int存放整形数据,sds存放字节/字符串和浮点型数据
1)sds结构
typedef struct sdshdr{
unsigned int len;
unsigned int free;
char buf[];
}