尚学堂给同学们带来全新的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

本文介绍了两种基于Redis生成全局ID的方法:预先生成和利用Redis的自增特性。预先生成涉及批量生成ID并存储在Redis中,使用时结合时间戳;而利用Redis自增操作保证原子性,适用于无需依赖数据库的场景。虽然引入Redis可能增加系统复杂度,但能提供高性能和排序优势。代码示例给出详细实现方式。
最低0.47元/天 解锁文章
616

被折叠的 条评论
为什么被折叠?



