目录
1. lpush key value1 value2 ...
2. lrange key start end
3. lpop key num
4. rpush key value1 value2 ...
5. rpop key num
6. lindex key index
7. llen key
8. lrem key num value
9. rpoplpush key1 key2
10. lset key index value
11. linsert key before/after value newvalue
接下来的所有类型的操作中,-1都代表最后。
List采用链表的存储结构,可以将List当做栈或队列来使用。
1. lpush key value1 value2 ...
List类型操作,用于将所有的值从左端插入到一个List中,相当于入栈,最后一个元素的编号为0(后进先出,所以最后一个元素就是栈顶元素,编号为0)。执行结束后返回list中元素的个数。
2. lrange key start end
获取一个List中部分区间的值,闭区间,要注意start不能大于end,-1除外,因为-1代表末尾元素。获取一个List的所有元素就是lrange list 0 -1。
3. lpop key num
从编号为0的元素开始取出一个List中指定数量的元素,并按顺序返回取出的元素;如果不加num则默认取出1个元素,也就表示取出头部元素;当所有元素被取出时该List就不存在了。执行结束后按照顺序返回所弹出的元素。
4. rpush key value1 value2 ...
用于将所有的值从右端插入到一个List中,相当于入队,第一个元素编号为0。执行结束后返回list中元素的个数。
5. rpop key num
从最后一个元素开始取出一个List中指定数量的元素,并按顺序返回取出的元素;如果不加num则默认表示取出一个元素,也就是取出尾部元素;当所有元素被取出时该List就不存在了。执行结束后按照顺序返回所弹出的元素。
通过一个混合使用的例子方便理解lpush、lpop、rpush、rpop:
6. lindex key index
获取指定List的指定序号的元素。
7. llen key
获取指定List的长度。
8. lrem key num value
从第一个元素开始移除一个List中指定数量的指定value的元素,返回移除元素的数量(注意,这里的第一个元素是实际存储的第一个元素,而不是输入的第一个元素,具体要看是lpush还是rpush)。
lpush:
rpush:
当移除的list不存在或者移除的元素不存在时,会返回0代表移除了0个元素:
9. rpoplpush key1 key2
从key1的List中取出最后一个元素并放到key2的List的头部,当key2不存在时则会创建一个;key1和key2可以相同,代表将末尾元素移到头部。返回值则是移动的元素。
当key1(源list)不存在时,则会返回nil:
10. lset key index value
修改指定List的指定位置的值,仅当key存在且index位置有值时才能生效。
11. linsert key before/after value newvalue
在一个List的指定value的前面/后面插入一个值为newvalue的元素;当value不存在时命令无效,且仅对从头部开始的第一个值为value的元素生效。