命令:
lpush mylist "world"
创建新队列时 Redis 默认使用 REDIS_ENCODING_ZIPLIST 编码, 当以下任意一个条件被满足时, 队列会被转换成 REDIS_ENCODING_LINKEDLIST编码:
- 试图往队列新添加一个字符串值,且这个字符串的长度超过 server.list_max_ziplist_value(默认值为 64)。
- ziplist 包含的节点超过 server.list_max_ziplist_entries (默认值为 512)。
1. ziplist(REDIS_ENCODING_ZIPLIST)作为队列(REDIS_LIST)底层的数据结构实现的内存结构图:
2. 双向链表(REDIS_ENCODING_LINKEDLIST)作为队列(REDIS_LIST)底层的数据结构实现的内存结构图: