2020久久超碰欧美精品最新亚洲欧美日韩久久精品,国产福利电影一区二区三区,亚洲欧美日韩一区在线观看,亚洲国产欧美日韩欧美特级,亚洲欧美日韩成人一区久久,欧美日韩精品一区二区三区不卡,国产欧美日韩va另类影音先锋,亚洲欧美日韩久久精品,亚洲欧美日韩国产成人精品影院,亚洲国产欧美日韩精品一区二区三区,欧美日韩国产成人高清视频,日韩久久精品国产免费观看频道,久久人人爽人人爽从片av高清,国产精品综合一区二区

首頁技術文章正文

redis如何生成自增長ID?

更新時間:2020-07-09 來源:黑馬程序員 瀏覽量:

當我們web系統處于初期系統的時候,用戶量比較小,我們的數據庫的數據生成主鍵的時候可以采用increment自增策略,簡單的做id的唯一生成器, 這種模式我們的web服務器不需要做額外的操作就可以保證數據庫中主鍵是唯一的,但是隨著業務量和用戶量增長,我們就會做web集群和數據庫集群。如下圖所示:

1594265994147_redis生成自增長的ID01.jpg

在圖中,我們發現當數據庫集群化,就不能在使用increment自增了(這里暫時不考慮oracle的sequence的方案,因為oracle要錢啊,手動滑稽)。因為數據庫自增長是依賴表的,分表分庫之后就不行了。這時候我們需要一個策略可以實現id的自增且不唯一,這里給出一個方案使用redis的方案,因為redis是單線程的。不會有線程安全問題,redis提供了incr和incrby兩種安全的自增方法。我們可以在web服務器端直接調用redis的方案.在業務層就給出一個唯一自增的id。如下圖所示:

1594266002735_redis生成自增長的ID02.jpg

如圖中所示我們可以使用同一的redis服務器生成id,具體的代碼實現 這里使用java實現 使用jedis作為通信的工具包,封裝兩個工具類。第一個類是用來封裝跟redis獲取連接相關工具類。

1594266011421_redis生成自增長的ID03.jpg

1594266020662_redis生成自增長的ID04.jpg


這里需要用到一個配置文件:

1594266032653_redis生成自增長的ID05.jpg


接下來是redis生成id工具類

1594266041940_redis生成自增長的ID06.jpg

1594266062445_redis生成自增長的ID07.jpg

1594266073696_redis生成自增長的ID08.jpg

我們就可以直接用IDGenerator的next方法傳入一個字符串作為key生成id 比如說要為用戶生成id,可以給出一個"user"字符串 。

猜你喜歡:
SpringBoot整合Redis來實現緩存技術
Java中級程序員學培訓課程

分享到:
在線咨詢 我要報名
和我們在線交談!