美文网首页
PHP面试之如何实现一个安全的队列

PHP面试之如何实现一个安全的队列

作者: js189174944 | 来源:发表于2017-10-27 00:15 被阅读0次

    面试面的好,薪资拿的高,先送大家一款APP《牛客》,里面都是面试题。

    茫茫10月,我面试一家国际物流公司,入职要求是会用redis,面试的时候真的被问到了,面试官不直接问基础的命令,而是问如何实现一个安全的队列

    接下来,就告诉大家,如何实现?

    Redis的列表数据结构可以让我们方便的实现消息队列

    例如用 LPUSH(BLPUSH)把消息入队,用 RPOP(BRPOP)获取消息

    绝大部分的情况下,这些操作都是没问题的,但并不能保证绝对安全

    当 LPOP 返回一个元素给客户端的时候,会从 list 中把该元素移除,这意味着该元素就只存在于客户端的上下文中,如果客户端在处理这个返回元素的过程崩溃了,那么这个元素就永远丢失了

    如何解决?

    redis 有一个 RPOPLPUSH (或者其阻塞版本的 BRPOPLPUSH)命令

    命令格式

    RPOPLPUSH source destination

    原子性地返回并移除 source 列表的最后一个元素, 并把该元素放入 destination 列表的头部

    用这个命令可以保证队列的安全问题:

    相关文章

      网友评论

          本文标题:PHP面试之如何实现一个安全的队列

          本文链接:https://www.haomeiwen.com/subject/zgilpxtx.html