Redis 数据库之列表(list)

列表(list)

  • 在 Redis 中,List 类型是按照插入顺序排序的字符串链表。和数据结构中的普通链表一样,我们可以在其头部(left)和尾部(right)添加新的元素。在插入时,如果该键并不存在,Redis 将为该键创建一个新的链表。如果链表中的所有元素都被移除,那么该键也将会被从数据库中移除。List 中可以包含的最大元素数量是 4294967295。

  • 从元素插入和删除的效率角度来看,如果我们是在链表的两头插入或删除,这将是非常高效的操作,即使链表中已经存储了百万条记录,该操作也可以在常量时间内完成。如果插入或删除操作是作用于链表中间,那将会是非常低效的。


两端添加(lpush)(rpush)

  • 在指定的 key 映射的 list 头部或尾部插入一个或多个 value 。如果 key 不存在,该命令在插入之前先创建一个空链表,之后再插入数据。插入成功,返回插入的数量。
    lpush key value value ...
    rpush key value value ...
    这里写图片描述

读取列表(lrange)

lrange key startIndex endIndex

  • 从链表中读取从 startIndex(包含) 到 endIndex(包含) 的元素。索引从 0 开始,endIndex 可以为负数,-1 表示尾部的元素,-2 表示倒数第二个元素,以此类推。
    Redis 数据库之列表(list)_第1张图片

两端弹出(lpop)(rpop)

lpop key
rpop key

  • 从链表的头部或尾部删除元素,如果 key 存在,则返回被删除的元素,如果 key 不存在,则返回 nil
    Redis 数据库之列表(list)_第2张图片

获取列表中元素的个数(llen)

llen key
这里写图片描述


两端插入(仅当list存在)(lpushx)(rpushx)

lpushx key value value ...
rpushx key value value ...

  • 仅当 List 存在时,向列表两端插入一个元素,如果 List 不存在则不插入。
    Redis 数据库之列表(list)_第3张图片

删除(lrem)

lrem key count value

  • 从 key 中删除 count 个值为 value 的元素。如果 count 大于 0,从头部开始查找 count 个值为 value 的元素。如果 count 小于 0,则从尾部开始遍历。如果 count 等于 0,则删除所有值等于 value 的元素。
    Redis 数据库之列表(list)_第4张图片

修改元素(lset)

lset key index value

  • 设置链表中索引为 index 的元素值。0 代表头部元素,-1 代表尾部元素,索引不存在则报错。
    Redis 数据库之列表(list)_第5张图片

插入元素(linsert)

linsert key (before | after) element value

  • 在第一个 element 元素之前或者之后插入值为 velue 的元素。
    Redis 数据库之列表(list)_第6张图片

弹出/添加

rpoplpush resource destination

  • 从源链表的尾部弹出元素并添加到目标链表的头部,目标链表可以与源链表相同。
    Redis 数据库之列表(list)_第7张图片

你可能感兴趣的:(数据库)