Redis' lists

2017-03-02  本文已影响0人  GrooveWind

Redis列表基本操作命令

命令 行为
LPUSH 将值设在列表头部
RPUSH 将值设在列表尾部
LPOP 将列表头部值推出
RPOP 将列表尾部值推出
LRANGE 获取列表在给定范围上的所有元素
LINDEX 获取列表在给定位置上的单个元素

Redis list底层结构

Redis list由链表来实现。在Redis中链表的应用非常广泛,包括但不限于:链表键、发布/订阅、慢查询、监视器等。Redis服务器本身还使用链表来保存多个客户端的状态信息、以及使用链表来构建客户端输出缓冲区。
链表节点的结构体表示为:
typedef struct listNode { struct listNode *prev; struct listNode *next; void *value; } listNode;
很明显,listNode可以构造出双向链表。
通过list来封装listNode,可以使得操作更加方便:
typedef struct list { listNode *head; listNode *tail; unsigned long len; // 链表包含的节点数量 void *(*dup)(void *ptr); // 节点值复制函数 void *(*free)(void *ptr); // 节点值释放函数 int (*match)(void *ptr, void *key); // 节点值对比函数 } list;

Redis链表的优势

上一篇下一篇

猜你喜欢

热点阅读