当前位置: 首页 > 网络应用技术

弹出重新排队以排队多个元素思考

时间:2023-03-08 23:45:23 网络应用技术

  最近,我遇到了Redis列表集合中的所有时间流行数据的问题。我相信许多朋友也会遇到同样的问题,所以我会谈论它。

  商业场景就是这样。服务A是面向客户的服务,主要使用REDIS作为存储,而服务B则由商业人员使用。服务A数据服务B需要获得,因此我将将服务A的请求参数放入REDIS队列中,并且服务B将启动线程以定期获取我的队列的数据。实际上,它涉及简单的RPC框架设计。下一篇文章将讨论它。我们简单的RPC框架的设计更改大致如下:

  因此,问题现在已经存在了,如果性能一次弹出,则内部定时服务太糟糕了,因此我们现在需要支持一种可以自定义POP队列元素数量的方法,Redis本身没有这种甲壳虫,我们必须自己设计并一起交谈。

  1.多个请求这应该是普通人可以想象的一种方式。任何问题都可以通过for循环解决。如果没有,则另一个用于循环。让我们看一下这个简单的代码:

  该代码非常简单,但是非常危险。如果我们需要大量POP数据,我们需要每次进行交流。这将导致大量的时间消耗。因此,必须改进它。由于POP会产生多个元素,因此我们不可避免地需要为POP for POP进行循环,然后收集它。也就是说,我们需要执行多个redis pop命令。为了减少通信,我们可以一次发送所有命令来发送所有命令。

  2.使用REDIS交易使用Redis的交易来实现:连接后,打开交易,然后执行POP命令。代码如下:

  3.当然,您可以使用管道。您还可以使用我们之前提到的管道来实现:

  实际上,无需在我们的场景中使用交易。使用交易也将带来一定的性能损失,因此最终的选择是解决方案三,即实现基于管道的流行多个元素。

  原始:https://juejin.cn/post/7100436158873600014