使用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...