1. 程式人生 > 資訊 >訊息稱蘋果明年將採用臺積電 3 奈米晶片技術,iPad Pro 2022 有望搶先 iPhone 14 首發

訊息稱蘋果明年將採用臺積電 3 奈米晶片技術,iPad Pro 2022 有望搶先 iPhone 14 首發

基於記憶體實現

我們都知道記憶體讀寫是比磁碟讀寫快很多的。Redis是基於記憶體儲存實現的資料庫,相對於資料存在磁碟的資料庫,就省去磁碟磁碟I/O的消耗。MySQL等磁碟資料庫,需要建立索引來加快查詢效率,而Redis資料存放在記憶體,直接操作記憶體,所以就很快。

高效的資料結構

MySQL索引為了提高效率,選擇了B+樹的資料結構。其實合理的資料結構,就是可以讓你的應用/程式更快。

合理的資料編碼

Redis是使用物件(redisObject)來表示資料庫中的鍵值,當我們在 Redis 中建立一個鍵值對時,至少建立兩個物件,一個物件是用做鍵值對的鍵物件,另一個是鍵值對的值物件。

redisObject中,type

對應的是物件型別,包含String物件、List物件、Hash物件、Set物件、zset物件。encoding對應的是編碼。

  • String:如果儲存數字的話,是用int型別的編碼;如果儲存非數字,小於等於39位元組的字串,是embstr;大於39個位元組,則是raw編碼。
  • List:如果列表的元素個數小於512個,列表每個元素的值都小於64位元組(預設),使用ziplist編碼,否則使用linkedlist編碼
  • Hash:雜湊型別元素個數小於512個,所有值小於64位元組的話,使用ziplist編碼,否則使用hashtable編碼。
  • Set:如果集合中的元素都是整數且元素個數小於512個,使用intset編碼,否則使用hashtable編碼。
  • Zset:當有序集合的元素個數小於128個,每個元素的值小於64位元組時,使用ziplist編碼,否則使用skiplist(跳躍表)編碼

I/O 多路複用

  • I/O :網路 I/O
  • 多路 :多個網路連線
  • 複用:複用同一個執行緒。
  • IO多路複用其實就是一種同步IO模型,它實現了一個執行緒可以監視多個檔案控制代碼;一旦某個檔案控制代碼就緒,就能夠通知應用程式進行相應的讀寫操作;而沒有檔案控制代碼就緒時,就會阻塞應用程式,交出cpu。