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  

Redis中list实现栈&队列&数组&阻塞、单播队列
队列
用LPUSH创建名为“queue”的key并放入元素,使用LRANGE查看放入的元素,使用RPOP取出放入的元素;可以发现取出的顺序与放入的顺序相同(先进先出),其特性与Java中的队列一样。

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

Redis中list实现栈&队列&数组&阻塞、单播队列
数组
用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  

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

LRANGE st 0 -1 
BLPOP st 99 

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

LPUSH st q 

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

上一篇:图像识别实战(二)----搭建网络模型


下一篇:不要在循环中访问数据库,这样会严重影响数据库性能