Есть docker-сервис Redis, который используется как LRU-кеш. Объем одной записи примерно до 100Кб.
Память сервиса жетско ограничена 64mb, т.к. на больше и не надо, а все записи хранятся всего минуту и потом попросту не нужны.
В некоторые особо активные моменты, когда память заполняется, возникает исключение OOM command not allowed when used memory > 'maxmemory'.
Я прекрасно понимаю, что оно означает и почему возникает. Но никак не могу заставить Редис банально очищать старые ключи и заносить новые, чтобы все было без исключений.
Подскажите, какие настройки ему выставить, чтобы он правильно очищал старые ключи? Сохранение на диск отключено и не нужно. Все ключи с expires
Сейчас запускается вот так (docker-compose):
redis_cache:
mem_limit: 64m
image: redis:4.0-alpine
command: "redis-server --port 6379 --timeout 0 --save \"\" --appendonly no --maxclients 1000000 --maxmemory 60m --maxmemory-policy allkeys-lru --maxmemory-samples 50"
maxmemory стоит чуть ниже, т.к. иначе при переполнении он еще и падает, что слишком уж плохо.
maxmemory-samples - что без него, что с ним. По моему, вообще без эффекта.
P.S. Да, можно использовать memcache и не париться, но хочется все же разобраться.