Кэш в оперативной памяти своими руками

GolangConf: Hardcore

Доклад принят в программу конференции

Владислав Сидорин — техлид одной из команд Работы.ру. Программирует на разных языках уже 17 лет, 8 из них провел в геймдеве. Больше всего любит заниматься оптимизацией программ.

Тезисы

Видео

Что делать, когда вам нужно отвечать настолько быстро, что позволить себе ~1-3 ms для похода в Redis за кэшем — это очень дорого? Можно же хранить кэш прямо в памяти приложения. Но тогда встают вопросы:
* Память кончается, надо что-то выбросить из кэша! Но что именно?
* Как обновлять значения в кэше так, чтобы не завалить внешние ресурсы большой нагрузкой (предотвратить эффект Cache Stampede)?
* Если приложение распределенное, и нам подобный кэш надо держать согласованным, то каким образом это сделать (согласованность кэшей)?

В докладе постараемся дать ответы на эти и некоторые другие вопросы про построение кэшей в оперативной памяти приложения.