redis底层数据结构已完结👏👏👏:
一、概述
一种连续内存空间存储的顺序数据结构,每个元素可以是字符串或整数。优点:节省内存空间。适用于存储小规模的列表或有序集合。缺点:修改操作可能引发连锁更新,影响性能。使用场景: 在列表键元素较少或元素都是小整数时使用。
二、ziplist结构
(直达源码–>src/ziplist.c)
- Header(头部): 包含了ziplist的总字节长度、尾部(最后一个元素)的偏移量,以及ziplist中元素的数量。这些信息有助于快速地访问ziplist的基本属性和迅速找到ziplist的尾部。
- Entry(项&条目): 每个项可以存储一个整数或者一个字符串。
- End(结束符): 一个特定的字节(通常是0xFF),标记着ziplist的末尾,确保了ziplist结构的正确解析和遍历的终止。
* ZIPLIST OVERALL LAYOUT
* ======================
*
* The general layout of the ziplist is as follows:
*
* <zlbytes> <zltail> <zllen>