压缩列表
当一个列表键只包含少量列表项, 并且每个列表项要么就是小整数值, 要么就是长度比较短的字符串, 那么 Redis 就会使用压缩列表(ziplist)来做列表键的底层实现。
当一个哈希键只包含少量键值对, 并且每个键值对的键和值要么就是小整数值, 要么就是长度比较短的字符串, 那么 Redis 就会使用压缩列表来做哈希键的底层实现。
每个压缩列表节点可以保存一个字节数组或者一个整数值,具体类型由该节点的编码表示。
每个节点的 previous_entry_length
属性都记录了前一个节点的长度:
- 如果前一节点的长度小于
254
字节, 那么previous_entry_length
属性需要用1
字节长的空间来保存这个长度值。 - 如果前一节点的长度大于等于
254
字节, 那么previous_entry_length
属性需要用5
字节长的空间来保存这个长度值,高一个字节固定为0xFE表示字段占5个字节,真正的长度在低4个字节中保存。
因此若插入节点或删除节点,可能会导致previous_entry_length
属性的连锁更新,连锁更新出现的机率并不高。
标签:字节,Redis,列表,长度,数据结构,节点,previous From: https://www.cnblogs.com/gcr277/p/17037741.html