数据库
首页 > 数据库> > Redis中list实现栈&队列&数组&阻塞、单播队列

Redis中list实现栈&队列&数组&阻塞、单播队列

作者:互联网


用LPUSH创建名为“stack”的key并放入元素,使用LRANGE查看放入的元素,使用LPOP取出放入的元素;可以发现取出的顺序与放入的顺序相反(先进后出),其特性与Java中的栈一样。

LPUSH stack q w e r t y u i o p  
LRANGE stack 0 -1 
LPOP stack  

在这里插入图片描述
队列
用LPUSH创建名为“queue”的key并放入元素,使用LRANGE查看放入的元素,使用RPOP取出放入的元素;可以发现取出的顺序与放入的顺序相同(先进先出),其特性与Java中的队列一样。

LPUSH queue q w e r t y u i o p  
LRANGE queue 0 -1  
RPOP queue  

在这里插入图片描述
数组
用LPUSH创建名为“array”的key并放入元素,使用LRANGE查看放入的元素,使用LSET修改对应下标的元素,使用LRANGE查看放入的元素;可以发现对应下标的元素已经被修改(下标访问),其特性与Java中的数组一样。

LPUSH array q w e r t y u i o p  
LRANGE array 0 -1  
LSET array 0 q  
LRANGE array 0 -1  

在这里插入图片描述
阻塞单播队列
使用LRANGE查看名为“st”的key中的元素,发现“st”中没有元素,使用BLPOP从“st”取出元素,并且等待时间为99秒,发现窗口进入等待状态;重新打开一个redis客户端窗口,用LPUSH在“st”中放入一个元素;可以发现刚才等待中的窗口中返回了对应的key和值。key中有元素时就响应,没有时则进入等待状态,可以有多个客户端同时等待同一个key,可以使用其特性,实现阻塞的单播队列。(一个客户端也可以同时等待多个key)

LRANGE st 0 -1 
BLPOP st 99 

在这里插入图片描述

LPUSH st q 

在这里插入图片描述

标签:队列,Redis,元素,list,st,LRANGE,key,放入,LPUSH
来源: https://blog.csdn.net/jt781861965/article/details/114156640