redis中的list类型有点类似于编程语言中的数组,list类型如下图所示,实际上是一种双向链表结构,通过lpush、lpop、rpush、rpop这几个命令来控制链表中数据出入,所以list类型可以用作栈,也可以用作队列一样。
从元素插入和删除的效率来看,如果从链表的两头插入或删除元素,会非常的高效,即使链表中已经存储了上百万条的记录,也可以在很短的时间内完成。然而需要说明的是,如果元素插入或删除操作是作用于链表中间,那将会是非常低效的。相信对于有良好数据结构基础的开发者而言,这一点并不难理解。
因此, redis链表经常会被用于消息队列的服务,以完成多程序之间的消息交换。
以下是链表类型(list)的一些常用命令:
1.【 lpush key value 】 往队列头部插入一个元素
2.【 rpush key value 】 从尾部插入一个元素
3.【 lpop key 】 从队列头部删掉一个元素
4.【 rpop key 】 从队列尾部删掉一个元素,并返回被删除元素的值
5.【 llen 】 返回队列的长度,即里面有多少个元素。不存在key返回0,不为队列类型的key会返回报错。
6.【 lrange key start end 】 返回队列从start到end之间的元素信息。
7.【 ltrim key start end 】 截取一个队列,只保留指定区间内的元素。