Redis кеш теги сбрасывают утечку памяти - PullRequest
0 голосов
/ 06 сентября 2018

мы использовали предоставленный Laravel кэш с тегами Redis для кэширования результатов запросов для моделей следующим образом:

cache()->tags([model1, model2...])->remember(sql_query_hash, result_callback)

и если в примере через некоторое время и один из тегов пользователя в пике в примере model1 имеют 500 тыс. Уникальных кэшированных запросов, приходит обновление и необходимо выполнить:

cache()>tags([model1])->flush();

моя работа получает разрешенную память, для рабочих у нас 128 МБ памяти. Да, я знаю, что если бы я увеличил память рабочих, я мог бы сбросить 1кк ключей и т. Д., Но это неправильный путь, потому что у нас увеличивается экспоненциальное число пользователей, и наш проект будет расти, поэтому, возможно, некоторые из тегов будут иметь 10кк ключей на пике пользователей , а как тогда я должен очищать кеш для тега?

https://github.com/laravel/framework/blob/5.7/src/Illuminate/Cache/RedisTaggedCache.php#L174

это то, как laravel сбрасывает теги ключей, извлекая все из памяти, затем снова разбивает ее на части в памяти, чтобы этот array_chunk удваивал использование памяти после получения всех ключей, а затем выполнял операцию Redis :: del для удаления кэшированных ключей для этого тега.

Я не знаю, как это назвать ошибкой, но мне нужны какие-то варианты, кто-нибудь тоже имеет дело с этой проблемой, и, может быть, есть какие-то решения?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...