Redis基本数据类型——列表类型

清疚 2022-01-26 02:25 464阅读 0赞

列表类型可以存储一个有序的字符串列表,常用的操作是向列表两端添加元素、或者获取列表某一个片段。

Redis的列表类型是使用双向链表实现的。向两端添加、删除元素的时间复杂度为O(1)。

1、向两端添加、删除元素

格式

  1. redis> LPUSH key value [value …] # 向列表左端添加元素
  2. redis> RPUSH key value [value …] # 向列表右端添加元素
  3. redis> LPOP key # 弹出列表左端第一个元素,会删除元素
  4. redis> RPOP key # 弹出列表右端第一个元素,会删除元素

举例

  1. 127.0.0.1:6379> LPUSH numbers 0
  2. (integer) 1
  3. 127.0.0.1:6379> LPUSH numbers 1 2
  4. (integer) 3
  5. 127.0.0.1:6379> RPUSH numbers -1
  6. (integer) 4
  7. 127.0.0.1:6379> LPUSH numbers 3
  8. (integer) 5
  9. 127.0.0.1:6379> LPOP numbers
  10. "3"
  11. 127.0.0.1:6379> RPOP numbers
  12. "-1"

注:LPUSH和RPUSH返回的结果是列表中的元素个数;LPOP和RPOP返回的结果是弹出的元素值

2、获取列表元素个数

格式

  1. redis> LLEN key

举例

  1. 127.0.0.1:6379> LLEN numbers
  2. (integer) 3

3、获取列表片段

格式

  1. redis> LRANGE key start stop # 返回索引从start到stop之间的所有元素(包括两端元素)

举例

  1. 127.0.0.1:6379> LRANGE numbers 0 2
  2. 1) "2"
  3. 2) "1"
  4. 3) "0"
  5. 127.0.0.1:6379> LRANGE numbers 0 -1
  6. 1) "2"
  7. 2) "1"
  8. 3) "0"
  9. 127.0.0.1:6379> LRANGE numbers 0 1
  10. 1) "2"
  11. 2) "1"
  12. 127.0.0.1:6379> LRANGE numbers -2 -1
  13. 1) "1"
  14. 2) "0"

注:LRANGE命令支持负索引,表示从右边开始计算,如“-1”表示最右边第一个元素,以此类推。

如果start > stop:返回空列表。

如果stop > 实际索引范围:返回到列表最右边的元素。

4、删除列表中指定的值

格式

  1. redis> LREM key count value # 删除列表中前count个值为value的元素

注:

(1)count > 0时,LREM命令会从列表左边开始删除前count个值为value的元素;

(2)count < 0时,LREM命令会从泪奔右边开始删除前count个值为value的元素;

(3)count = 0时,LREM命令会删除所有值为value的元素

举例

  1. 127.0.0.1:6379> RPUSH numbers 2
  2. (integer) 4
  3. 127.0.0.1:6379> LRANGE numbers 0 -1
  4. 1) "2"
  5. 2) "1"
  6. 3) "0"
  7. 4) "2"
  8. 127.0.0.1:6379> LREM numbers -1 2
  9. (integer) 1
  10. 127.0.0.1:6379> LRANGE numbers 0 -1
  11. 1) "2"
  12. 2) "1"
  13. 3) "0"
  14. 127.0.0.1:6379> RPUSH numbers 1
  15. (integer) 4
  16. 127.0.0.1:6379> LRANGE numbers 0 -1
  17. 1) "2"
  18. 2) "1"
  19. 3) "0"
  20. 4) "1"
  21. 127.0.0.1:6379> LREM numbers 1 2
  22. (integer) 1
  23. 127.0.0.1:6379> LRANGE numbers 0 -1
  24. 1) "1"
  25. 2) "0"
  26. 3) "1"
  27. 127.0.0.1:6379> LREM numbers 0 1
  28. (integer) 2
  29. 127.0.0.1:6379> LRANGE numbers 0 -1
  30. 1) "0"

5、获取/设置指定索引的元素值

格式

  1. redis> LINDEX key index # 获取指定索引index的元素值
  2. redis> LSET key index value # 设置指定索引indee的元素值为value

举例

  1. 127.0.0.1:6379> LRANGE numbers 0 -1
  2. 1) "4"
  3. 2) "3"
  4. 3) "2"
  5. 4) "1"
  6. 5) "0"
  7. 127.0.0.1:6379> LINDEX numbers 1
  8. "3"
  9. 127.0.0.1:6379> LSET numbers 1 6
  10. OK
  11. 127.0.0.1:6379> LRANGE numbers 0 -1
  12. 1) "4"
  13. 2) "6"
  14. 3) "2"
  15. 4) "1"
  16. 5) "0"

6、只保留列表指定片段的元素值

格式

  1. redis> LTRIM key start end # 该命令会删除指定索引范围外的所有元素

举例

  1. 127.0.0.1:6379> LRANGE numbers 0 -1
  2. 1) "4"
  3. 2) "6"
  4. 3) "2"
  5. 4) "1"
  6. 5) "0"
  7. 127.0.0.1:6379> LTRIM numbers 0 2
  8. OK
  9. 127.0.0.1:6379> LRANGE numbers 0 -1
  10. 1) "4"
  11. 2) "6"
  12. 3) "2"

7、向列表插入元素

格式

  1. redis> LINSERT key BEFORE|AFTER pivot value

注:该命令会从左到右查找值为pivot的第一个元素,然后根据第二个参数是BEFORE或AFTER来决定将value插入到该元素的前面还是后面。返回结果为列表元素个数。

举例

  1. 127.0.0.1:6379> LRANGE numbers 0 -1
  2. 1) "4"
  3. 2) "6"
  4. 3) "2"
  5. 127.0.0.1:6379> LINSERT numbers BEFORE 6 5
  6. (integer) 4
  7. 127.0.0.1:6379> LRANGE numbers 0 -1
  8. 1) "4"
  9. 2) "5"
  10. 3) "6"
  11. 4) "2"
  12. 127.0.0.1:6379> LINSERT numbers AFTER 6 7
  13. (integer) 5
  14. 127.0.0.1:6379> LRANGE numbers 0 -1
  15. 1) "4"
  16. 2) "5"
  17. 3) "6"
  18. 4) "7"
  19. 5) "2"

8、将元素从一个列表转到另一个列表

格式

  1. redis> RPORLPUSH source destination

注:从该命令的名字可以看出,其先执行RPOP命令在执行LPUSH命令

举例

  1. 127.0.0.1:6379> LRANGE numbers 0 -1
  2. 1) "4"
  3. 2) "5"
  4. 3) "6"
  5. 4) "7"
  6. 5) "2"
  7. 127.0.0.1:6379> RPOPLPUSH numbers numbers_new
  8. "2"
  9. 127.0.0.1:6379> LRANGE numbers 0 -1
  10. 1) "4"
  11. 2) "5"
  12. 3) "6"
  13. 4) "7"
  14. 127.0.0.1:6379> LRANGE numbers_new 0 -1
  15. 1) "2"

发表评论

表情:
评论列表 (有 0 条评论,464人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Redis基本数据类型—字符串类型

    字符串类型是Redis中最基本的数据类型,它可以存储任何形式的字符串,包括二进制数据。其他的类型都是以字符串类型为基础,可以看作是字符串类型的不同组织形式。 1、赋值与取值

    相关 Redis基本数据类型——列表类型

    列表类型可以存储一个有序的字符串列表,常用的操作是向列表两端添加元素、或者获取列表某一个片段。 Redis的列表类型是使用双向链表实现的。向两端添加、删除元素的时间复杂度为O