以下涉及到的源码均为redis5.0-rc3版本的代码【点击查看官方源码】
压缩列表(ziplist)
- 压缩列表是一个特殊编码的列表,为节约内存而开发。
- 压缩列表可以保存字符串和整型值,其中整数存放时仍是整数,而不会变成字符。
- 压缩列表允许push和pop操作在时间复杂度为O(1)的情况下完成。但是每个操作都可能需要重新分配ziplist使用的内存,所以实际的复杂性受ziplist使用内存量及其变动的影响。
- 压缩列表在redis中是列表键和哈希键的底层实现之一。
- 由于压缩列表本就为节约内存而开发,且其改动的操作都可能会重新分配entry的内存,导致操作的时间复杂度增加,所以为了性能上不受影响,其适用于存储小整数值和较短的字符串。