redis的特性
1.速度快,官方展示的讀寫性能是10萬/s,本人的本地測試達到為3-4萬/s,有以下四點原因:
- 所有資料都是存放在記憶體中的
- 它是由C語言實作的
- 使用了單線程架構,防止了多線程可能産生的競争問題
- 源代碼的精細打磨,代碼性能高且優雅
2.基于鍵值對的資料結構伺服器。 它提供5中資料結構:字元串、哈希、清單、有序清單、集合,同時在字元串的基礎上演變出了位圖 (Bitmap)和HyperLogLog兩種神器的資料結構
3.豐富的功能
- 提供了鍵過期的功能,可以用來實作緩存
- 提供了釋出訂閱的功能,可以用來實作消息系統
- 支援Lua腳本功能,可以創造出更多的指令
- 提供了簡單的事務功能
- 提供了流水線功能,用戶端能夠将一批指令一次性傳到Redis,減少了網絡的開銷
4.簡單穩定,主要表現在三個方面:源代碼少,使用單線程模型,不需要依賴作業系統的類庫。
5.用戶端語言多。主流的程式設計語言如java、python、C,C++,NodeJs都可以很友善的介入到Redis
6.持久化。提供RDB和AOF兩種政策将雷村的資料儲存到硬碟中,避免斷電機器故障等造成記憶體資料丢失的情況
7.主從複制,實作了多個相同資料的Redis副本
8.高可用和分布式
Redis的使用場景
1.緩存(提供了鍵值過期時間的設定)
2.排行榜系統(提供了清單和有序集合資料結構)
3.計數器系統(天然支援計數功能,且計數性能好)
4.社交網絡(提供的資料結構可以比較容易的實作 贊踩,粉絲,共同好友,推送,下拉重新整理等社交平台的必備功能)
5.消息隊列系統(提供了釋出訂閱功能和阻塞隊列的功能)
Redis不可以做什麼
資料規模角度:不支援資料量非常大的
資料冷熱角度:冷資料的存儲不适宜