【Redis存储】List列表

        列表类型是用来存储多个有序的字符串,列表中的每个字符串称为元素。在 Redis 中,可以对列表两端插入(push)和弹出(pop),还可以获取指定范围的元素列表、 获取指定索引下标的元素等。列表是一种比较灵活的数据结构,它可以充当栈和队列的角色,在实际开发上有很多应用场景。

列表类型的特点:

        1,列表中的元素按插入顺序排列,支持下标访问。元素的位置由插入顺序决定(先插的在前,后插的在后),不会自动排序。

        2,列表中的元素是允许重复的。

        3,List 底层是双向链表,支持从「表头(left)」和「表尾(right)」双向进行增删操作,核心命令(LPUSH/LPOP、RPUSH/RPOP)的时间复杂度均为 O (1),效率极高。

1,常见命令

  • LPUSH:将一个或者多个元素从左侧放入(头插)到 list 中。
  • LPUSHX:在 key 存在时,将一个或者多个元素从左侧放入(头插)到 list 中。不存在,直接返回。
  • RPUSH:将一个或者多个元素从右侧放入(尾插)到 list 中。
  • RPUSHX:在 key 存在时,将⼀个或者多个元素从右侧放入(尾插)到 list 中。
  • LRANGE:获取从 start 到 end 区间的所有元素,左闭右闭。
  • LPOP:从 list 左侧取出元素(即头删)。
  • RPOP:从 list 右侧取出元素(即尾删)。
  • LINDEX:获取从左数第 index 位置的元素。
  • LINSERT:在特定位置插入元素。
  • LLEN:获取 list 长度。
  • BLPOP:LPOP的阻塞版本。
  • BRPOP:RPOP的阻塞版本。

        在列表中有元素的情况下,阻塞和非阻塞表现是⼀致的。但如果列表中没有元素,非阻塞版本会返回nil,但阻塞版本会根据自定义的 timeout (单位:秒。0秒表示永久阻塞),阻塞⼀段时间,期间 Redis 可以执行其他命令,但要求执行该命令的客户端会表现为阻塞状态。

LPUSH key element [element ...]

LPUSHX key element [element ...]

RPUSH key element [element ...]

RPUSHX key element [element ...]

LRANGE key start stop

LPOP key

RPOP key

LINDEX key index

LINSERT key <BEFORE | AFTER> pivot element  // BEFORE 表示在目标元素之前插入,AFTER 表示在之后插入;pivot目标元素(列表中需存在该元素,否则插入失败返回-1);element 是要插入的新元素.

LLEN key

BLPOP key [key ...] timeout

BRPOP key [key ...] timeout

2,内部编码

        列表类型的内部编码有两种:

        ziplist(压缩列表):当列表的元素个数小于 list-max-ziplist-entries 配置(默认 512 个),同时,列表中每个元素的长度都小于 list-max-ziplist-value 配置(默认 64 字节)时,Redis会选用 ziplist 来作为列表的内部编码实现来减少内存消耗。

        linkedlist(链表):当列表类型无法满足 ziplist 的条件时,Redis 会使用 linkedlist 作为列表的内部实现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值