日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯網營銷解決方案
如何實現無依賴的自增主鍵(不用redis做自增主鍵)

在大多數情況下,我們需要構建系統時,需要為每一個可能涉及到的數據實體分配一個唯一、自增的主鍵(primary key)。這個主鍵的作用是標識每一個實體,這樣系統在處理插入、查詢或更新數據時,就可以根據這個主鍵確定具體的實體,達到統一的管理目的。關于如何實現無依賴的自增主鍵,本文將會介紹如何可以通過緩存、數據庫表以及數據庫觸發(fā)器實現比較優(yōu)秀的成熟方案。

成都創(chuàng)新互聯公司專注于企業(yè)全網營銷推廣、網站重做改版、嘉祥網站定制設計、自適應品牌網站建設、H5場景定制、商城網站制作、集團公司官網建設、成都外貿網站建設、高端網站制作、響應式網頁設計等建站業(yè)務,價格優(yōu)惠性價比高,為嘉祥等各大城市提供網站開發(fā)制作服務。

使用緩存是一種最常見且最簡單的方案。緩存中保存當前自增主鍵的當前值,每次有新的實體需要分配主鍵時,從緩存中獲取當前值,并原子地更新緩存的值,即可獲取到當前的自增主鍵。下面是一個簡單的代碼示例,其中Cache是緩存的實例:

Integer currentVal = Cache.getVal();
if (currentVal == null) {
currentVal = 1;
}
Integer newVal = Cache.increaseValAtomic(currentVal + 1);

另外一種常見的實現方案是將當前自增主鍵值保存在數據庫表中,每次有新的實體需要分配主鍵時,直接原子更新表內保存的值,即可獲取到當前的自增主鍵。

Integer currentVal = DB.queryCurrentVal();
DB.updateCurrentValAtomic(currentVal + 1);
Integer newVal = currentVal + 1;

對于某些場景,如果需要具備高性能的性能,可以利用數據庫觸發(fā)器實現自增主鍵的自動維護。比如,在MYSQL數據庫中,可以通過設置自動遞增的參數,直接在創(chuàng)建表時就能完成自增的初始化,或者利用觸發(fā)器,每次實體插入時,觸發(fā)器從表中查詢最大的id值,然后將id自動+1,讓每次插入都獲得不同的id,而且自增過程也不需要進行使用代碼處理,可以直接利用數據庫觸發(fā)器實現,大大簡化處理步驟。

綜上所述,要想實現無依賴的自增主鍵,有多種方案可供選擇。從上面看出,緩存是最簡單、最常用的方案,每次都可以從緩存獲取最新的自增主鍵;另外,也可以將自增的當前主鍵值保存在數據庫中;可以利用數據庫觸發(fā)器,每次插入時,系統就能自動維護自增主鍵,從而實現無依賴的自增主鍵。

成都服務器托管選創(chuàng)新互聯,先上架開通再付費。
創(chuàng)新互聯(www.cdcxhl.com)專業(yè)-網站建設,軟件開發(fā)老牌服務商!微信小程序開發(fā),APP開發(fā),網站制作,網站營銷推廣服務眾多企業(yè)。電話:028-86922220


網頁標題:如何實現無依賴的自增主鍵(不用redis做自增主鍵)
文章出自:http://www.dlmjj.cn/article/dhcjppi.html