目录
1. lpush key value1 value2 ...
4. rpush key value1 value2 ...
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的元素生效。