需求: 1.新增商品信息,根据选择的商品类别生成唯一的商品编码,编码的规则是类别编码加 4 位自增编码,如在 001 分类下增加商品,商品编码就是 0010001,0010002...,每个类别最多存放 9999 个商品 2.在新增页面选择类别后就要生成编码显示在页面上,同一类别下一次可以新增多个商品
请问该如何生成后面的 4 位自增编码才能避免并发操作时候的重复问题?
1
ggabc 2020-02-15 16:48:54 +08:00
共享 redis 锁,每次生成新码时候锁一下
|
3
yuanwang33 2020-02-15 17:53:15 +08:00
如果使用 redis,可以考虑使用 INCR 特性,将商品编码作为 key 的元素。
参考文档: https://redis.io/commands/INCR |
4
gibber OP @yuanwang33
是考虑过用 incr,用分类的编码做 key,自增码做值,每次 incr 后拼接成商品编码. 但这样遇到个问题,就是编码是在选择分类的时候生成,最后并不一定会保存到数据库,如果用户取消操作或者切换分类那已经生成的码就无法再继续使用了 |
5
gibber OP 通常的做法是怎样的呢?
|
6
yuanwang33 2020-02-16 14:14:56 +08:00
不太清楚你们大的需求,建议设计两个 ID,内部系统使用和外部展示,对内连续单调递增的在写入数据库前生成,对外的不连续(避免外部推算数量)的展示到前台给用户。
根据你描述的内容,单个 ID 如果严格要求单调递增,所有的用户串行操作才能实现。 |