尚学堂给同学们带来全新的Java300集课程啦!java零基础小白自学Java必备优质教程_手把手图解学习Java,让学习成为一种享受_哔哩哔哩_bilibili
方法一:预先生成
1、提前生成一批订单号放在redis中,每次使用的时候取一个,当库里没有了,再生成一批
2、使用的时候前面用系统时间戳,后面加上redis中取得的数据即可。
方法二:利用redis的自增
因为Redis是单线的,天生保证原子性,可以使用Redis的原子操作 INCR和INCRBY来实现
优点
不依赖于数据库,灵活方便,且性能优于数据库。
数字ID天然排序,对分页或者需要排序的结果很有帮助。
缺点
如果系统中没有Redis,还需要引入新的组件,增加系统复杂度。
需要编码和配置的工作量比较大。
注意:在Redis集群情况下,同样和Redis一样需要设置不同的增长步长,同时key一定要设置有效期
》可以使用Redis集群来获取更高的吞吐量。假如一个集群中有5台Redis。可以初始化每台Redis的值分别是1,2,3,4,5,然后步长都是5。各个Redis生成的ID为:
A:1,6,11,16,21
B:2,7,12,17,22
C:3,8,13,18,2