Redis-03-入門
阿新 • • 發佈:2020-09-19
-
Redis(Remote Dictionary Server ),遠端字典服務
-
一個開源的使用C語言編寫、支援網路、可基於記憶體亦可持久化的日誌型、Key-Value資料庫
-
提供多種語言的API
2、Redis能做什麼
-
資料庫
-
快取
-
訊息中介軟體
3、Redis基本知識
-
資料庫
-
Redis預設有16個數據庫,預設是0號資料庫
-
切換資料庫命令
select index
-
檢視資料庫大小
dbsize
-
清空資料庫
flushall #清空所有資料庫
flushdb #清空當前資料庫 -
檢視資料庫的所有key
keys *
-
-
Redis為什麼使用單執行緒
-
官方解釋
-
Redis基於記憶體操作資料,效能限制最可能為機器的記憶體和網路頻寬,單執行緒容易實現
-
多執行緒在單個CPU中會存在上下文切換的耗時操作,所以基於記憶體操縱的Redis使用單執行緒反而有更高的效能
-
-
效能指標
-
Redis是C語言編寫的,官方提供的資料為10萬+的QPS(每秒請求數),所以速度很塊
-
-
詳細原因
-
1、不需要各種鎖的效能消耗
-
Redis的資料結構複雜,有可能會進行很細粒度的操作,比如在很長的列表後面新增一個元素,在hash中新增或者刪除一個物件。這些操作可能就需要加非常多的鎖,導致的結果是同步開銷大大增加。在單執行緒的情況下,就不用去考慮各種鎖的問題,不存在加鎖釋放鎖操作,沒有因為可能出現死鎖而導致的效能消耗
-
-
2、單執行緒多程序叢集方案
-
3、CPU消耗
-
-
-
Redis為什麼讀寫速度這麼快
-
Redis是基於記憶體的,記憶體的讀寫速度快
-
Redis是單執行緒的,省去了很多上下文切換執行緒的時間消耗
-
Redis使用多路複用技術,可以處理併發的連線
非阻塞IO內部採用了epoll + 自己實現的簡單事件框架,epoll中的讀、寫、關閉、連線都轉換為了事件,利用epoll的多路複用技術,不在IO上浪費時間
-