类似 mysql 的这种自动整数递增的 id 插入数据的方式,有什么 nosql 的数据库,可以实现吗?

2022-03-24 17:45:02 +08:00
 xiaoyanbot
如 mysql 的结构类似:

id name
-- --
1 apple
2 banana

程序直接使用 insert values ('apple') 来获得一个新的 id = 3 的对应数据条目

类似这种,不一定使用 sql 语句,比如 add('apple') 这种语句之类的, 有什么 nosql 的数据库,可以显示吗?
922 次点击
所在节点    问与答
6 条回复
Mithril
2022-03-24 17:50:02 +08:00
你用 UUID 都是递增的。
主要是很多 NoSQL 的使用场景都是多节点集群,你要这种严格递增很难在多机情况下保证的。
timethinker
2022-03-24 17:53:18 +08:00
nosql 大多都是分布式数据库,如果引入自增的这种特性,意味着每一次插入都需要协调维护一个计数器,这会引入额外的同步开销,因此最好是自己在应用层去维护这个计数器,而不是依靠数据库本身提供类似的功能。
GuangXiN
2022-03-24 22:59:37 +08:00
redis 分两步做喽

$id = hincrby "xxx_id" 1
hset "xxx" $id "apple"
xiaoyanbot
2022-03-25 09:39:22 +08:00
@GuangXiN 赞, $id 这种用法, 是用在 lua 脚本里面吗?
GuangXiN
2022-03-25 21:33:14 +08:00
@xiaoyanbot 用你的语言写啊,比如 TypeScript:
GuangXiN
2022-03-25 21:35:13 +08:00
const id = await redis.command('hincrby', 'xxx_id', 1);
await redis.command('hset', 'xxx', id, JSON.stringify(someValueToStore));

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/842672

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX