基于redis的唯一ID生成器

https://blog.csdn.net/wind_2307154495/article/details/78739498

1.ID生成中心每次从Redis(使用incr命令)中获取一定范围的递增ID区间(该区间范围相对大一些,eg:10000),并同步缓存至L1、L2(避免大量ID区间丢失)。

2.当该应用的该IDKey的ID区间使用率超过一定阈值(eg:>50%)时,ID生成中心自动从Redis(使用incr命令)中获取下一个递增ID区间,缓存至L1、L2,减少消费耗时。

3.当ID生成中心宕机,再次启动时,会优先同步L2中的ID区间至L1中,如果没有再从Redis中通过incr获取,已达到节约ID的目的。

4.这里L1、L2的ID数据同步是异步进行的。

5.ID生成客户端的基本设计思路也是差不多一样的。只不过这是获取的ID区间相对ID生成中心从Redis获取的ID区间会小很多,这里尽量保证俩者区间段有一个相当大的比例区间。对于获取的ID区间具体大小,可以根据个人的需求取舍。


扩展:生成全局唯一ID/数据库主键ID的方法
a)数据库自增长:性能较差
b)取到毫秒+随机数:还有会存在高并发问题
c)UUID:
d)批量ID生成服务:使用vip+keepalived可增加性能可用性。redis方案属于这样,中小型项目可以使用些方案。
e)类snowflake算法,分布式项目中常用方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值