我现在有一张类似于下面这样的数据库表:
name | is_used |
---|---|
is_used
字段用来标记该条数据是否已经被使用过了。
客户端会向服务器请求可用数据,服务端返回一条可用的数据,即 is_used
字段为 false的一条数据(findOne)。同时设置该条数据为已使用状态,即设置 is_used
字段为 true。
在这个过程中,如何确保两个客户端不会获取到同一条数据呢?会不会出现前一个请求的数据库操作中还未完成设置该条数据 is_used
字段为 true的操作,而这时后一个请求到达,导致返回了同一条数据的情况?如果会的话,有没有什么好的办法解决呢?
我现在考虑的是,通过同步 http 请求或者是将数据预先放在一个缓存队列中,然后从队列中同步的读取数据。不知道大家有没有好的方案?多谢指教。
环境:Express、Postgresql,orm 使用 Sequelize。