先導知識:Memcache Memcache是一個高性能的分散式記憶體對象緩存系統,代碼類似於Hash。 已經有了Memcache,為什麼還要用Redis呢? 下麵Memcache的缺點: 不支持數據持久化存儲 不支持主從 不支持分片 而對比Redis資料庫,以上三點都支持,所以要使用redis。 問 ...
先導知識:Memcache
Memcache是一個高性能的分散式記憶體對象緩存系統,代碼類似於Hash。
已經有了Memcache,為什麼還要用Redis呢?
下麵Memcache的缺點:
- 不支持數據持久化存儲
- 不支持主從
- 不支持分片
而對比Redis資料庫,以上三點都支持,所以要使用redis。
問題一:為什麼redis能這麼快?
Redis的訪問速度可達 10萬+QPS(query per second,每秒內查詢次數)。
- 完全基於記憶體:絕大部分請求是純粹的記憶體操作,不受限於硬碟讀取速度,故而執行效率高
- 數據結構簡單,是(key,value)形式,對數據的操作也簡單
- 採用單線程也能處理高併發請求
- 相對於傳統的阻塞I/O,Redis使用多路I/O復用模型,非阻塞I/O
- 具有原子性操作。
問題二:Redis採用的多路I/O復用函數?
多路I/O復用函數有:epoll、kqueue、evport、select 鏈接:多路I/O復用技術
- 因地制宜,有的系統只有select
- 優先選擇時間複雜度為O(1)的函數作為底層實現
- 以時間複雜度為O(n)的select作為保底
- 基於reactor設計模式監聽I/O事件
問題三:Redis的數據類型有哪些?(重點!!)
- string:最基本的數據類型,二進位安全,可以存儲任何格式的數據(jpg圖片,序列化的對象)
- hash:string元素組成的字典,適合用於存儲對象
- list:列表,特點:先進先出、有序(按添加順序)、可重覆
- set:string元素組成的無序集合,通過hash實現,不允許重覆
- sorted set:通過分數來為集合的成員進行從小到大的排序
- 用於計數的HyperLogLog
- 用於支持存儲地理位置信息的Geo
Redis的底層數據類型基礎:
1、簡單動態字元串;2、鏈表;3、字典;4、跳躍表
5、整數集合;6、壓縮列表;7、對象