數據庫 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 命令過多,導致重啓恢復數據時間過長。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章