Redis в Docker сам вычищает почему-то все данные. Что делать?



@user9823

Всем привет.
Столкнулся со следующей проблемой.
Делаю приложение которое записывает данные и потом читает их из redis
Сам redis запущен в docker контейнере.
При запросе отслеживаю запись внутри контейнера

127.0.0.1:6379> keys *
1) "-C7pZ9Dsy3:IvlhTR68"

проверяю TTL

127.0.0.1:6379> ttl -C7pZ9Dsy3:IvlhTR68
(integer) 42662

т.е. всё как бы работает хорошо, ключ должен будет закончится через 42662 сек. (около 12 часов)
Потом чтото происходит и редис чистый.
Никаких запросов к нему не отправляю, редис полностью чистый. Проверяю его.

127.0.0.1:6379> keys *
(empty array)

сервер запущен на Digital Ocean. Серверок слабый, 1 Гб озу
проверю память

# free -m
              total        used        free      shared  buff/cache   available
Mem:            981         700          68          14         212         114
Swap:          1023         555         468

в volume прокинут конф. файл (кусок из docker-compose)

redis:
    image: redis:6.0.1
    ports:
      - 6379:6379
    volumes:
      - ./redis/redis.conf:/usr/local/etc/redis/redis.conf
      - ./redis/volume/:/data
    networks:
      - symfony
    command: [ "redis-server"]

куда копать? что смотреть?
делаю docker-compose logs redis
последние строки такие

redis_1     | 1:S 26 Jan 2021 11:50:57.299 * MASTER <-> REPLICA sync started
redis_1     | 1:S 26 Jan 2021 11:50:57.311 * Non blocking connect for SYNC fired the event.
redis_1     | 1:S 26 Jan 2021 11:50:58.392 # Module /tmp/exp_lin.so failed to load: It does not have execute permissions.
redis_1     | 1:M 26 Jan 2021 11:50:58.404 # Setting secondary replication ID to fc47e2e4f5487fa786ef9103d6033f6b393a393b, valid up to offset: 1. New replication ID is 015a93b3ff96075a9edd685787a0dea81adf88cc
redis_1     | 1:M 26 Jan 2021 11:50:58.405 * MASTER MODE enabled (user request from 'id=85 addr=188.166.115.185:12036 fd=9 name= age=5 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=34 qbuf-free=32734 obl=0 oll=0 omem=0 events=r cmd=slaveof user=default')
redis_1     | 1:M 26 Jan 2021 12:00:16.046 * 1 changes in 3600 seconds. Saving...
redis_1     | 1:M 26 Jan 2021 12:00:16.050 * Background saving started by pid 24
redis_1     | 24:C 26 Jan 2021 12:00:16.053 * DB saved on disk
redis_1     | 24:C 26 Jan 2021 12:00:16.054 * RDB: 0 MB of memory used by copy-on-write
redis_1     | 1:M 26 Jan 2021 12:00:16.150 * Background saving terminated with success

полагаю дело в этом * RDB: 0 MB of memory used by copy-on-write
как чинить? у кого какие мысли? заранее спасибо за ответ


Решения вопроса 0


Ответы на вопрос 4



@vitaly_il1

Проверьте лог VPS.
А через какое время исчезла запись? Больше 10 минут? Есть что-то в логе контейнера за это время?



@wazza

Скорее всего память переполняется.
Попробуйте в redis.conf прописать maxmemory меньше половины от имеющегося 1Гб.



@user9823 Автор вопроса

Так же, пробую создать билд на основании загруженого файла redis.conf в котором прописаны maxmemory
теперь при запуске
127.0.0.1:6379> config get maxmemory
1) «maxmemory»
2) «128000000»

изначально мемори уже установлен, но данные в редис не записываются



@rez0n

Redis нужно запускать с такой командой — redis-server —appendonly yes

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *