数据库 ID 生成方案:Redis

使用 Redis 来生成分布式 ID,其实和利用 Mysql 自增 ID 类似,可以利用 Redis 中的 incr 命令来实现原子性的自增与返回,比如:

127.0.0.1:6379> set id 1   // 初始化自增 ID 为1
OK
127.0.0.1:6379> incr id   // 增加1,并返回
(integer) 2
127.0.0.1:6379> incr id   // 增加1,并返回
(integer) 3

使用 redis 的效率是非常高的,但是要考虑持久化的问题。Redis 支持 RDB 和 AOF 两种持久化的方式。

RDB 持久化相当于定时打一个快照进行持久化,如果打完快照后,连续自增了几次,还没来得及做下一次快照持久化,这个时候 Redis 挂掉了,重启 Redis 后会出现 ID 重复。

AOF 持久化相当于对每条写命令进行持久化,如果 Redis 挂掉了,不会出现 ID 重复的现象,但是会由于 incr 命令过多,导致重启恢复数据时间过长。

你可能感兴趣的:(数据库 ID 生成方案:Redis)