redis是非關系型內存數據庫 數據存儲于內存中,內存讀取速度非常快,如果只是簡單的 key-value,內存不是瓶頸。一般情況下,hash 查找可以達到每秒數百萬次的數量級。 (推薦學習:Redis視頻教程)
采用單線程,避免了不必要的上下文切換和競爭條件
內部實現采用epoll,采用了epoll+自己實現的簡單的事件框架。epoll中的讀、寫、關閉、連接都轉化成了事件,然后利用epoll的多路復用特性,絕不在io上浪費一點時間
因為Redis的操作都非常快速——它的數據全部在內存里,完全不需要訪問磁盤。至于并發,Redis 使用多路 I/O 復用技術,本身的并發效率不成問題。
當然,單個 Redis 進程沒辦法使用多核(任一時刻只能跑在一個 CPU 核心上),但是它本來就不是非常計算密集型的服務。如果單核性能不夠用,可以多開幾個進程。
Redis采用了單線程的模型,保證了每個操作的原子性,也減少了線程的上下文切換和競爭。
另外,數據結構也幫了不少忙,Redis全程使用hash結構,讀取速度快,還有一些特殊的數據結構,對數據存儲進行了優化,如壓縮表,對短數據進行壓縮存儲,再如,跳表,使用有序的數據結構加快讀取的速度。
還有一點,Redis采用自己實現的事件分離器,效率比較高,內部采用非阻塞的執行方式,吞吐能力比較大。
string 類型,二進制安全的
hash 類型,是一個鍵值對的集合
List列表 底層是個鏈表
set 集合 無需的 通過hashtale實現
zset sort set 有序集合