Redis生成主鍵的優點及與其他生成主鍵方式的對比

2021-09-02 01:09:47 字數 1441 閱讀 3815

使用redis生成主鍵的優點及與其他生成主鍵方式的對比

redis生成id

當使用資料庫來生成id效能不夠要求的時候,我們可以嘗試使用redis來生成id。這主要依賴於redis是單執行緒的,所以也可以用生成全域性唯一的id。可以用redis的原子操作 incr和incrby來實現。

可以使用redis集群來獲取更高的吞吐量。假如乙個集群中有5臺redis。可以初始化每台redis的值分別是1,2,3,4,5,然後步長都是5。各個redis生成的id為:

a:1,6,11,16,21

b:2,7,12,17,22

c:3,8,13,18,23

d:4,9,14,19,24

e:5,10,15,20,25

這個,隨便負載到哪個機確定好,未來很難做修改。但是3-5臺伺服器基本能夠滿足器上,都可以獲得不同的id。但是步長和初始值一定需要事先需要了。使用redis集群也可以方式單點故障的問題。

另外,比較適合使用redis來生成每天從0開始的流水號。比如訂單號=日期+當日自增長號。可以每天在redis中生成乙個key,使用incr進行累加。

優點:

1)不依賴於資料庫,靈活方便,且效能優於資料庫。

2)數字id天然排序,對分頁或者需要排序的結果很有幫助。

缺點:

1)如果系統中沒有redis,還需要引入新的元件,增加系統複雜度。

2)需要編碼和配置的工作量比較大。

用int做主鍵的優點:

1、需要很小的資料儲存空間,僅僅需要4 byte 。

2、insert和update操作時使用int的效能比guid好,所以使用int將會提高應用程式的效能。

3、index和join 操作,int的效能最好。

4、容易記憶。

5、支援通過函式獲取最新的值,如:scope_indentity() 。

使用int做主鍵的缺點

1、如果經常有合併表的操作,就可能會出現主鍵重複的情況。

2、使用int資料範圍有限制。如果存在大量的資料,可能會超出int的取值範圍。

3、很難處理分布式儲存的資料表。

使用guid做主鍵的優點:

1、它是獨一無二的。

2、出現重複的機會少。

3、適合大量資料中的插入和更新操作。

4、跨伺服器資料合併非常方便。

使用guid做主鍵的缺點:

1、儲存空間大(16 byte),因此它將會占用更多的磁碟大小。

2、很難記憶。join操作效能比int要低。

3、沒有內建的函式獲取最新產生的guid主鍵。

4、guid做主鍵將會新增到表上的所以其他索引中,因此會降低效能。

python語言的優點及與其他語言相比

是用來定義電腦程式的形式語言。我們通過程式語言來編寫程式 再通過語言處理程式執行向計算機傳送指令,讓計算機完成對應的工作。簡單來說,程式語言就是人類和計算機進行交流的語言。python就是一門程式語言,而且是現在世界上最流行的程式語言之一。python是一門語法簡潔優美,功能強大無比,應用領域非常廣...

基於redis分布式主鍵生成

idgenerator idgenerator idgenerator.builder addhost 127.0.0.1 6379,fce3758b2e0af6cbf8fea4d42b379cd0dc374418 addhost 127.0.0.1 7379,1abc55928f37176cb93...

使用redis批量生成主鍵 訂單 Id

前言 在多執行緒 高併發情況下,某些業務場景需要建立唯一標識的主鍵 訂單 id 通常情況下都是乙個請求建立乙個,考慮到效能和qps我們會提前生成好一堆隨機id儲存到redis 從redis進行poll。1 建立乙個redis佇列服務 redis 公共操作服務 service public class...