對于分布式并發(fā)下生成唯一ID的方法討論redis/mysql。

分布式并發(fā)下唯一ID的生成規(guī)則 (python 多線程模擬并發(fā) ,QPS以秒為單位, 不考慮 python GIL)

1.使用 redis 的 incr (redis 為單線程, 原子性操作)

1.incr 原子性操作即返回加1操作后的值,可直接使用。避免多操作而使用事務。

2.持久性:只有一個key,可開啟RDB/AOF,或者判斷在nosql key失效時,獲取DB表中最后一個生成的id并set寫入,保持可持續(xù)使用。

3.性能:內存操作,性能優(yōu)良

4.災難恢復,數據自動恢復,腳本檢測set進最后一個生成的ID

redis> SET mykey "10"

OK

redis> INCR mykey

(integer) 11

redis> GET mykey

"11"

2.使用 mysql 表的唯一自增主鍵 (可用雙實例/物理機 錯開id(奇偶數 +1/+2))

1.mysql的原子性,可保證自增列不會產生重復的id

2.持久性:存在于mysql數據表中,持久化于磁盤

3.性能:數據寫入操作,可用錯開id(+1/+2)雙寫

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 本文將從Redis的基本特性入手,通過講述Redis的數據結構和主要命令對Redis的基本能力進行直觀介紹。之后概...
    kelgon閱讀 61,668評論 23 625
  • 轉載地址:http://gnucto.blog.51cto.com/3391516/998509 Redis與Me...
    Ddaidai閱讀 21,548評論 0 82
  • 1.1 資料 ,最好的入門小冊子,可以先于一切文檔之前看,免費。 作者Antirez的博客,Antirez維護的R...
    JefferyLcm閱讀 17,322評論 1 51
  • 我還是很喜歡你,像紅葉化作碎泥,歸了故里。 我還是很喜歡你,像微風拂過大海,經久不息; 我還是很喜歡你,像青絲染成...
    今天先生吃藥了嗎閱讀 370評論 2 7
  • 秋天還不錯,金黃的葉子,凋零的花。 午后還能曬到暖暖的陽光, 你的發(fā)稍在陽光下發(fā)著光, 我們就這樣隔著陽光。
    木木熹閱讀 766評論 17 14

友情鏈接更多精彩內容