List
simple-redis 中定义了 List 接口,以定义 List 的各种操作。
1 | // Expected check whether given item is equals to expected value |
数据结构
快速链表
在 simple-redis 中,采用快速链表作为 List 的数据结构。
快速链表实际上就是一个双向链表,但是双向链表中的每一个节点不是存储一个数据,而是将数据连续存放形成一段连续的存储空间作为链表的节点。
这一段连续的存储空间在 godis 中被称为 page(每一个 page 的大小为 1024),page 的类型为空接口切片。
1 | const ( |
迭代器
又定义了 iterator 为快速链表的迭代器,在 [-1, QuickList.Len()]
范围内移动。
- node 表示元素所在的 page。
- offset 表示这个元素在 page 中的下标。
1 | // iterator of QuickList, move between [-1, ql.Len()] |