• 链表左侧第一个位置默认为0,而最后一个位置默认为-1,倒数第二个元素默认为-2,和python中的list有些类似

  • 本篇文章我将list统称为"链表"

将值压入链表的头部

  • lpush key values:从链表的左侧压入值
  • rpush key values:从链表的右侧压入值

查看链表的值

  • lrange key start stop:如lrange key 0 -1就可以查看链表所有的值

这里的0和-1是根据默认索引指定获取链表的范围

Redis---链表【list】结构以及命令

从链表中弹出值

  • lpop key:从链表左侧弹出值
  • rpop key:从链表右侧弹出值
    Redis---链表【list】结构以及命令

删除链表的值

  • lrem key count value:从链表左侧开始删除count(>0)个值为value的元素

当count<0的时候会从链表的右侧看是删除

Redis---链表【list】结构以及命令

剪切链表

  • ltrim key start stop:剪切[start,stop]的所有元素
    ltrim word 0 6:剪切word中[0,6]的所有元素
    • 0<start <= stop 时,返回[start,stop ]中的值
    • start > stop 时,返回一个空的list,原来的list不变
    • start < length < stop 时,返回[start,length]中的值
    • length < start < stop 时,返回一个空的list,原来的list被这个空list覆盖

Redis---链表【list】结构以及命令

通过取出链表中的单个元素

  • lindex key index:取出key中的第index位置的元素
    如取出word中的第一个元素,其语句为:lindex word 0

当index超出length的时候,会返回失败的提示

Redis---链表【list】结构以及命令

获取链表的长度

  • llen key:获取链表的长度
    如获取word的长度(也就是元素的个数),其语句为:llen word

    Redis---链表【list】结构以及命令

对链表做一个插入

  • redis是通过查找链表的值来进行插入的,格式为linsert key after/before search value
    • after/before :代表的是在search之前或者之后插入
    • search :代表要查找的值
    • value : 代表要插入的值

比如在word中的a的后面插入一个数字1.其语句为:linsert word after a 1

当有多个a时候,默认插入第一个a的after/before

Redis---链表【list】结构以及命令

rpoplpush source dest

  • 把source的尾部拿出来放在dest的头部,并返回该单元值

感觉相当于mysql里面的事物的整体提交,提交不成功就回滚,保证了安全性。
这个也相当于一个安全机制,如果这个dest链表是一个等待完成事件的队列,执行命令rpoplpush source dest之后,会返回一个单元,那么就要执行这个返回单元的事件,事件完成之后就从dest中pop掉,没有完成就继续等待下次执行

Redis---链表【list】结构以及命令

有内容就pop,没有内容就等待

  • brpop/blpop key timeput:等待弹出key的尾/头部元素
    • tiemoout:等待的超时时间
    • 如果timepout为0,则一直等待
      在线聊天可能需要类似的应用场景

Redis---链表【list】结构以及命令

以上为链表list的一些基本操作,本位的思考问题仅供参考

相关文章: