天天看點

Redis的緩存更新政策1.逾時剔除2.主動更新最佳實踐方案:

1.逾時剔除

  • 使用場景: 逾時剔除通過給緩存資料設定過期時間, 讓其在過期時間後自動删除, 例如Redis提供的expire指令。 如果業務可以容忍一段時間内, 緩存層資料和存儲層資料不一緻, 那麼可以為其設定過期時間。 在資料過期後, 再從真實資料源擷取資料, 重新放到緩存并設定過期時間。 例如一個視訊的描述資訊, 可以容忍幾分鐘内資料不一緻, 但是涉及交易方面的業務,後果可想而知。
  • 一緻性: 一段時間視窗内(取決于過期時間長短) 存在一緻性問題, 即緩存資料和真實資料源的資料不一緻。
  • 維護成本: 維護成本不是很高, 隻需設定expire過期時間即可, 當然前提是應用方允許這段時間可能發生的資料不一緻。

2.主動更新

  • 使用場景: 應用方對于資料的一緻性要求高, 需要在真實資料更新後,立即更新緩存資料。 例如可以利用消息系統或者其他方式通知緩存更新。
  • 一緻性: 一緻性最高, 但如果主動更新發生了問題, 那麼這條資料很可能很長時間不會更新, 是以建議結合逾時剔除一起使用效果會更好。
  • 維護成本: 維護成本會比較高, 開發者需要自己來完成更新, 并保證更新操作的正确性

最佳實踐方案:

  1. 低一緻性業務建議配置最大記憶體(maxmemory-policy)和淘汰政策(LRU/LFU/FIFO算法剔除)的方式使用。
  2. 高一緻性業務可以結合使用逾時剔除和主動更新, 這樣即使主動更新出了問題, 也能保證資料過期時間後删除髒資料

繼續閱讀