文章目录
-
链表左侧第一个位置默认为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的一些基本操作,本位的思考问题仅供参考