Redis五大数据类型之List操作命令
@toc
一、常用命令
1.1、BLPOP key1[key2] timeout
移出并获取列表的第一个元素,如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止
1.2、BPROP key1[key2] timeout
移出并获取列表的最后一个元素,如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止
1.3、BRPOPLPUSH source destination timeout
从列表中弹出一个值,将弹出的元素插入到另外一个列表中并返回它;如果列表没有元素会阻塞列表知道等待超时或发现可弹出元素为止
1.4、LINDEX key index
通过索引获取列表中的元素
1.5、LINSERT key BEFORE|AFTER pivot value
在列表的元素前或者后插入元素
1.6、LLEN key
返回列表 key 的长度。
如果 key 不存在,则 key 被解释为一个空列表,返回 0 .
如果 key 不是列表类型,返回一个错误。
1.7、LPOP key
移除并返回列表 key 的头元素。
1.8、LPUSH key value1 [value2]
将一个或多个值 value 插入到列表 key 的表头
如果有多个 value 值,那么各个 value 值按从左到右的顺序依次插入到表头: 比如说,对空列表 mylist 执行命令 LPUSH
mylist a b c ,列表的值将是 c b a ,这等同于原子性地执行 LPUSH mylist a 、 LPUSH mylist b
和 LPUSH mylist c 三个命令。如果 key 不存在,一个空列表会被创建并执行 LPUSH 操作。
当 key 存在但不是列表类型时,返回一个错误。
1.9、LPUSHX key value
将值 value 插入到列表 key 的表头,当且仅当 key 存在并且是一个列表。 和 LPUSH key value [value …]
命令相反,当 key 不存在时, LPUSHX 命令什么也不做。
1.10、LRANGE key start stop
返回列表 key 中指定区间内的元素,区间以偏移量 start 和 stop 指定。
下标(index)参数 start 和 stop 都以 0 为底,也就是说,以 0 表示列表的第一个元素,以 1
表示列表的第二个元素,以此类推。你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。
1.11、LREM key count value
根据参数 count 的值,移除列表中与参数 value 相等的元素。
count 的值可以是以下几种:
count > 0 : 从表头开始向表尾搜索,移除与 value 相等的元素,数量为 count 。
count < 0 : 从表尾开始向表头搜索,移除与 value 相等的元素,数量为 count 的绝对值。
count = 0 : 移除表中所有与 value 相等的值。
1.12、LSET key index value
将列表 key 下标为 index 的元素的值设置为 value 。
当 index 参数超出范围,或对一个空列表( key 不存在)进行 LSET 时,返回一个错误。
1.13、LTRIM key start stop
对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。
举个例子,执行命令 LTRIM list 0 2 ,表示只保留列表 list 的前三个元素,其余元素全部删除。
下标(index)参数 start 和 stop 都以 0 为底,也就是说,以 0 表示列表的第一个元素,以 1
表示列表的第二个元素,以此类推。你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。
当 key 不是列表类型时,返回一个错误。
1.14、RPOP key
移除并返回列表 key 的尾元素
1.15、 RPOPLPUSH source destination
命令 RPOPLPUSH 在一个原子时间内,执行以下两个动作:
将列表 source 中的最后一个元素(尾元素)弹出,并返回给客户端。
将 source 弹出的元素插入到列表 destination ,作为 destination 列表的的头元素。
举个例子,你有两个列表 source 和 destination , source 列表有元素 a, b, c , destination
列表有元素 x, y, z ,执行 RPOPLPUSH source destination 之后, source 列表包含元素 a, b
, destination 列表包含元素 c, x, y, z ,并且元素 c 会被返回给客户端。如果 source 不存在,值 nil 被返回,并且不执行其他动作。
如果 source 和 destination
相同,则列表中的表尾元素被移动到表头,并返回该元素,可以把这种特殊情况视作列表的旋转(rotation)操作。
1.16、RPUSH key value1 [value2]
将一个或多个值 value 插入到列表 key 的表尾(最右边)。
如果有多个 value 值,那么各个 value 值按从左到右的顺序依次插入到表尾:比如对一个空列表 mylist 执行 RPUSH
mylist a b c ,得出的结果列表为 a b c ,等同于执行命令 RPUSH mylist a 、 RPUSH mylist b
、 RPUSH mylist c 。
如果 key 不存在,一个空列表会被创建并执行 RPUSH 操作。
当 key 存在但不是列表类型时,返回一个错误。
1.17、RPUSHX key value
将值 value 插入到列表 key 的表尾,当且仅当 key 存在并且是一个列表。
和 RPUSH key value [value …] 命令相反,当 key 不存在时, RPUSHX 命令什么也不做。
二、实操
表头插几个值
lpush list01 1 2 3 4 5
查看
lrange list02 0 -1
从list01和list02的表头分别出几个值
lpop list01
lpop list02
从表尾出几个值
rpop list01
rpop list02
再查看list01和list02的值
这里你理解成lpop是从栈顶出,rpop是从栈底出就明白了(或者链表表头和表尾)
通过索引获取元素
lindex list01 3
lindex list01 2
lindex list02 2
获取key的长度
llen list01
llenlist02
从列表尾部插入
RPUSH list03 1 1 1 2 2 2 3 3 3 4 4 4 5 6 7
哎呀,卧槽,不小心关掉了ssh连接,实操记录没了,就先写到这里吧,博友们看上面的基础操作命令照着走就行,不难
- 点赞
- 收藏
- 关注作者
评论(0)