node.js - 在 Redis 中处理并发请求
问题描述
我正在开发一个使用 MongoDB 数据库存储和检索数据的 nodejs API 应用程序。为了快速执行,我使用 Redis DB 来缓存数据。我正在使用哈希集来存储和检索数据。
- 当第一个请求带有数据时,我检查了 Redis DB 中的数据是否存在,然后我抛出错误。
- 如果它不存在,我将其推送到 Redis 并进行进一步处理,然后,我更新之前的推送数据。
但是我观察到,当我观察到数据的并发性时,它无法正常工作,它会在 MongoDB 中创建重复数据。随着并发性的增加,由于 Redis 缓存无法正常工作,因此会同时出现多个请求
那么我如何处理这种情况?
解决方案
Redis 是一个单线程数据库服务器。如果您发送多个并发请求,那么 Redis 将按照在 Redis 端收到这些请求的顺序处理它们。因此,您需要确保应用程序端发送的请求的顺序。
如果你仍然想保持一批命令的原子性,你可以阅读更多关于 Redis事务和使用Multi Exec块。使用 Multi 命令时,后续命令按相同顺序排队,并在收到 Exec 时执行。
推荐阅读
- ios - 如何使用 Alamofire 传递令牌值
- cakephp - 如果 HABTM 模型没有任何关联的模型,CakePHP 找不到任何东西
- alexa - 从 Alexa 技能 lambda 触发 Alexa 通知?
- python - 如何在python中制作“3”?
- nestjs - nestjs 是如何获取请求中的 cookie 的?
- batch-file - 在 c:\Program Files(x86)\ 中创建一个包含批处理文件的文件夹
- r - 使用 cloudml R 包中的 predict 函数
- javascript - 移除已经存在的事件监听器
- python - 如何检查多个字典的值,如果满足条件则更改任何/全部
- ruby-on-rails - Elasticsearch DateTime 范围查询不一致