Caching patterns



При работе с кешом возникает вопрос “в какой момент нужно синхронизировать данные из бд и кеша?”. Рассмотрим три часто встречающихся паттерна:



1. Read-aside caching



Наиболее простой и часто используемый паттерн.



Как происходит чтение:

- Пробуем достать данные из кеша

- Если не получилось, идем в БД, складываем в кеш



Как происходит запись:

- Просто пишем в БД



2. Write-aside caching



Паттерн с чтением аналогичным предыдущему варианту, но при записи сразу обновляем и кеш, что позволяет в кеше иметь актуальные данные и в теории увеличить hit rate ценой того, что в кеш могут попадать данные, которые не нужны для чтения.



Как происходит чтение:

- Пробуем достать данные из кеша

- Если не получилось, идем в БД, складываем в кеш



Как происходит запись:

- Пишем в БД

- Пишем в кеш



3. Full caching



Кеш (обычно по крону) сам себя обновляет, подгружая все необходимые данные из БД. Подходит для случаев, когда хотим добиться ~100% hit rate, и данные целиком влезают в кеш.



Как происходит чтение:

- Просто читаем из кеша



Как происходит запись:

- Просто пишем в БД