首页 > 解决方案 > 在 Redis 中处理并发请求

问题描述

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

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

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

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

标签: node.jsnpmredisnode-redis

解决方案


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

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


推荐阅读