Redis基本命令一Lists操作

Lists特点:元素有序可重复

命令一览:RPUSH、LPUSH、LRANGE、LPOP、RPOP、LLEN、LINDEX 、LSET、LREM、LTRIM、RPOPLPUSH

命令翻译自Redis,点击跳转:You can try redis command by yourself.Come on !

一、RPUSH

1、操作对象:Lists

2、用法:RPUSH key value1 value2 ... valueN

3、时间复杂度:O(1)

4、作用:向指定名为key的List的尾部添加一个或多个String类型的value,如果key不存在,会在执行RPUSH之前追加创建一个没有元素的空List,如果key存在但不是List类型则返回错误

5、返回值:成功返回List的元素个数

举例:

> RPUSH friends "Alice"
(integer) 1
> RPUSH friends "Bob"
(integer) 2

二、LPUSH

1、操作对象:Lists

2、用法:LPUSH key value1 value2 ... valueN

3、时间复杂度:O(1)

4、作用:向指定名为key的List的头部添加一个或多个String类型的value,如果key不存在,会在执行LPUSH之前追加创建一个没有元素的空List,如果key存在但不是List类型则返回错误

5、返回值:成功返回List的元素个数

举例:

> LPUSH friends "Bill"
(integer) 4

三、LRANGE

1、操作对象:Lists

2、用法:LRANGE key start end

3、时间复杂度:O(n)(n表示start到end范围内的长度)

4、作用:根据起始索引到结束索引查询List中对应范围中的元素,0是List中第一个元素的索引,依此类推

5、返回值:指定范围内的一批元素

6、三种情况:

     1)start可以从0开始,end为-1表示到List末尾元素,为-2表示到List倒数第二个元素,依次类推

     2)end大于List长度,不会有错误,Redis会认为到List末尾元素

     3)start超出List长度或者start>end,返回空的List

举例:

> LRANGE friends 0 -1
1) "Sam"
2) "Alice"
3) "Bob"
> LRANGE friends 0 1
1) "Sam"
2) "Alice"
> LRANGE friends 1 2
1) "Alice"
2) "Bob"
> LRANGE friends 0 10
1) "Sam"
2) "Alice"
3) "Bob"
> LRANGE friends 2 1
(empty list or set)

四、LPOP

1、操作对象:Lists

2、用法:LPOP key

3、时间复杂度:O(1)

4、作用:从List的头部弹出元素,并将弹出元素返回,List将不再含有该元素

5、返回值:List中弹出的元素,如果key不存在或者List为空则返回nil

举例:

> LRANGE friends 0 -1
1) "Sam"
2) "Alice"
3) "Bob"
> LPOP friends
"Sam"
> LRANGE friends 0 -1
1) "Alice"
2) "Bob"

五、RPOP

1、操作对象:Lists

2、用法:RPOP key

3、时间复杂度:O(1)

4、作用:从List的尾部弹出元素,并将弹出元素返回,List将不再含有该元素

5、返回值:List中弹出的元素,如果key不存在或者List为空则返回nil

举例:

> LRANGE friends 0 -1
1) "Alice"
2) "Bob"
> RPOP friends
"Bob"
> LRANGE friends 0 -1
1) "Alice"

六、LLEN

1、操作对象:Lists

2、用法:LLEN key

3、时间复杂度:O(1)

4、作用:获取指定List的长度

5、返回值:如果key不存在或者List为空则返回0,如果key对应的value不是List类型则返回错误

举例:

> LLEN friends
(integer) 1
> LLEN connections
(error) WRONGTYPE Operation against a key holding the wrong kind of value

七、LINDEX 

1、操作对象:Lists

2、用法:LINDEX key index

3、时间复杂度:O(N)(N表示List的长度)

4、作用:获取List中指定元素,0是第一个元素,依此类推,-1是最后一个元素,-2是倒数第二个,依此类推

5、返回值:如果key保存的value不是List类型返回错误,如果index超出List长度返回空的字符串

6、平均时间复杂是O(N),但是访问第一个或最后一个的时间复杂度是O(1)

举例:

> LPUSH mylist 7 6 5 4
(integer) 8
> LRANGE mylist 0 -1
1) "4"
2) "5"
3) "6"
4) "7"
> LINDEX mylist 3
"7"

八、LSET

1、操作对象:Lists

2、用法:LSET key index value

3、时间复杂度:O(N)(N表示List的长度)

4、作用:替换List指定index的value,0是第一个元素,依此类推,-1是最后一个元素,-2是倒数第二个,依此类推

5、返回值:如果index长度溢出会返回错误

6、平均时间复杂是O(N),但是替换第一个或最后一个的时间复杂度是O(1)

举例:

> LRANGE mylist 0 -1
1) "4"
2) "5"
3) "6"
4) "7"
> LSET mylist 3 8
OK
> LRANGE mylist 0 -1
1) "4"
2) "5"
3) "6"
4) "8"
> LSET mylist 4 2
(error) ERR index out of range

九、LREM 

1、操作对象:Lists

2、用法:LREM key count value

3、时间复杂度:O(N)(N表示List的长度)

4、作用:删除List中count个指定的value,count为负数,表示从尾到头删除,count为正数,表示从头到尾删除

5、返回值:如果key不存在,LREM会认为List为空,返回0,如果key存在,返回删除value的个数(个数不大于count的绝对值),其他结果请参考示例

举例:

1)新建有重复元素的List

> LPUSH mylist 1 8 3 7 6 5 4 2 3 3 5 5 6 7 7 6 8 9 8 9 8 9 9
(integer) 23
> LRANGE mylist 0 -1
1) "9"
2) "9"
3) "8"
4) "9"
5) "8"
6) "9"
7) "8"
8) "6"
9) "7"
10) "7"
11) "6"
12) "5"
13) "5"
14) "3"
15) "3"
16) "2"
17) "4"
18) "5"
19) "6"
20) "7"
21) "3"
22) "8"
23) "1"

2)count为正数:从头到尾删除,count取值5,vlaue取值9,实际只有四个9,预期返回4

> LREM mylist 5 9
(integer) 4
> LRANGE mylist 0 -1
1) "8"
2) "8"
3) "8"
4) "6"
5) "7"
6) "7"
7) "6"
8) "5"
9) "5"
10) "3"
11) "3"
12) "2"
13) "4"
14) "5"
15) "6"
16) "7"
17) "3"
18) "8"
19) "1"

3)count为负数:从尾到头删除,count取值-5,vlaue取值7,实际只有三个7,预期返回3

> LREM mylist -5 7
(integer) 3
> LRANGE mylist 0 -1
1) "8"
2) "8"
3) "8"
4) "6"
5) "6"
6) "5"
7) "5"
8) "3"
9) "3"
10) "2"
11) "4"
12) "5"
13) "6"
14) "3"
15) "8"
16) "1"

4)count为负数:从尾到头删除,count取值-2,vlaue取值6,实际有三个6,预期返回2

> LREM mylist -2 6
(integer) 2
> LRANGE mylist 0 -1
1) "8"
2) "8"
3) "8"
4) "6"
5) "5"
6) "5"
7) "3"
8) "3"
9) "2"
10) "4"
11) "5"
12) "3"
13) "8"
14) "1"

5)count为正数:从头到尾删除,count取值-3,vlaue取值8,实际有四个8,预期返回3

> LREM mylist 3 8
(integer) 3
> LRANGE mylist 0 -1
1) "6"
2) "5"
3) "5"
4) "3"
5) "3"
6) "2"
7) "4"
8) "5"
9) "3"
10) "8"
11) "1"

6)value不存在:List元素列表参考5),预期返回0

> LREM mylist 3 9
(integer) 0

 7)key不存在:预期返回0

> LREM yourlist 3 9
(integer) 0

8) count为0:删除List中的所有元素,List元素列表参考5),预期返回存在的value个数

> LREM mylist 0 3
(integer) 3
> LRANGE mylist 0 -1
1) "6"
2) "5"
3) "5"
4) "2"
5) "4"
6) "5"
7) "8"
8) "1"

十、LTRIM 

1、操作对象:Lists

2、用法:LTRIM key start end

3、时间复杂度:O(N)(N表示List长度减去范围长度)

4、作用:截短List中的元素从start到end,执行此操作后,List中剩余元素包含start,end,start和end之间的元素

5、返回值:状态码 OK

6、三种情况:

     1)start可以从0开始,end为-1表示到List末尾元素,为-2表示到List倒数第二个元素,依次类推

     2)end大于List长度,不会有错误,Redis会认为到List末尾元素

     3)start超出List长度或者start>end,清空List

7、提示:LTRIM与LPUSH / RPUSH经常一起使用

      LPUSH mylist <someelement>

      LTRIM mylist 0 99

     上面的两个命令将把列表中的元素压入列表,注意列表不会无限制地增长。 例如,在使用Redis存储日志时,这非常有用。 重要的是要注意,当以这种方式使用LTRIM时,它是O(1)运算,因为在通常情况下,列表的尾部仅删除一个元素

举例:

> RPUSH trimlist 1 2 3 4 5 0 9 8 7 6
(integer) 10
> LRANGE trimlist 0 -1
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "0"
7) "9"
8) "8"
9) "7"
10) "6"
> LTRIM trimlist 3 8
OK
> LRANGE trimlist 0 -1
1) "4"
2) "5"
3) "0"
4) "9"
5) "8"
6) "7"

十一、RPOPLPUSH 

1、操作对象:Lists

2、用法:RPOPLPUSH srckey dstkey

3、时间复杂度:O(1)

4、作用:将srckey的尾部元素移动到dstkey的头部并返回该元素,即srckey失去尾部元素,dstkey在头部得到元素

5、返回值:元素值

举例:

> RPUSH srckey 0 1 2 3 4
(integer) 5
> LRANGE dstkey 0 -1
(empty list or set)
> RPOPLPUSH srckey dstkey
"4"
> LRANGE dstkey 0 -1
1) "4"
> LRANGE srckey 0 -1
1) "0"
2) "1"
3) "2"
4) "3"
> RPOPLPUSH srckey dstkey
"3"
> LRANGE dstkey 0 -1
1) "3"
2) "4"
> LRANGE srckey 0 -1
1) "0"
2) "1"
3) "2"

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Redis是一个开源的高性能内存数据库,它支持多种数据结构,如字符串(Strings)、哈希(Hashes)、列表(Lists)、集合(Sets)、有序集合(Sorted Sets)等。以下是 Redis 常用命令及其操作: 1. SET key value:将 key 的值设为 value。 2. GET key:获取 key 的值。 3. DEL key:删除 key。 4. INCR key:将 key 中储存的数字值增一。 5. DECR key:将 key 中储存的数字值减一。 6. EXISTS key:检查 key 是否存在。 7. KEYS pattern:查找所有符合给定模式 pattern 的 key。 8. TTL key:以秒为单位,返回 key 的剩余过期时间。 9. EXPIRE key seconds:设置 key 的过期时间,单位为秒。 10. HSET key field value:将哈希表 key 中的域 field 的值设为 value。 11. HGET key field:获取哈希表 key 中指定域 field 的值。 12. HMSET key field1 value1 field2 value2 ...:同时将多个 field-value (域-值)对设置到哈希表 key 中。 13. HMGET key field1 field2 ...:获取所有给定域的值。 14. LPUSH key value1 value2 ...:将一个或多个值插入到列表 key 的表头。 15. RPUSH key value1 value2 ...:将一个或多个值插入到列表 key 的表尾。 16. LPOP key:移除并返回列表 key 的头元素。 17. RPOP key:移除并返回列表 key 的尾元素。 18. SADD key member1 member2 ...:将一个或多个 member 元素加入到集合 key 中。 19. SMEMBERS key:返回集合 key 中的所有成员。 20. ZADD key score1 member1 score2 member2 ...:将一个或多个 member 元素及其 score 值加入到有序集合 key 中。 以上是 Redis 常用命令及其操作的部分示例,还有很多其他命令操作方式可以进行探索和学习。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值