有什么好的方法按日期每天生成流水号

喜欢自在 发布于 2014/03/17 12:04
阅读 8K+
收藏 1

规则如下:前面是年月日,后四位是流水号,每天第个是001,第二个就是002,一直加上去,要考虑并发情况下,出现重复号的问题

 201403170001,201403170002

加载中
0
磊神Ray
磊神Ray
方法做成同步,就可以了
java_speed
java_speed
回复 @滄海一夢 : 从数据库中取
vidy_tu
vidy_tu
集群的话,同步是不行的
0
阿债
阿债
用memche吗,加锁同步
0
0
阿债
阿债

有个redis的方案,看看Redis的文档中介绍,我用它来为mysql产生自增ID,当然是在同一台机器上。

服务器的话,用twemproxy在redis间同步,局域网下几乎没有性能损失,不过我没试过。

0
阿债
阿债
http://www.cnblogs.com/ikodota/archive/2012/03/05/php_redis_cn.html#string_SETNX
0
喜欢自在
喜欢自在

有没有能直接用mysql存储过程实现生成流水号的

磊神Ray
磊神Ray
可以,用个表存增长的值,存储过程查询并更新值
0
陈老师1
陈老师1
数据库中记录当前最大值,每查询一次增加一。 使用前检查是否已存在
0
喜欢自在
喜欢自在
现在就是用的这个方法,取当天最后一个流水号加1,但如果并发多的话,会产生脏读,得到的流水号会有重复
0
铭asniler
真的并发多的话,每天只分配0001到9999恐怕不够,一秒一个一小时也3600了,一般场景可以考虑流水号用时间的毫秒数或微秒数来代替年月日数这种字符串。我曾经试过用'微秒级时间-4位随机数'做为主键生成器,在单机高并发下效果很好而且效率高
返回顶部
顶部