gpt4 book ai didi

node.js - NodeJS中并发安全短唯一整数ID生成

转载 作者:太空宇宙 更新时间:2023-11-03 22:09:11 34 4
gpt4 key购买 nike

我有一个 Node 应用程序,我使用 rethinkdb 作为数据库。 rethinkdb 为每个文档生成的 id 不是人类可读的,也不适合现实世界的引用目的。

例如,我创建的每个用户都希望有一个短整数 ID,我可以用它来引用现实世界中的该用户。我从数据库获取的 id 不适合这样做。

生成短唯一整数 id 的并发安全方法是什么?

最佳答案

根据 @Suvitruf 的答案,您可以使用以下内容在纯 reql 中完成此操作,其中“last”是包含最后一个 id 的表。此处所做的修改专门用于并行更新。数字 block 保留在作为查询一部分的 1 个插入中,而不是每次更新都进行单独的 ID 更新。请给他的回答加分。

r([{ foo: 'a' }, { foo: 'b'}])
.do(records => {
return r.table('lastId').get('last')('current')
.do(current => {
return r.table('lastId').get('last').update({ current: current.add(records.count()) })
.do(() => {
return r.range(0, records.count()).map(idx => {
return records.nth(idx).merge(rec => {
return { id: current.add(idx) }
})
})
})
})
})
.coerceTo('array')
.do(records => {
return r.table('ids').insert(records)
})

关于node.js - NodeJS中并发安全短唯一整数ID生成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47550760/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com