【问题标题】:Handle Concurrent Request in Redis在 Redis 中处理并发请求
【发布时间】:2021-05-01 04:25:27
【问题描述】:

我正在开发一个使用 MongoDB 数据库存储和检索数据的 nodejs API 应用程序。为了快速执行,我使用 Redis DB 来缓存数据。我正在使用哈希集来存储和检索数据。

  1. 当第一个请求带有数据时,我检查了 Redis DB 中的数据是否存在,然后我抛出错误。
  2. 如果不存在,我将其推送到 Redis 并进行进一步处理,然后更新之前的推送数据。

但我观察到,当我观察到数据的并发性时,它无法正常工作,它会在 MongoDB 中创建重复数据。随着并发性的增加,由于 Redis 缓存无法正常工作,多个请求会同时出现

那么我该如何处理这种情况?

【问题讨论】:

  • 请在这里帮助我

标签: node.js npm redis node-redis


【解决方案1】:

Redis 是一个单线程数据库服务器。如果您发送多个并发请求,那么 Redis 将按照在 Redis 端收到这些请求的顺序处理它们。因此,需要保证应用端发送请求的顺序。

如果你仍然想保持一批命令的原子性,你可以阅读更多关于 Redis 的transactions 并使用Multi Exec 块。使用 Multi 命令时,后续命令按相同顺序排队,并在收到 Exec 时执行。

【讨论】:

  • 如果可能的话,能给我一个例子吗?
  • 实际上,我的应用程序向 Redis 发送了许多请求,并且对于那些未按顺序执行的命令有什么解决方案吗?
  • 是的,如果您希望它们按特定顺序执行,应用程序应该在 MULTI-EXEC 块中发送所有这些请求。
猜你喜欢
  • 2018-08-24
  • 1970-01-01
  • 2015-08-16
  • 1970-01-01
  • 2021-12-03
  • 1970-01-01
  • 2017-02-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多