Redis基本操作-List列表

  • 基本介绍
  • 命令
  • 左右或者头尾压入元素
  • 左右或者头尾弹出元素
  • 从一个列表尾部弹出元素压入另外一个列表头部
  • 返回列表中指定范围元素
  • 获取指定位置的元素
  • 设置指定位置元素的值
  • 列表长度,元素个数
  • 从列表头部开始删除值等于value的元素count次
  • 去除指定范围外的元素
  • 阻塞
  • 模拟案例


基本介绍

基于Linked List实现

元素是字符串类型

列表头尾增删快,中间增删慢。增删元素是常态

最多包含2^31-1个元素

查询redis中list中某个值 redis查询list长度_Redis


列表索引,从左到右从0开始,从右到左是从-1开始

命令

B block块,阻塞
L left左
R right 右
X exist存在

左右或者头尾压入元素

LPUSH key value[value...]
LPUSHX key value
RPUSH key value [value...]
RPUSHX key value

左右或者头尾弹出元素

LPOP key
RPOP key

从一个列表尾部弹出元素压入另外一个列表头部

RPOPLPUSH source destination

返回列表中指定范围元素

LRANGE key start stop

LRANDE key 0 -1返回列表所有元素

获取指定位置的元素

LINDEX key index

设置指定位置元素的值

LSET key index value

列表长度,元素个数

LLEN key

查询redis中list中某个值 redis查询list长度_List_02


查询redis中list中某个值 redis查询list长度_查询redis中list中某个值_03


查询redis中list中某个值 redis查询list长度_List_04


查询redis中list中某个值 redis查询list长度_Redis_05

从列表头部开始删除值等于value的元素count次

LREM key count value

count>0:从表头开始向表尾搜索,移除与value相同的元素,数量为count

count<0:从表尾开始向表头搜索,移除与value相同的元素,数量为count的绝对值

count=0:移除表中所有与value相同的元素

查询redis中list中某个值 redis查询list长度_List_06

去除指定范围外的元素

LTRIM key start value

查询redis中list中某个值 redis查询list长度_Redis_07

阻塞

如果弹出的列表不存在或者为空,就会阻塞
超时时间设置为0,就是永久阻塞,直到有数据可以弹出
如果多个客户端阻塞在同一个列表上,使用First In First Service原则
左右或者头尾阻塞弹出元素

BLPOP key [key....] timeout
BRPOP  key [key....] timeout

从一个列表尾部阻塞弹出元素压入到另一个列表的头部

BRPOPLPUSH source destination timeout

模拟案例

微博评论最后500条

LTRIM u123:forumid:comments 0 499

在列表中某个存在的值(pivot)前后后插入元素

LINSERT key BEFORE|AFTER pivot value

key和pivot不存在,不进行任何操作

查询redis中list中某个值 redis查询list长度_List_08