标准 专业
多元 极客

Redis实验室(3)——常用命令介绍——列表

列表类型

列表类型可以存储一个有序的字符串列表,常用的操作是向列表两端添加元素,或者获取列表中的某个字段。
列表类型是使用双向列表实现的,所以向列表两端添加元素的时间复杂度是常数,越接近两端的元素,查询速度就越快。
一个列表类型最多能容纳2^32-1个元素。

PUSH

LPUSH和RPUSH命令用于向列表两端增加元素,代码如下:

127.0.0.1:6379> LPUSH handsome sunshine yang
(integer) 2
127.0.0.1:6379> RPUSH handsome architect
(integer) 3

返回值表示增加元素后列表的长度。

POP

LPOP和RPOP命令用于从列表两端弹出元素。这两个命令执行两步操作,第一步是将列表两端的元素从列表移除,第二步是返回被移除的元素值,代码如下:

127.0.0.1:6379> LPOP handsome
"yang"
127.0.0.1:6379> RPOP handsome
"architect"

上面的4个命令可以使用列表类型来模拟栈和队列的操作,栈就使用LPUSH和LPOP命令或者RPUSH和RPOP命令,队列就使用LPUSH和RPOP或者RPUSH和LPOP。

LLEN

LLEN命令用于获取列表中元素的个数,复杂度为O(1),代码如下:

127.0.0.1:6379> LLEN handsome
(integer) 1

LRANGE

LRANGE命令用来获取列表中的某一片段,Redis的列表起始索引是0。

127.0.0.1:6379> LRANGE handsome 1 -1
1) "yang"
2) "song"
3) "lin"

这是后就有个一个问题了,你说了这么多,我都不知道列表里有什么,我想看看列表所有的东西,这就需要举一反三一下,代码如下:

127.0.0.1:6379> LRANGE handsome 0 -1
1) "sunshine"
2) "yang"
3) "song"
4) "lin"

关于LRANGE的一些特殊情况,如果起始索引的位置在终止索引的位置的后面,则返回空。如果终止索引的位置大于实际范围,则会返回到列表最右边的元素,代码如下:

127.0.0.1:6379> LRANGE handsome 1 0
(empty list or set)
127.0.0.1:6379> LRANGE handsome 1 999
1) "yang"
2) "song"
3) "lin"

LREM

LREM(LREM key count value)命令用来删除列表中前count个值为value的元素,返回值是实际删除的元素个数。根据count值大小的不同,LREM命令的执行方式会略有差异,解释如下:

  • 当count>0时,LREM命令会从列表的左手边开始删除前count个值为value的元素。
  • 当count<0时,LREM命令会从列表的右手边开始删除前count个值为value的元素。
  • 当count=0时,LREM命令会删除所有值为value的元素。
    代码如下:
127.0.0.1:6379> LPUSH people yang java xiang java liu js architect java hao js
(integer) 10
127.0.0.1:6379> LRANGE people 0 -1
 1) "js"
 2) "hao"
 3) "java"
 4) "architect"
 5) "js"
 6) "liu"
 7) "java"
 8) "xiang"
 9) "java"
10) "yang"
127.0.0.1:6379> LREM people 2 java
(integer) 2
127.0.0.1:6379> LREM people -2 js
(integer) 2
127.0.0.1:6379> LREM people 10 java
(integer) 1
127.0.0.1:6379> LREM people 0 java
(integer) 3

各位都是未来的架构师,智商都在180以上,举一反十更是家常便饭,你们便会想,既然有LREM,肯定有RREM吧,代码如下:

127.0.0.1:6379> RREM people 0 java
(error) ERR unknown command 'RREM'

呵呵。

赞(1) 投币

评论 抢沙发

慕勋的实验室慕勋的研究院

码字不容易,路过请投币

支付宝扫一扫

微信扫一扫