Node.js 使用MongoDB创建一个简单的互斥体

Node.js 使用MongoDB创建一个简单的互斥体,node.js,mongodb,Node.js,Mongodb,我只需要一个简单的互斥锁,存储在MongoDB中。我想要一个具有唯一id的锁。Redis似乎有很多流行的解决方案,但在这种情况下,由于我们已经在使用MongoDB,我正在寻找某种库,可以用于MongoDB的锁,但我找不到任何好的包。有没有办法用Mongoose或官方的MongoDB node.js驱动程序实现简单的锁定 我特别想在MongoDB中寻找一些具有内置TTL时间的互斥体。有了Redis,你可以给一个键一个TTL,它会在一段时间后自动删除,这是一个基本特性 当我在google mongo

我只需要一个简单的互斥锁,存储在MongoDB中。我想要一个具有唯一id的锁。Redis似乎有很多流行的解决方案,但在这种情况下,由于我们已经在使用MongoDB,我正在寻找某种库,可以用于MongoDB的锁,但我找不到任何好的包。有没有办法用Mongoose或官方的MongoDB node.js驱动程序实现简单的锁定

我特别想在MongoDB中寻找一些具有内置TTL时间的互斥体。有了Redis,你可以给一个键一个TTL,它会在一段时间后自动删除,这是一个基本特性

当我在google mongodb+ttl上搜索时,我看到的是:


要在评论中回顾我们的讨论

DBMS事务锁定


如果您询问DBMS事务级别的锁定,我想您会发现大多数DBMS SQL或NoSQL都会自己处理事务/锁定,即记录上的读取操作将等待写入操作完成。在MongoDB中,由于每个操作都是一个事务,因此他们提供了一个特别有用的原子操作,称为findAndUpdate

域特定锁定

没有什么可以阻止您创建某种锁集合,在执行某些操作之前,必须检查这些锁集合。您肯定需要考虑并注意可能导致非法状态或数据不一致的边缘情况。这也是重新评估体系结构的好时机提示:微服务

TTL


Mongo支持在任何日期字段上指定日期。因此,在您的情况下,您可以考虑添加一个类似于:DB:MyOxLo.sCerdieDeindex {DeleTeTe:1 }的索引,{ExpReRealEffersSt::1 },并在INSERT上指定DeleTeC.

。我想您会发现,大多数DBMS SQL或NoSQL都会自行处理事务/锁定,即记录上的读取操作将等待直到写入操作完成为止。因为MongoDB中没有事务,所以它们提供了一个特别有用的原子操作findAndUpdate.yeah,但是TTLIt呢听起来Mongo支持在任何日期字段上指定TTL索引。因此,在您的情况下,您可以考虑添加一个类似于:B.MyOxLoC.CudieCindex {DeleTeTe:1 }的索引,{ExpReRealEffice秒:1 },并在Debug上指定DeleTeIt。