當我們web系統處於初期系統的時候,使用者量比較小,我們的資料庫的資料生成主鍵的時候可以採用increment自增策略,簡單的做id的唯一生成器,
這種模式我們的web伺服器不需要做額外的操作就可以保證資料庫中主鍵是唯一的.但是隨著業務量和使用者量增長,我們就會做web集群和資料庫集群
如下圖所示
在圖中,我們發現當資料庫集群化,就不能在使用increment自增了(這裡暫時不考慮oracle的sequence的方案,因為oracle要錢啊,手動滑稽).因為資料庫自增長是依賴表的,分表分庫之後就不行了. 這時候我們需要乙個策略可以實現id的自增且不唯一,這裡給出乙個方案使用redis的方案,因為redis是單執行緒的.不會有執行緒安全問題,redis提供了incr 和incrby兩種安全的自增方法.我們可以在web伺服器端直接呼叫redis的方案.在業務層就給出乙個唯一自增的id. 如下圖所示:
如圖中所示我們可以使用同一的redis伺服器生成id,具體的**實現 這
oracle關於ID自增長
1.建立序列 create sequence create sequence innerid minvalue 1 maxvalue 99999999999999 start with 1 increment by 1 cache 20 order 2.innerid.currval 指當前序列 i...
oracle實現id自增長
在表單增加資料時不需要使用者輸入id值,是通過自增加來實現的 實現方法 先建乙個序列號 create sequence autoid increment by1 start with 1minvalue 1maxvalue 9999999 建立乙個觸發器 create trigger trg bs ...
利用Redis實現自增ID生成
redis incr 命令將 key 中儲存的數字值增一。如果 key 不存在,那麼 key 的值會先被初始化為 0 然後再執行 incr 操作。如果值包含錯誤的型別,或字串型別的值不能表示為數字,那麼返回乙個錯誤。本操作的值限制在 64 位 bit 有符號數字表示之內。1 2 descriptio...