使用 Redis 來生成分布式 ID侥钳,其實和利用 Mysql 自增 ID 類似,可以利用 Redis 中的 incr 命令來實現(xiàn)原子性的自增與返回哲泊,比如:
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 持久化相當于定時打一個快照進行持久化先朦,如果打完快照后缰冤,連續(xù)自增了幾次,還沒來得及做下一次快照持久化喳魏,這個時候 Redis 掛掉了棉浸,重啟 Redis 后會出現(xiàn) ID 重復。
AOF 持久化相當于對每條寫命令進行持久化刺彩,如果 Redis 掛掉了迷郑,不會出現(xiàn) ID 重復的現(xiàn)象枝恋,但是會由于 incr 命令過多,導致重啟恢復數(shù)據(jù)時間過長嗡害。