Redis 有兩種持久化機制:RDB和AOFredis
Redis 的持久化是能夠禁用的,就是說你可讓數據的生命週期只存在於服務器的運行時間裏。兩種方式的持久化是能夠同時存在的,可是當 Redis 重啓時,AOF 文件會被優先用於重建數據。數據庫
RDB 持久化方式會在一個特定的間隔保存那個時間點的一個數據快照後端
AOF 持久化方式則會記錄每個服務器收到的寫操做。在服務啓動時,這些記錄的操做會逐條執行從而重建出原來的數據。寫操做命令記錄的格式跟 Redis 協議一致,以追加的方式進行保存緩存
Redis 內部使用一個 redisObject 對象來表示全部的 key 和 value。服務器
能夠設置內存最大使用量,當內存使用量超出時,會施行數據淘汰策略。網絡
Redis 具體有 6 種淘汰策略:併發
策略 | 描述 |
volatile-lru | 從已設置過時時間的數據集中挑選最近最少使用的數據淘汰 |
volatile-ttl | 從已設置過時時間的數據集中挑選將要過時的數據淘汰 |
volatile-random |
從已設置過時時間的數據集中任意選擇數據淘汰 |
allkeys-lru | 從全部數據集中挑選最近最少使用的數據淘汰 |
allkeys-random | 從全部數據集中任意選擇數據進行淘汰 |
noeviction | 禁止驅逐數據 |
由於 CPU 不是 Redis 的瓶頸。Redis 的瓶頸最有多是機器內存或者網絡帶寬。(以上主要來自官方 FAQ)既然單線程容易實現,並且 CPU 不會成爲瓶頸,那就瓜熟蒂落地採用單線程的方案了。dom
在 Redis 中有五種數據類型異步
在大促或者某些特殊狀況下,某些頁面佔用了一些稀缺服務資源,在緊急狀況下能夠對其整個降級,以達到丟卒保帥;高併發
好比商品詳情頁中的商家部分由於數據錯誤了,此時須要對其進行降級;
好比商品詳情頁上有推薦信息/配送至等異步加載的請求,若是這些信息響應慢或者後端服務有問題,能夠進行降級;
好比渲染商品詳情頁時須要調用一些不過重要的服務:相關分類、熱銷榜等,而這些服務在異常狀況下直接不獲取,即降級便可;
好比多級緩存模式,若是後端服務有問題,能夠降級爲只讀緩存,這種方式適用於對讀一致性要求不高的場景;
好比秒殺搶購,咱們能夠只進行Cache的更新,而後異步同步扣減庫存到DB,保證最終一致性便可,此時能夠將DB降級爲Cache。
在大促活動時,能夠將爬蟲流量導向靜態頁或者返回空數據,從而保護後端稀缺資源。
自動降級是根據系統負載、資源使用狀況、SLA等指標進行降級。
當訪問的數據庫/http服務/遠程調用響應慢或者長時間響應慢,且該服務不是核心服務的話能夠在超時後自動降級;若是是調用別人的遠程服務,和對方定義一個服務響應最大時間,若是超時了則自動降級。