实现全局唯一ID解决方案:Redis
随着互联网应用的广泛普及,每个业务系统的数据量激增,如果你还采用关系型数据库,例如Mysql,当单表行数超过500万行或者单表容量超过2GB时,恐怕就得考虑使用分库分表了。当同一张表存在于多个数据库实例时,业务数据又要求唯一性,怎么保证业务主键是全局唯一的呢?
解决方案中包括UUID,数据库主键方式,或者通过在分布式系统中给每个分库设置不同的初始值,步长和分库数量相等的方式,以及支持高并发的SnowFlake算法,这几种方式就在本博文中不再详细介绍,推荐去看下面这篇博文,漫画形式的很生动 什么是SnowFlake算法?
Redis实现全局唯一ID
虽说SnowFlake算法应对高并发是非常好的,如果你的系统对并发量要求没那么高,就没有必要使用这个算法,这个算法的使用也是有一点风险的。那么咱们可以通过redis存储每张表的目前最新的ID值来实现,详细步骤如下:
- 首先你的系统必须引入Redis相关的包,如代码片段1@Configuration用于全局配置,比如数据库相关配置,SequenceConfiguration 类主要是初始化redis连接实例,以便业务系统Redis操作数据库
代码片段1:
@Configuration
public class SequenceConfiguration {
@Configuration
@AutoConfigureAfter(RedisAu