Redis list -- 双向链表,l(L)开头 | ||
命令 |
效果 |
备注 |
lpush listkey value |
在list的头部添加value |
lpush list01 lzj |
lrange listkey start end |
表示从下标start开始取到end
|
lrange list01 0 -1 |
lset listkey index value |
设置list中指定下标的值 |
lset list01 1 24 |
lrem listkey index value |
从下标开始删除list中和value相同的元素 |
lrem list01 0 lzj |
ltrim listkey from to |
保留指定范围内的数据 |
ltrim list01 0 1 |
lpop listkey |
从list的头部删除并返回元素 |
lpop list01 |
lindex listkey index |
获取指定下标的数据 |
lindex list01 1 |
llen |
获取list的长度 |
llen list01 |
|
链表的实现分为两部分
1.链表结点(双向链表)
struct listNode {
//前驱结点
listNode *next;
//后继结点
listNode *prev;
//结点的值
void *value;
}
redis对双向链表进行了包装并提供了很多常用函数
struct list {
//链表头结点
listNode *head;
//链表末尾结点
listNode *tail;
//链表的元素数量
unsigned long len;
//结点值复制函数
void *(*dup) (void *ptr);
//结点值释放函数
void (*free) (void *ptr);
//结点值比较函数
int (*match) (void *ptr,void *key);
} list;