Ограничение использования оперативной памяти (заготовка)
Ограничение использования оперативной памяти (заготовка)#
Note
Это заготовка статьи.
See also
Документация: Redis reference - Key eviction
Нам будут полезны две опции в конфиге редиса:
maxmemory 2gb
maxmemory-policy volatile-lru
Наиболее полезными для maxmemory-policy выглядят варианты:
LRU — удаляет ключ, использованный “наиболее давно”:
volatile-lruEvict the least recently used key with an expiration (когда для ключей установлен
EXPIRE)allkeys-lruEvict the least recently used key, expiration or not (когда мы не знаем, установлен ли для ключей
EXPIRE)
Для Редиса 4.0 и старше есть новый алгоритм LFU — удаляет наименее часто
используемый ключ, может быть более эффективным чем LRU.
volatile-lfuEvict using approximated
LFUamong the keys with an expire set (когда для ключей установленEXPIRE)allkeys-lfuEvict any key using approximated
LFU(когда мы не знаем, установлен ли для ключейEXPIRE)
Во время исполнения (runtime) опции можно применить / изменить с помощью
CONFIG SET .
Пример конфига с отключённым сбрасыванием state на диск и ограничением
использования памяти:
redis:
image: harbor.appworks.ru/infra/redis:release
command: '- /bin/sh - -c - redis-server --save "" --maxmemory 2gb --maxmemory-policy allkeys-lfu'
healthcheck:
test: [ "CMD", "redis-cli", "--raw", "incr", "ping" ]
deploy:
# Alexey: Would limit memory usage for docker container, but I don't think it's a good idea
### resources: limits: memory: 2048M
restart_policy:
condition: on-failure
mode: replicated
replicas: 1
# Alexey: check what does this setting do
### endpoint_mode: dnsrr
logging:
driver: json-file
options:
max-file: 2
max-size: 5m