压缩列表
压缩列表(ziplist)是列表键和哈希键的底层实现之一。
当一个列表键只包含少量列表项,并且每个列表项要么就是小整数值,要么就是长度比较短的字符串,那么 Redis 就会使用压缩列表来做列表键的底层实现。
比如说,执行以下命令将创建一个压缩列表实现的列表键:
- redis> RPUSH lst 1 3 5 10086 "hello" "world"
- (integer) 6
- redis> OBJECT ENCODING lst
- "ziplist"
因为列表键里面包含的都是 1
、 3
、 5
、 10086
这样的小整数值,以及 "hello"
、 "world"
这样的短字符串。
另外,当一个哈希键只包含少量键值对,并且每个键值对的键和值要么就是小整数值,要么就是长度比较短的字符串,那么 Redis 就会使用压缩列表来做哈希键的底层实现。
举个例子,执行以下命令将创建一个压缩列表实现的哈希键:
- redis> HMSET profile "name" "Jack" "age" 28 "job" "Programmer"
- OK
- redis> OBJECT ENCODING profile
- "ziplist"
因为哈希键里面包含的所有键和值都是小整数值或者短字符串。
本章将对压缩列表的定义以及相关操作进行详细的介绍。