⚡Caching patterns
При работе с кешом возникает вопрос “в какой момент нужно синхронизировать данные из бд и кеша?”. Рассмотрим три часто встречающихся паттерна:
1. Read-aside caching
Наиболее простой и часто используемый паттерн.
Как происходит чтение:
- Пробуем достать данные из кеша
- Если не получилось, идем в БД, складываем в кеш
Как происходит запись:
- Просто пишем в БД
2. Write-aside caching
Паттерн с чтением аналогичным предыдущему варианту, но при записи сразу обновляем и кеш, что позволяет в кеше иметь актуальные данные и в теории увеличить hit rate ценой того, что в кеш могут попадать данные, которые не нужны для чтения.
Как происходит чтение:
- Пробуем достать данные из кеша
- Если не получилось, идем в БД, складываем в кеш
Как происходит запись:
- Пишем в БД
- Пишем в кеш
3. Full caching
Кеш (обычно по крону) сам себя обновляет, подгружая все необходимые данные из БД. Подходит для случаев, когда хотим добиться ~100% hit rate, и данные целиком влезают в кеш.
Как происходит чтение:
- Просто читаем из кеша
Как происходит запись:
- Просто пишем в БД
При работе с кешом возникает вопрос “в какой момент нужно синхронизировать данные из бд и кеша?”. Рассмотрим три часто встречающихся паттерна:
1. Read-aside caching
Наиболее простой и часто используемый паттерн.
Как происходит чтение:
- Пробуем достать данные из кеша
- Если не получилось, идем в БД, складываем в кеш
Как происходит запись:
- Просто пишем в БД
2. Write-aside caching
Паттерн с чтением аналогичным предыдущему варианту, но при записи сразу обновляем и кеш, что позволяет в кеше иметь актуальные данные и в теории увеличить hit rate ценой того, что в кеш могут попадать данные, которые не нужны для чтения.
Как происходит чтение:
- Пробуем достать данные из кеша
- Если не получилось, идем в БД, складываем в кеш
Как происходит запись:
- Пишем в БД
- Пишем в кеш
3. Full caching
Кеш (обычно по крону) сам себя обновляет, подгружая все необходимые данные из БД. Подходит для случаев, когда хотим добиться ~100% hit rate, и данные целиком влезают в кеш.
Как происходит чтение:
- Просто читаем из кеша
Как происходит запись:
- Просто пишем в БД