中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

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
林芝县| 宜兴市| 江口县| 海原县| 米易县| 焉耆| 建始县| 瑞金市| 贵阳市| 昌平区| 乌兰县| 临西县| 云霄县| 枝江市| 白朗县| 子长县| 博乐市| 泾源县| 沿河| 通渭县| 玛沁县| 麻江县| 澄迈县| 遂宁市| 周宁县| 泊头市| 江川县| 甘肃省| 济源市| 唐山市| 凤翔县| 淄博市| 崇信县| 灌南县| 峨山| 东至县| 剑川县| 德安县| 化德县| 绥阳县| 德清县|