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

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

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

将值压入链表的头部
  • lpush key values:从链表的左侧压入值
  • rpush key values:从链表的右侧压入值
查看链表的值
  • lrange key start stop:如lrange key 0 -1就可以查看链表所有的值

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

从链表中弹出值
  • lpop key:从链表左侧弹出值
  • rpop key:从链表右侧弹出值
    在这里插入图片描述
删除链表的值
  • lrem key count value:从链表左侧开始删除count(>0)个值为value的元素

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

在这里插入图片描述

剪切链表
  • 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覆盖

在这里插入图片描述

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

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

在这里插入图片描述

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

    在这里插入图片描述
对链表做一个插入
  • redis是通过查找链表的值来进行插入的,格式为linsert key after/before search value
    • after/before :代表的是在search之前或者之后插入
    • search :代表要查找的值
    • value : 代表要插入的值

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

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

在这里插入图片描述

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

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

在这里插入图片描述

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

在这里插入图片描述

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Python小叮当

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值