亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

Redis的壓縮列表怎么節約內存

小新
494
2021-02-15 08:08:31
欄目: 大數據

Redis的壓縮列表怎么節約內存

Redis壓縮列表節約內存的示例:

1.壓縮列表的構成,代碼:

//返回整個壓縮列表的總字節

#define ZIPLIST_BYTES(zl) (*((uint32_t*)(zl)))

//返回壓縮列表的tail_offset變量,方便獲取最后一個節點的位置

#define ZIPLIST_TAIL_OFFSET(zl) (*((uint32_t*)((zl)+sizeof(uint32_t))))

//返回壓縮列表的節點數量

#define ZIPLIST_LENGTH(zl) (*((uint16_t*)((zl)+sizeof(uint32_t)*2)))

//返回壓縮列表的表頭的字節數

//(內存字節數zlbytes,最后一個節點地址ztail_offset,節點總數量zllength)

#define ZIPLIST_HEADER_SIZE (sizeof(uint32_t)*2+sizeof(uint16_t))

//返回壓縮列表最后結尾的字節數

#define ZIPLIST_END_SIZE (sizeof(uint8_t))

//返回壓縮列表首節點地址

#define ZIPLIST_ENTRY_HEAD(zl) ((zl)+ZIPLIST_HEADER_SIZE)

//返回壓縮列表尾節點地址

#define ZIPLIST_ENTRY_TAIL(zl) ((zl)+intrev32ifbe(ZIPLIST_TAIL_OFFSET(zl)))

//返回壓縮列表最后結尾的地址

#define ZIPLIST_ENTRY_END(zl) ((zl)+intrev32ifbe(ZIPLIST_BYTES(zl))-1)

2.壓縮列表節點的構成,代碼:

/* We use this function to receive information about a ziplist entry.

* Note that this is not how the data is actually encoded, is just what we

* get filled by a function in order to operate more easily. */

typedef struct zlentry {

unsigned int prevrawlensize; //記錄prevrawlen需要的字節數

unsigned int prevrawlen; //記錄上個節點的長度

unsigned int lensize; //記錄len需要的字節數

unsigned int len; //記錄節點長度

unsigned int headersize; //prevrawlensize+lensize

unsigned char encoding; //編碼格式

unsigned char *p; //具體的數據指針

} zlentry;



1
北流市| 宁海县| 东港市| 灌云县| 长沙县| 昌乐县| 成安县| 博湖县| 安吉县| 岑溪市| 密云县| 东兰县| 安西县| 永年县| 泽州县| 长兴县| 邳州市| 赣州市| 黄浦区| 康平县| 温州市| 松桃| 普兰县| 白朗县| 武威市| 吐鲁番市| 边坝县| 乐至县| 浦县| 香河县| 宁河县| 灌阳县| 无极县| 贞丰县| 诸暨市| 莫力| 汉源县| 宜兴市| 蓝山县| 五大连池市| 柳江县|