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

数组

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

阻塞单播队列

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

LRANGE st 0 -1 
BLPOP st 99

Redis中list实现栈&队列&数组&阻塞、单播队列_客户端_04

LPUSH st q

Redis中list实现栈&队列&数组&阻塞、单播队列_客户端_05