两个客户端应该如何同时等待Redis中的值出现?

sffc

Redis提供了BRPOP,使发送方/接收方模型可以保证交付。

发件人: LPUSH foo_key bar_value
收件人: BRPOP foo_key ### =>'bar_value'

其中###是任意到期间隔,例如15秒。

但是,如果消息有两个接收者,该怎么办?我考虑过以下选项:

  1. PUBLISH / SUBSCRIBE,但是如果发送方PUBLISH在接收方SUBSCRIBE到达通道之前发布消息,则会导致竞争
  2. 发送方在某个键上调用SET + EXPIRE,接收方轮询该键,直到出现一个值,然后GET该值。最终,数据将根据EXPIRE超时被删除我不喜欢此选项,因为如果许多客户端同时进行轮询,则对Redis的轮询可能会导致性能下降,并且响应不是实时的。

您如何设置具有实时,有保证的交付的多客户接收器模型?

在我的架构中,只有一条消息将通过特定键发送,因此不存在客户端意外两次收到同一消息的危险。

sffc

我意识到我可以使用BRPOPLPUSH来实现这一目标。

发件人: LPUSH foo_key bar_value随后是EXPIRE foo_key ###
收件人: BRPOPLPUSH foo_key foo_key ### => bar_value

与以前一样,每个###都是某个任意的到期间隔,例如15秒。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何确保两个客户端不会同时请求破坏状态

来自分类Dev

两个SIP客户端同时登录时会发生什么

来自分类Dev

两个Android“客户端”可以同时使用摄像机吗?

来自分类Dev

两个客户端无法在套接字客户端-服务器连接中互相交谈

来自分类Dev

如何计算R中连续两个给定值同时出现的次数?

来自分类Dev

如何在两个Silverlight客户端应用程序中重用用户控件?

来自分类Dev

两个paho.mqtt客户端订阅相同的客户端区域

来自分类Dev

如何为两个客户端一次调用Meteor方法?

来自分类Dev

如何在两个UDP客户端之间发送消息?

来自分类Dev

如何使用相同的本地端口打开两个udp客户端套接字

来自分类Dev

计算R中的一个组中两个值同时出现的次数

来自分类Dev

如何确保两个布尔属性的值永远不应该同时为真?

来自分类Dev

如何在Python中模拟Redis客户端?

来自分类Dev

如何在不同客户端的不同范围内获取 SQL-oracle 中两个日期之间的所有月份

来自分类Dev

使用两个作为客户端的IOS应用(Swift),通过客户端实现喜欢的功能实现

来自分类Dev

两个Azure VM上的NFS服务器和客户端,客户端无法连接

来自分类Dev

如何获取当前客户端(工作区)的两个变更列表之间的变更历史记录?

来自分类Dev

Keycloak-如何禁用两个(Angular)客户端应用程序之间的共享会话?

来自分类Dev

如何将客户端加入使用单播的两个不同的一致性集群?

来自分类Dev

如何使用neo4j的.net客户端检查两个节点之间是否存在关系

来自分类Dev

客户端可以同时具有到同一套接字侦听器的两个连接吗?

来自分类Dev

如何从Redis获取客户端地址

来自分类Dev

什么时候应该在Node.js中创建Redis客户端?

来自分类Dev

当两个值的值不同时如何从数组中删除数组值

来自分类Dev

Socket.io 两个客户端仅在一个方向上通信

来自分类Dev

我应该如何在boost :: asio的客户端应用程序中同时使用async_read_until和async_write?

来自分类Dev

仅使用客户端在两个HTML页面之间传递大量数据

来自分类Dev

客户端使用python套接字接收两个单独的消息

来自分类Dev

连接两个客户端而无需端口转发

Related 相关文章

  1. 1

    如何确保两个客户端不会同时请求破坏状态

  2. 2

    两个SIP客户端同时登录时会发生什么

  3. 3

    两个Android“客户端”可以同时使用摄像机吗?

  4. 4

    两个客户端无法在套接字客户端-服务器连接中互相交谈

  5. 5

    如何计算R中连续两个给定值同时出现的次数?

  6. 6

    如何在两个Silverlight客户端应用程序中重用用户控件?

  7. 7

    两个paho.mqtt客户端订阅相同的客户端区域

  8. 8

    如何为两个客户端一次调用Meteor方法?

  9. 9

    如何在两个UDP客户端之间发送消息?

  10. 10

    如何使用相同的本地端口打开两个udp客户端套接字

  11. 11

    计算R中的一个组中两个值同时出现的次数

  12. 12

    如何确保两个布尔属性的值永远不应该同时为真?

  13. 13

    如何在Python中模拟Redis客户端?

  14. 14

    如何在不同客户端的不同范围内获取 SQL-oracle 中两个日期之间的所有月份

  15. 15

    使用两个作为客户端的IOS应用(Swift),通过客户端实现喜欢的功能实现

  16. 16

    两个Azure VM上的NFS服务器和客户端,客户端无法连接

  17. 17

    如何获取当前客户端(工作区)的两个变更列表之间的变更历史记录?

  18. 18

    Keycloak-如何禁用两个(Angular)客户端应用程序之间的共享会话?

  19. 19

    如何将客户端加入使用单播的两个不同的一致性集群?

  20. 20

    如何使用neo4j的.net客户端检查两个节点之间是否存在关系

  21. 21

    客户端可以同时具有到同一套接字侦听器的两个连接吗?

  22. 22

    如何从Redis获取客户端地址

  23. 23

    什么时候应该在Node.js中创建Redis客户端?

  24. 24

    当两个值的值不同时如何从数组中删除数组值

  25. 25

    Socket.io 两个客户端仅在一个方向上通信

  26. 26

    我应该如何在boost :: asio的客户端应用程序中同时使用async_read_until和async_write?

  27. 27

    仅使用客户端在两个HTML页面之间传递大量数据

  28. 28

    客户端使用python套接字接收两个单独的消息

  29. 29

    连接两个客户端而无需端口转发

热门标签

归档