Redis 博文索引

博文索引

Redis 簡介

優勢

  • 多功能html

    提供了豐富的數據結構,能夠知足不少實用場景,基本上能作到開箱即用
    而且支持管道、事務、發佈訂閱、緩存過時、Lua腳本支持等高級功能redis

  • 高性能數據庫

    數據內存數據庫,讀寫無需訪問外存
    單線程設計,訪問內存無需線程切換與同步緩存

  • 易部署安全

    支持持久化,方便數據恢復
    主從複製,提升數據的安全性
    配合 Redis Cluster 能夠實現數據分片,突破單機容量限制
    配合 Redis Sentinel 能夠實現自動災備,實現高可用數據結構


缺點

  • 存儲容量受限架構

    做爲一款內存數據庫,內存始終是主要瓶頸
    因爲內存價格較磁盤更爲昂貴,所以須要細心規劃 redis 的使用運維

  • CPU利用率性能

    redis 的單線程設計,會致使多核 CPU 的資源利用率不高
    須要同一臺機器上部署多個實例來提升 CPU 使用率大數據

  • 大規模應用有坑

    運維架構不完整,缺乏監控
    不擅長應對高鏈接數 (>10K) 或大數據量 (>16G) 的場景


應用場景

  • 緩存(效率至上)

    單副本,關閉主從複製
    關閉 AOF / BGSAVE,減小磁盤 I/O 對性能影響
    節點宕機,直接切空實例(丟失部分數據)

  • 數據庫(兼顧安全)

    雙副本,開啓主從複製
    主庫關閉 AOF / BGSAVE
    主掛切備,備掛換新備

  • 大規模應用(橫向擴展)

    搭建集羣,分攤壓力
    讀寫分離,以一致性換取性能


最佳實踐

  • 合理設計 key-space,用 db 隔離不相關數據,爲橫向擴容預留空間
  • 嚴禁設置低讀超時 (<200ms) 和緊密重試,避免重連風暴
  • 留意 key 分佈,避免出現數據傾斜
  • 避免保存超過 10k 的大 value
  • 設置 ttl 時引入隨機性,避免大量 key 同時過時
  • 避免使用部分高級功能:Transaction, Pub/Sub, Blocking API,LUA Script
  • 避免使用高危命令:keys、flushdb、flushall
  • bitset 注意檢查長度,避免引起 OOM
相關文章
相關標籤/搜索