V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
xiaoyanbot
V2EX  ›  问与答

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

  •  1
     
  •   xiaoyanbot · 2022-03-24 17:45:02 +08:00 · 846 次点击
    这是一个创建于 770 天前的主题,其中的信息可能已经有所发展或是发生改变。
    如 mysql 的结构类似:

    id name
    -- --
    1 apple
    2 banana

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

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

    $id = hincrby "xxx_id" 1
    hset "xxx" $id "apple"
    xiaoyanbot
        4
    xiaoyanbot  
    OP
       2022-03-25 09:39:22 +08:00
    @GuangXiN 赞, $id 这种用法, 是用在 lua 脚本里面吗?
    GuangXiN
        5
    GuangXiN  
       2022-03-25 21:33:14 +08:00
    @xiaoyanbot 用你的语言写啊,比如 TypeScript:
    GuangXiN
        6
    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));
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2175 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 10:16 · PVG 18:16 · LAX 03:16 · JFK 06:16
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.