今天爱分享给大家带来redis如何实现延时队列【面试题详解】,希望能够帮助到大家。
延迟队列可以使用 zset(有序列表)实现,我们将消息序列化成一个字符串作为列表的value,这个消息的到期处理时间作为score。
zset会按照时间戳大小进行排序,也就是对执行时间前后进行排序,这样的话,起一个线程轮询取第一个key值,如果当前时间戳大于等于该key值的socre就将它取出来进行消费删除,就可以达到延时执行的目的, 注意不需要遍历整个Zset集合,以免造成性能浪费。
原文链接:https://blog.itblood.com/1018.html,转载请注明出处。