Redis介紹及幾種型別

2021-10-07 21:11:53 字數 1476 閱讀 5304

- 高併發,高可擴,高效能 

- 為什麼可以解決高併發情況下的秒殺,而且在**中沒有看到任何的鎖?它是乙個單執行緒的服務。

- 多執行緒(cpu上下文切換)一定比單執行緒快? 錯

- redis是單執行緒服務,那麼redis服務裡面是不是只有乙個執行緒?錯

單執行緒代表的時候處理命令或者指令的時候,後台只有乙個處理指令執行緒 其實我們傳送給redis服務的指令,不管在任何時候,但是在同一時刻只會執行一條指令 #redis 它是乙個支援分布式的記憶體資料庫

- redis 為什麼快,因為記憶體資料庫

關係型資料庫,操作硬碟

記憶體資料庫操作是記憶體

1.string

string

,沒什麼好介紹的

底層儲存方式:

1.raw 編碼(長度小於是39byte[

44byte]位元組的時候)

2.embstr編碼(當存放大於44byte的字串型別的值得時候,會一次性開闢空間,它會預留一些空間,如果記憶體不夠會成倍增長)

優點:1.程式設計簡單

缺點:1.序列化操作,每次更新需要全部讀取之後再全部寫入

2.設定屬性要操作整個資料

2.hash

hash,可以多個列,每個列一對key/

value

底層儲存方式:

1.ziplist(元素小於128個,所有元素的長度小於64byte)

2.hashtable

優點:1.直觀

2.節省空間,支援hashtable和ziplist,比string節約空間5倍

3.可以部分更新

缺點:1.程式設計稍微複雜

2.不能單獨設定某個值的過期時間

string和hash對比,官方建議盡量使用hash3.set

去重的集合,會自動把匯入的資料進行自動去重。多個set之間可以進行交集/並集/差集等操作,可以用來計算兩個人共同好友,可能認識的人等
4.zset

在set基礎上多了個score評分,可以進行排序

底層儲存方式:

1.ziplist(元素小於128個,所有元素的長度小於64byte)

2.分數zskiplist(分數一樣共享記憶體)+集合hashtable

5.list

簡易佇列/儲存列表(分頁)

brpop和blpop實現阻塞讀取

C 幾種型別的new介紹

現在的c 中,new有三種典型的使用方法,對應於下面三種格式。1.new 普通的new操作,一旦記憶體分配失敗,直接丟擲乙個異常,需要用catch來處理這種異常資訊。2.new nothrow 不丟擲異常的new操作,一旦記憶體分配失敗,禁止丟擲異常,而是返回乙個null,可以通過判斷指標是不是nu...

多型的幾種型別

總體是分為通用多型和專用多型 通用多型 不同的型別值,執行相同的 專用多型 不同的型別值,執行不同的 類似列舉 什麼型別,執行什麼操作 通用多型分為 引數多型和包含多型 引數多型 參考c 中的template 靜態聯編時候實現 包含多型 可以理解為abstract functions,inte ce...

Socket常用幾種型別

socket是一組程式設計介面 api 是對tcp ip協議的封裝和應用。介於傳輸層和應用層,大致駐留在 osi 模型的會話層,向應用層提供統一的程式設計介面。應用層不必了解tcp ip協議細節。直接通過對socket介面函式的呼叫完成資料在ip網路的傳輸。基於傳輸層差異,4種型別的socket 1...