мне нужно сохранить DTO-объект между двумя запросами пользователя, но не более, чем на 15 минут. Я использую для этого кэш редиса (стандартная имплементация CacheInterface). В большинстве случаев все хорошо работает - в первом запросе ставлю кэш на 900 секунд, во втором его получаю. Никаких зависимостей не указываю. Но иногда кэш возвращает false, хотя таймаут еще не истек. И вот тут я чего-то не могу понять, по каким причинам может сбросится валидный кэш без указанных зависимостей? И поможет ли, если вместо CacheInterface я буду использовать редис как бд, сохраняя данные как yii\redis\ActiveRecord, например? Использую Yii2
Редиска либо выключается и не персистит данные, либо у нее переполняется память, и неактуальные данные вытесняются из нее.
Ага, спасибо! У меня пока выключение на первом месте под подозрением. А вот по поводу переполнения памяти - если я явно указал, что данные должны хранится 15 минут, они же до истечения этого срока не могут вытесниться?
См. https://redis.io/docs/reference/eviction/
Обсуждают сегодня