redis消息通知

Posted wsfu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了redis消息通知相关的知识,希望对你有一定的参考价值。

1、任务队列

对于发送邮件或者是复杂计算这样的操作,常常需要比较长的时间,为了不影响web应用的正常使用,避免页面显示被阻塞,常常会将此类任务存入任务队列交由专门的进程去处理。

队列最基础的方法如下:

有新任务的时候,通过lpush推送任务到队列中
......
while(true){ if(队列有无新任务) 有,则rpop取出新任务 else 等待一段时间,避免频繁检查队列 }

对于上述的策略,redis有更有一些的方法,即使用BRPOP命令

有新任务的时候,通过lpush推送任务到队列中
......
while(true){
    BRPO取出新任务
    执行任务
}

如果队列中没有元素,则会阻塞列表直到等待超时或发现可弹出元素为止。假如在指定时间内没有任何元素被弹出,则返回一个 nil 和等待时长。

brpop命令格式如:brpop 列表键名 等待时间

1)如果等待时间设置为0,则表示不限制等待时常。经测试,开启两个redis客户端连接,当客户端A被此命令阻塞时,另一个 客户端B王队列在推送任务,客户端A即刻取出该新任务。

2)如果设置了等待时间,则超时后会返回nil和等待时长。

以上是关于redis消息通知的主要内容,如果未能解决你的问题,请参考以下文章

spring中订阅redis键值过期消息通知

Redis入门 - 消息通知

Redis入门 - 消息通知

Redis 小白指南- 事务过期消息通知管道和优化内存空间

Redis 小白指南- 事务Watch 命令过期消息通知管道优化内存空间

redis消息通知