《Redis使用手册之列表》

《Redis使用手册之列表》

目录

LPUSH:将元素推入列表左端

  • 127.0.0.1:6379> lpush list aa bb cc

    (integer) 3

    127.0.0.1:6379> rpush list dd ee ff

    (integer) 6

    lpush :将元素推入列表左端 lpush list aa bb cc 可一次推入多个元素

    LPUSH:将元素推入列表左端

LPUSHX、RPUSHX:只对已存在的列表执行推入操作

  • 127.0.0.1:6379> lpushx list1 aa

    (integer) 0

    127.0.0.1:6379> rpushx list1 aa

    (integer) 0

    LPUSHX命令只会在列表已经存在的情况下,将元素推入列表左端 RPUSHX命令只会在列表已经存在的情况下,将元素推入列表右端。

    LPUSHX命令只会在列表已经存在的情况下,将元素推入列表左端。●RPUSHX命令只会在列表已经存在的情况下,将元素推入列表右端。

LPOP:弹出列表最左端的元素

  • 127.0.0.1:6379> lpop list

    "cc"

    127.0.0.1:6379> lpop list

    "bb"

    127.0.0.1:6379> lpop list

    "aa"

    LPOP:弹出列表最左端的元素。 后进先出

    LPOP:弹出列表最左端的元素

RPOP:弹出列表最右端的元素

  • 127.0.0.1:6379> rpop list

    "ff"

    RPOP:弹出列表最右端的元素

    RPOP:弹出列表最右端的元素

RPOPLPUSH:将右端弹出的元素推入左端

  • 127.0.0.1:6379> rpush list1 a b c

    (integer) 3

    127.0.0.1:6379> rpush list2 d e f

    (integer) 3

    127.0.0.1:6379> rpoplpush list1 list2

    "c"

    127.0.0.1:6379> rpoplpush list1 list2

    "b"

    127.0.0.1:6379> rpoplpush list1 list2

    "a"

    127.0.0.1:6379> rpoplpush list1 list1

    (nil)

    127.0.0.1:6379> rpoplpush list2 list3

    "f"

    列表 list1中的元素已经全部被推至list2中。

    RPOPLPUSH:将右端弹出的元素推入左端

    RPOPLPUSH source target 源列表和目标列表相同 在这种情况下,RPOPLPUSH命令的效果相当于将列表最右端的元素变成列表最左端的元素。

    处理空列表

    如果用户传给RPOPLPUSH命令的源列表并不存在,那么RPOPLPUSH命令将放弃执行弹出和推入操作,只返回一个空值表示命令执行失败。

    如果源列表非空,但是目标列表为空,RPOPLPUSH命令将正常执行弹出操作和推入操作

    RPOPLPUSH:将右端弹出的元素推入左端

LLEN:获取列表的长度

  • 127.0.0.1:6379> llen list1

    (integer) 0

    127.0.0.1:6379> llen list2

    (integer) 5

    LLEN:获取列表的长度

    LLEN:获取列表的长度

LINDEX:获取指定索引上的元素

  • 127.0.0.1:6379> lindex list2 0

    "a"

    127.0.0.1:6379> lindex list2 2

    "c"

    127.0.0.1:6379> lindex list2 1

    "b"

    127.0.0.1:6379> lindex list2 -1

    "e"

    127.0.0.1:6379> lindex list2 -2

    "d"

    LINDEX:获取指定索引上的元素。 正数索引从列表的左端开始计算,一次向右端递增:最左端元素的索引为0 负数索引从列表的右端开始计算,一次向左端递减:最右端元素的索引为-1.

    LINDEX:获取指定索引上的元素

LRANGE:获取指定索引范围上的元素

127.0.0.1:6379> lrange list2 0 -1

  1. "a"
  2. "b"
  3. "c"
  4. "d"
  5. "e"

LRANGE:获取指定索引范围上的元素 LRANGE list start end

LRANGE:获取指定索引范围上的元素

LSET:为指定索引设置新元素

  • 127.0.0.1:6379> lset list2 -1 f

    OK

    127.0.0.1:6379> lrange list2 0 -1

    1. "a"
    2. "b"
    3. "c"
    4. "d"
    5. "f"

    LSET:为指定索引设置新元素 LSET list index new_element

    LSET:为指定索引设置新元素

LINSERT:将元素插入列表

  • 127.0.0.1:6379> linsert list2 after f g

    (integer) 6

    127.0.0.1:6379> lrange list2 0 -1

    1. "a"
    2. "b"
    3. "c"
    4. "d"
    5. "f"
    6. "g"

    LINSERT:将元素插入列表 LINSERT list BEFORE|AFTER target_element new_element

    LINSERT:将元素插入列表

4.12 LTRIM:修剪列表

  • 127.0.0.1:6379> ltrim list2 0 4

    OK

    127.0.0.1:6379> lrange list2 0 -1

    1. "a"
    2. "b"
    3. "c"
    4. "d"
    5. "f"

    LTRIM:修建列表 LTRIM命令接受一个列表和一个索引范围为参数,并移除列表中位于索引范围之外的所有元素,只保留给定范围之内的元素。 LTRIM list start end 与LRANGE命令一样,LTRIM命令不仅可以处理正数索引,还可以处理负数索引。

    LTRIM:修剪列表LTRIM命令接受一个列表和一个索引范围作为参数,并移除列表中位于给定索引范围之外的所有元素,只保留给定范围之内的元素

LREM:从列表中移除指定元素

  • 127.0.0.1:6379> rpush list5 a b b a c c a

    (integer) 7

    127.0.0.1:6379> rpush list6 a b b a c c a

    (integer) 7

    127.0.0.1:6379> rpush list7 a b b a c c a

    (integer) 7

    127.0.0.1:6379> lrem list5 0 a

    (integer) 3

    127.0.0.1:6379> lrange list5 0 -1

    1. "b"
    2. "b"
    3. "c"
    4. "c"
      127.0.0.1:6379> lrem list6 1 a
      (integer) 1
      127.0.0.1:6379> lrange list6 0 -1
    5. "b"
    6. "b"
    7. "a"
    8. "c"
    9. "c"
    10. "a"
      127.0.0.1:6379> lrem list7 -1 a
      (integer) 1

    LREM:从列表中移除指定元素 LREM list count element count参数的值决定了LREM命令移除元素的方式:

    如果count参数的值等于0,那么LREM命令将移除列表中包含的所有指定元素。

    如果count参数的值大于0,那么LREM命令将从列表的左端开始向右进行检查,并移除最先发现的count个指定元素。

    如果count参数的值小于0,那么LREM命令将从列表的右端开始向左进行检查,并移除最先发现的abs(count)个指定元素。abs即count的绝对值。

    LREM:从列表中移除指定元素

BLPOP:阻塞式左端弹出操作

  • 127.0.0.1:6379> blpop list2 5

    1. "list2"
    2. "a"
      127.0.0.1:6379> blpop list2 5 5
    3. "list2"
    4. "b"
      127.0.0.1:6379> blpop list2 50
    5. "list2"
    6. "c"

BLPOP:阻塞式左端弹出操作 BLPOP命令式带有阻塞的左端弹出操作,它接受任意多个列表以及一个妙计精度的超时时限作为参数: BLPOP list [list ...] timeout

BLPOP:阻塞式左端弹出操作BLPOP命令是带有阻塞功能的左端弹出操作,它接受任意多个列表以及一个秒级精度的超时时限作为参数:

BRPOP:阻塞式右端弹出操作

  • 127.0.0.1:6379> brpop list2 30 30

    1. "list2"
    2. "f"

    BRPOP:阻塞式右端弹出操作 BRPOP命令式带有阻塞功能的右端弹出操作,除了弹出的方向不同之外,其他方面都和BLPOP命令一样。

    BRPOP:阻塞式右端弹出操作BRPOP命令是带有阻塞功能的右端弹出操作,除了弹出的方向不同之外,其他方面都和BLPOP命令一样:

BRPOPLPUSH:阻塞式弹出并推入操作

  • BRPOPLPUSH:阻塞式弹出并推入操作 BRPOPLPUSH命令式RPOPLPUSH命令的阻塞版本,BRPOPPUSH命令接受一个源列表、一个目标列表以及一个妙级精度的超时时限作为参数: BRPOPLPUSH source target timeout

BRPOPLPUSH:阻塞式弹出并推入操作BRPOPLPUSH命令是RPOPLPUSH命令的阻塞版本,BRPOPLPUSH命令接受一个源列表、一个目标列表以及一个秒级精度的超时时限作为参数:

相关推荐
不穿格子的程序员24 分钟前
Redis篇6——Redis深度剖析:从单机到集群,Redis高可用进化史
数据库·redis·集群·主从·高可用·哨兵
czlczl200209251 小时前
高并发下的 Token 存储策略: Redis 与 MySQL 的一致性
数据库·redis·mysql
johnny2331 小时前
Redis系列之各版本特性
redis
DemonAvenger2 小时前
Redis发布订阅模式:打造实时消息通信系统的实践指南
数据库·redis·性能优化
a努力。2 小时前
拼多多Java面试被问:Redis的持久化策略对比(RDBVS AOF)
java·redis·面试
cui_win3 小时前
Redis 连接池被占满(泄漏)问题排查
java·redis·连接泄露
java1234_小锋3 小时前
说说Redis的内存淘汰策略?
数据库·redis·缓存
摇滚侠5 小时前
Redis 零基础到进阶,Redis 主从复制,笔记55-62
数据库·redis·笔记
廋到被风吹走5 小时前
【数据库】【Redis】数据结构全景图:命令、场景与避坑指南
数据结构·数据库·redis
卡尔特斯5 小时前
Mac Redis 快速安装与可视化(详细流程)
redis