Redis List(哈希表) 命令使用

本文主要用作学习记录,参考http://redisdoc.com/index.html

#BLPOP

BLPOP 是列表的阻塞式(blocking)弹出原语。
它是 LPOP 命令的阻塞版本,当给定列表内没有任何元素可供弹出的时候,连接将被 BLPOP 命令阻塞,直到等待超时或发现可弹出元素为止。
当给定多个 key 参数时,按参数 key 的先后顺序依次检查各个列表,弹出第一个非空列表的头元素。
非阻塞行为
> lpush command "update"
(integer) 1
> blpop command 0
1) "command"
2) "update"
> blpop command 20
(nil)
(20.04s)

#BRPOP
BRPOP key [key ...] timeout
BRPOP 是列表的阻塞式(blocking)弹出原语。
它是 RPOP 命令的阻塞版本,当给定列表内没有任何元素可供弹出的时候,连接将被 BRPOP 命令阻塞,直到等待超时或发现可弹出元素为止。
当给定多个 key 参数时,按参数 key 的先后顺序依次检查各个列表,弹出第一个非空列表的尾部元素。
关于阻塞操作的更多信息,请查看 BLPOP 命令, BRPOP 除了弹出元素的位置和 BLPOP 不同之外,其他表现一致。

#LINDEX
LINDEX key index
返回列表 key 中,下标为 index 的元素。
下标(index)参数 start 和 stop 都以 0 为底,也就是说,以 0 表示列表的第一个元素,以 1 表示列表的第二个元素,以此类推。
你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。
如果 key 不是列表类型,返回一个错误。
> lpush mylist "world"
(integer) 1
> lpush mylist "hello"
(integer) 2
> lindex mylist 0
"hello"
> lindex mylist 1
"world"
> lindex mylist -1
"world"
> lindex mylist 3
(nil)

#LINSERT
LINSERT key BEFORE|AFTER pivot value
将值 value 插入到列表 key 当中,位于值 pivot 之前或之后。
当 pivot 不存在于列表 key 时,不执行任何操作。
当 key 不存在时, key 被视为空列表,不执行任何操作。
如果 key 不是列表类型,返回一个错误。
> lindex mylist 0
"hello"
> lindex mylist 1
"world"
> lindex mylist 2
"heh"
> linsert mylist before "world" "There"
(integer) 4
> lindex mylist 0
"hello"
> lindex mylist 1
"There"
> lindex mylist 2
"world"
> lindex mylist 3
"heh"


#LLEN
LLEN key
返回列表 key 的长度。
如果 key 不存在,则 key 被解释为一个空列表,返回 0 .
如果 key 不是列表类型,返回一个错误。
> llen mylist
(integer) 4

#LPOP
LPOP key
移除并返回列表 key 的头元素。
> llen mylist
(integer) 4
> lpop mylist
"hello"
> llen mylist
(integer) 3
> rpop mylist
"heh"


#LPUSH
LPUSH key value [value ...]
将一个或多个值 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 存在但不是列表类型时,返回一个错误。
> lpush mylist a b c
(integer) 5


#LPUSHX
LPUSHX key value
将值 value 插入到列表 key 的表头,当且仅当 key 存在并且是一个列表。
和 LPUSH 命令相反,当 key 不存在时, LPUSHX 命令什么也不做。
> llen greet
(integer) 0
> lpushx greet "hello"
(integer) 0
> lpush greet "hello"
(integer) 1
> lpushx greet "world"
(integer) 2


#LRANGE
LRANGE key start stop
返回列表 key 中指定区间内的元素,区间以偏移量 start 和 stop 指定。
下标(index)参数 start 和 stop 都以 0 为底,也就是说,以 0 表示列表的第一个元素,以 1 表示列表的第二个元素,以此类推。
你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。
> lpush greet "hello"
(integer) 1
> lpushx greet "world"
(integer) 2
> lrange greet 0 1
1) "world"
2) "hello"
> llen greet
(integer) 2

#LREM
LREM key count value
根据参数 count 的值,移除列表中与参数 value 相等的元素。
count 的值可以是以下几种:
count > 0 : 从表头开始向表尾搜索,移除与 value 相等的元素,数量为 count 。
count < 0 : 从表尾开始向表头搜索,移除与 value 相等的元素,数量为 count 的绝对值。
count = 0 : 移除表中所有与 value 相等的值。
> lpush greet "morning"
(integer) 1
> lpush greet "hello"
(integer) 2
> lpush greet "morning"
(integer) 3
> lpush greet "hello"
(integer) 4
> lindex greet 0
"hello"
> lindex greet 1
"morning"
> lindex greet 2
"hello"
> lindex greet 3
"morning"
> lrange greet 0 -1
1) "hello"
2) "morning"
3) "hello"
4) "morning"
> lrem greet 2 morning
(integer) 2
> lrange greet 0 -1
1) "hello"
2) "hello"
> lpush greet "hello1"
(integer) 3
> lpush greet "hello"
(integer) 4
> lrange greet 0 -1
1) "hello"
2) "hello1"
3) "hello"
4) "hello"
> lrem greet 1 hello
(integer) 1
> lrange greet 0 -1
1) "hello1"
2) "hello"
3) "hello"
> lrem greet -1 hello
(integer) 1
> lrange greet -1
(error) ERR wrong number of arguments for 'lrange' command
> lrange greet 0 -1
1) "hello1"


#LSET
LSET key index value
将列表 key 下标为 index 的元素的值设置为 value 。
当 index 参数超出范围,或对一个空列表( key 不存在)进行 LSET 时,返回一个错误。
关于列表下标的更多信息,请参考 LINDEX 命令。
> lrange greet 0 -1
1) "hello1"
2) "hello"
> lset greet 0 heh
OK
> lrange greet 0 -1
1) "heh"
2) "hello"



LTRIM
LTRIM key start stop
对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。
举个例子,执行命令 LTRIM list 0 2 ,表示只保留列表 list 的前三个元素,其余元素全部删除。
下标(index)参数 start 和 stop 都以 0 为底,也就是说,以 0 表示列表的第一个元素,以 1 表示列表的第二个元素,以此类推。
你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。
> lrange greet 0 -1
1) "hello4"
2) "hello3"
3) "hello2"
4) "hello1"
5) "heh"
6) "hello"
> ltrim greet 3 4
OK
> lrange greet 0 -1
1) "hello1"
2) "heh"

#RPOP
RPOP key
移除并返回列表 key 的尾元素
> rpush greet "one"
(integer) 1
> rpush greet "two"
(integer) 2
> rpush greet "three"
(integer) 3
> rpush greet "fire"
(integer) 4
> rpush greet "five"
(integer) 5
> rpop greet
"five"
> rpop greet
"fire"
> rpop greet
"three"
> rpop greet
"two"
> rpop greet
"one"


#RPOPLPUSH
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)操作。

#RPUSH
RPUSH key value [value ...]
将一个或多个值 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 存在但不是列表类型时,返回一个错误。


#RPUSHX
RPUSHX key value
将值 value 插入到列表 key 的表尾,当且仅当 key 存在并且是一个列表。
和 RPUSH 命令相反,当 key 不存在时, RPUSHX 命令什么也不做。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值