91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MongoDB中怎么利用Springboot實現分布式ID

發布時間:2021-08-09 16:42:10 來源:億速云 閱讀:110 作者:Leah 欄目:編程語言

本篇文章為大家展示了MongoDB中怎么利用Springboot實現分布式ID,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

MongoDB的ObjectId設計成輕量型的,不同的機器都能用全局唯一的同種方法方便地生成它。MongoDB 從一開始就設計用來作為分布式數據庫,處理多個節點是一個核心要求。使其在分片環境中要容易生成得多。

它的格式:

前4 個字節是從標準紀元開始的時間戳,單位為秒。時間戳,與隨后的5 個字節組合起來,提供了秒級別的唯一性。由于時間戳在前,這意味著ObjectId 大致會按照插入的順序排列。這對于某些方面很有用,如將其作為索引提高效率。這4 個字節也隱含了文檔創建的時間。絕大多數客戶端類庫都會公開一個方法從ObjectId 獲取這個信息。

接下來的3 字節是所在主機的唯一標識符。通常是機器主機名的散列值。這樣就可以確保不同主機生成不同的ObjectId,不產生沖突。

為了確保在同一臺機器上并發的多個進程產生的ObjectId 是唯一的,接下來的兩字節來自產生ObjectId 的進程標識符(PID)。

前9 字節保證了同一秒鐘不同機器不同進程產生的ObjectId 是唯一的。

后3 字節就是一個自動增加的計數器,確保相同進程同一秒產生的ObjectId 也是不一樣的。同一秒鐘最多允許每個進程擁有2563(16 777 216)個不同的ObjectId。

三、編碼

在springboot中引入mongodb:

<dependency>  <groupId>org.springframework.boot</groupId>  <artifactId>spring-boot-starter-test</artifactId>  <scope>test</scope> </dependency> <!-- 開啟web--> <dependency>  <groupId>org.springframework.boot</groupId>  <artifactId>spring-boot-starter-web</artifactId> </dependency>     <!--mongodb --> <dependency>  <groupId>org.springframework.boot</groupId>  <artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency>

創建一個實體類:

public class Customer {  @Id  public String id;  public String firstName;  public String lastName;  public Customer() {}  public Customer(String firstName, String lastName) {    this.firstName = firstName;    this.lastName = lastName;  }  @Override  public String toString() {    return String.format(        "Customer[id=%s, firstName='%s', lastName='%s']",        id, firstName, lastName);  }  public String getId() {    return id;  }  public void setId(String id) {    this.id = id;  }  public String getFirstName() {    return firstName;  }  public void setFirstName(String firstName) {    this.firstName = firstName;  }  public String getLastName() {    return lastName;  }  public void setLastName(String lastName) {    this.lastName = lastName;  }}

創建mongodb 接口類:

/** * Created by fangzhipeng on 2017/4/1. */public interface CustomerRepository extends MongoRepository<Customer, String> {  public Customer findByFirstName(String firstName);  public List<Customer> findByLastName(String lastName);}

測試類:

@Autowired  CustomerRepository customerRepository;@Testpublic void mongodbIdTest(){Customer customer=new Customer("lxdxil","dd");    customer=customerRepository.save(customer);    logger.info( "mongodbId:"+customer.getId());}

上述內容就是MongoDB中怎么利用Springboot實現分布式ID,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

高陵县| 丹凤县| 施秉县| 汽车| 杂多县| 盈江县| 黎川县| 淳安县| 武威市| 长海县| 宜州市| 板桥市| 辽宁省| 江川县| 手游| 浦江县| 同仁县| 宜兰县| 满洲里市| 隆回县| 广东省| 来宾市| 沁阳市| 永泰县| 临颍县| 克什克腾旗| 景洪市| 克拉玛依市| 鲁甸县| 奉节县| 丽水市| 白银市| 陇川县| 武鸣县| 抚顺县| 德庆县| 广河县| 永嘉县| 天等县| 兴和县| 扬中市|