目录
lrem
1.语法
lrem key count value
2.解析
根据参数count的值,移除列表中与参数value相等的元素
count的值可以是以下几种:
count>0:从表头开始向表尾搜索,移除与value相等的元素,数量为count
count<0:从表尾开始向表头搜索,移除与value相等的元素,数量为count的绝对值
count=0:移除表中所有与value相等的值
3.返回值:
被移除元素的数量,因为不存在的key被视作空表,所以当key不存在时,lrem总是返回0
4.例子:
lpush milk a b a b a
lrange milk 0 4 //查看所有元素
lrem milk 2 a //移除从表头到表尾 最先发现的两个a
llen milk
lrange milk 0 2
lrem milk -1 a //移除从表尾到表头第一个a
llen milk
lrange milk 0 1
lrem milk 0 b
llen milk
llen
1.语法
llen key
2.解析
返回列表key的长度
如果key不存在,则key被解释为一个空列表,返回0
如果key不是列表类型,返回一个错误
3.返回值:
列表key的长度。
4.例子:
#空列表
llen milk
#非空列表
lpush milk hello
lpush milk world
llen milk
lindex
1.语法
lindex key index
2.解析
下标参数start和stop都以0为底,也就是说,以0表示列表第一个元素,以此类推
也可以使用负数,比如-1 -2
如果key不是列表类型的,返回一个错误
3.返回值:
列表中下标为index的元素,如果index参数的值不在列表的物件范围内,返回nil
4.例子:
lpush milk hello
lpush milk world
lindex milk 0
lindex milk -1
lindex milk 3
linsert
1.语法
linsert key before|after pivot value
2.解析
将值value插入到列表key当中,位于值pivot之前或之后
当pivot不存在于列表key时,不执行任何操作.
当key不存在时,key被视为空列表,不执行任何操作。
如果key不是列表的话,返回一个错误
3.返回值:
如果命令执行成功的话,返回插入操作完成之后,列表的长度。如果没有找到pivot,返回-1
如果key不存在或为空列表,返回0
4.例子:
rpush milk hello
rpush milk world
linsert milk before world jack
lrange milk 0 -1
#对一个非空列表插入,查找一个不存在的pivot
linsert milk before go lang
#对一个空列表执行linsert命令
exists apple
linsert apple before go lang
lset
1.语法
lset key index value
2.解析
将列表key下标为index的元素的值设置为value
当index参数超出范围,或对一个空列表进行lset,返回一个错误
3.返回值:
操作成功返回ok,否则返回错误信息
4.例子:
#对空列表进行lset
exists apple
lset apple 0 jack
#对非空列表进行lset
lpush milk hello
lrange milk 0 0
lset milk 0 world
lrange milk 0 0
#index超出范围
llen milk
lset milk 2 how
lrange
1.语法
lrange key start stop
2.解析
返回列表key中指定区间内的元素,区间以偏移量start和stop指定
下标参数start和stop都以0为底,也就是说,以0表示列表的第一个元素,以此类推
也可以使用负数。
超出范围的下标
超出范围的下标志不会引起错误
如果start下标比列表的最大下标end还要大,那么lrange返回一个空的列表
如果stop下标比end下标大,redis将stop的值设置为end
3.返回值:
一个列表,包含指定区间内的元素
4.例子:
rpush milk hello
lrange milk 0 0
rpush milk world
lrange milk 0 1
ltrim
1.语法
ltrim key start stop
2.解析
对一个列表进行修剪,就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除
ltrim命令通常和lpush命令或者rpush命令配合使用
3.返回值:
命令执行成功,返回OK
4.例子:
#start和stop都在列表的索引范围内
lrange milk 0 -1
ltrim milk 1 -1 //删除索引之外值
lrange milk 0 -1
#stop比列表的最大下标还要大
ltrim milk 1 10010 //保留1-10010区间的元素值
lrange milk 0 -1
#start 和stop都比列表最大的下标要大,并且start<stop
ltrim milk 1000 2000
lrange milk 0 -1
#start和stop都比列表的最大下标要大,并且start>stop
rpush milk a b c d e
lrange milk 0 -1
ltrim milk 2000 1000
lrange milk 0 -1