- 高併發,高可擴,高效能
- 為什麼可以解決高併發情況下的秒殺,而且在**中沒有看到任何的鎖?它是乙個單執行緒的服務。
- 多執行緒(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...