Redis總結1

Redis 定義

Redis是一個由ANSIC編寫的,基於內存高性能key-value 非關係型數據庫.

Redis的特點

Redis本質上是一個key-value類型的數據庫,很像memcahe,整個數據庫的加載和操作都在內存上,爲保證數據的持久性,可定時通過異步操作把數據存儲到硬盤當中.

由於數據存儲加載和操作均在內存上,Redis的性能遠勝mysql,Oracle等,讀寫操作爲 10w/s ,是目前最快的key-value數據庫.

除了性能還有另一大優勢,支持多種數據庫(僅限單機模式),單機模式下16個數據庫,且互相隔離,Redis的在理想情況下每個value值最大限制1G,不像memcher只能存儲1M的數據

Redis 支持多個種數據類型,List ,Set ,Sorted Set ,Map , String ,可實現多種功能.比放說它的List來做FIFO雙向鏈表,可以實現一個輕量級的高性能消息隊列服務,Set可以做高性能的tag系統等…另外Redis也 可以對存儲key-value 設置expire時間(過期),實現和memcached的功能.

Redis的缺點

內存不能像硬盤那樣有巨大的存儲空間,所以不能存儲大量數據,只能處理高併發的少量數據

Redis有哪些好處

  1. 速度快,因爲數據庫存在內存中,類似於HashMap,查找和操作的時間複雜度爲O(1);
  2. 支持多種數據類型,List , Map , Set, Sort Set, String
  3. 支持事務, 遵循 ACID,原子性(Atomicity)一致性(Consistency)隔離性(Isolation)持久性(Durability)
  4. 豐富的特性,可用於緩存消息,按key設置過期時間,過期自動刪除

Redis常見性能問題和解決方案

  1. Master寫內存快照 save命令調整 rdbSave函數,會阻塞主線程工作,當快照比較大時對性能影響是比較大的,會間斷性暫停服務,所以Master最好不要寫內存快照
  2. Master AOF持久化,如果不重寫AOF文件,這種持久化方式對性能的影響是最小的,但是AOF文件會一直增加,AOF文件過大會影響Master重啓恢復連接的速度,Master最好不要做任何持久化工作,包括內存快照和AOF日誌文件,特別不需要啓動AOF做持久化,如果數據比較關鍵,可以爲某個slove開啓AOF 備份數據,策略爲每秒一次
  3. Master調用 BGREWRITEAOF 重寫AOF文件,AOF在重寫的時候會佔大量的CPU和內存資源,導致服務load 過高,出現短暫的服務暫停現象
  4. Redis主從複製性能問題,爲了主從複製的速度和穩定性,Slave 和 Master最好在同一局域網
  5. MySQL 裏面有200w,Redis中只能存儲20W 的數據,如何保證redis中的數據都是熱點數據

Redis提供的6種數據淘汰策略


  1. volatile-lru:從已設置過期時間的數據集(server.db[i].expires) 中挑選最近最少使用的數據
  2. volatile-random:從已設置過期時間的數據集集中,任意選擇數據淘汰
  3. volatile -ttl :從已設置過期時間的數據集中挑選將要過期的數據淘汰
  4. allkeys -lru:從數據集(server.db[i].dict) 中挑選最近最少使用的數據
  5. allkeys -random:從數據集中任意選擇數據淘汰
  6. no -enviction:禁止數據淘汰
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章