Redis 学习笔记:列表类型

一、概述

redis 的列表类型可以存储一个有序的字符串列表,内部实现是一个双向链表,允许用户从两端插入元素。所以向两端插入数据的速度是极快的,而且获取数据时也是越接近两端速度越快,一个列表最多能容纳 2^32 - 1 个元素。

二、命令

2.1 在两端插入元素

  • LPUSH key value [value ...]:在列表的左端插入元素。
  • RPUSH key value [value ...]:在列表的右端插入元素。

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

2.2 查询元素

  • LRANGE key start end:获取 [start, end]区间的元素。

索引是从 0 开始,可用-1 表示最后一个元素。

2.3 弹出元素

  • RPOP key:弹出并返回最右边的元素。
  • LPOP key:弹出并返回最左边的元素。

2.4 索引操作

  • LINDEX key offset:获取索引为 offset 的元素。
  • LSET key index value:设置索引为 index 的数据为 value,索引从 0 开始。。
  • LINSERT key BEFORE|AFTER pivot value:在 pivot 前面或者后面插入值。

索引都是从 0 开始,LINDEX 命令中 offset<0 时从右边开始计算索引。

2.5 获取列表长度

  • LLEN key:获取列表的长度。

2.6 删除元素

  • LREM key count value:删除 count 个值为 value 的元素,返回成功删除的元素个数。当 count<0时从右边开始删除,当count>0时从左边开始删,当count=0时删除所有的 value 。

2.7 修剪元素

  •  LTRIM key start end:修剪列表元素,只保留 [start, end]区间的元素。

2.8 转移元素到另一个列表

  • RPOPLPUSH src dest:从 src 中弹出最右边的元素并插入到 dest 的左边,整个过程是原子的。

2.9 阻塞式命令

  • BLPOP/BRPOP key [key ...] timeout:从列表 key 中弹出最左端或者最右端的元素,如果列表中 没有元素,将一直等待 timeout 时间直到列表中有元素,timeout=0 表示不限制超时时间,返回列表名和弹出的元素。
  • BRPOPLPUSH src dest timeouit:从 src 中弹出元素并存到 dest 中,会阻塞 timeout 时间。

开启两个 redis 终端,第一个终端阻塞弹出:

第二个终端插入元素:

此时第一个终端将会返回数据:

再次输入命令 brpop msgList 0,此时会立马弹出 456,因为列表中存在 456:

发表评论