Struchkov Mark
d5e6b54a58
All checks were successful
continuous-integration/drone/push Build is passing
45 lines
3.1 KiB
Markdown
45 lines
3.1 KiB
Markdown
---
|
||
aliases:
|
||
- инвалидации кэша
|
||
tags:
|
||
- maturity/🌱
|
||
date:
|
||
- - 2024-06-18
|
||
zero-link:
|
||
- "[[../../../meta/zero/00 HighLoad|00 HighLoad]]"
|
||
parents:
|
||
- "[[../Кэширование|Кэширование]]"
|
||
linked:
|
||
---
|
||
Если мы закэшировали какие-то данные, например, выборку из БД, рано или поздно исходные данные изменяются, и кэш перестает быть валидным. Причем очень желательно, чтобы кэш сбрасывался сразу же за изменением.
|
||
|
||
**Способы инвалидации:**
|
||
- Задать срок жизни - TTL.
|
||
- Самая простая реализация.
|
||
- При малом TTL будет высокий [CacheMissRate](CacheMissRate.md)
|
||
- При большом TTL данные могут быть не консистентны
|
||
- Инвалидация по событию
|
||
- Удаляем старые данные при изменении в базе или по событию от кафки.
|
||
- Опасно из-за риска мгновенной инвалидации и сопутствующей [[Перестройка кэша|перестройки кэша]]
|
||
- Использование [[../../algorithm/Алгоритмы вытеснения|алгоритмов вытеснения]]
|
||
|
||
Дополнительно для работы со статическими файлами можно отменить [[../../../../../_inbox/Fingerprint|Fingerprint]].
|
||
|
||
Один из подходов это инвалидация по времени. Для кэшированных данных устанавливается TTL, и по прошествию времени кэш удаляется. Такое вариант подходит для редко изменяемых данных, устаревание которых не приводит к серьезным проблемам в бизнес-логике, например словари. При таком варианте важно подобрать оптимальное время жизни кэша, слишком маленькое время жизни будет давать плохую производительность, слишком большое ухудшит опыт пользователей. В оценке эффективности кэша поможет метрика [[CacheMissRate]].
|
||
|
||
Некоторые чувствительные данные нужно инвалидировать сразу при изменении. Тут может помочь тегирование ключей.
|
||
***
|
||
## Мета информация
|
||
**Область**:: [[../../../meta/zero/00 HighLoad|00 HighLoad]]
|
||
**Родитель**:: [[../Кэширование|Кэширование]]
|
||
**Источник**::
|
||
**Автор**::
|
||
**Создана**:: [[2024-06-18]]
|
||
### Дополнительные материалы
|
||
-
|
||
### Дочерние заметки
|
||
```dataview
|
||
LIST
|
||
FROM [[]]
|
||
WHERE contains(Родитель, this.file.link) or contains(parents, this.file.link)
|
||
``` |