Назад | Перейти на главную страницу

почему Redis не запускается с конфигурацией по умолчанию?

Я использую Ubuntu 18 (ну, на самом деле подсистема Windows для Linux с дистрибутивом Ubuntu 18). Я установил Redis 4.0.9. Если я запускаю его без указанной конфигурации, все работает нормально:

redis-server

Однако, если я запускаю его с использованием установленного файла конфигурации по умолчанию, он выдает ошибку:

Почему это могло быть? Ранее я изменил значение по умолчанию, но затем удалил его с помощью --purge и переустановил redis-server, чтобы вернуть исходную конфигурацию по умолчанию. Тем не менее ошибка сохраняется.

Вы можете увидеть загруженную конфигурацию, которая вызывает у меня проблемы: https://defuse.ca/b/g4wHiT0SlX0AUcpuSpgx3v

PS

Я разместил это на StackOverflow после того, как понял, что может быть лучший форум, так как здесь всего пара сотен вопросов о Redis, а там более 15000. Извините за дублирование.

Похоже, вы восстанавливаете RDB с другого сервера или с другой конфигурацией и несоответствующим типом данных, как они написаны, или не могут быть интерпретированы без ReJSON-RL. Если это так, просто передайте требуемый модуль во время запуска сервера, он должен работать. как показано ниже

redis-server --loadmodule /path/to/module/rejson.so

Благодаря комментариям / ответу Итамара Хабера и asktyagi, я думаю, что я понял, что происходит.

Когда я раньше использовал ReJSON модуль, он записал некоторые данные в БД. По умолчанию Redis время от времени выполняет резервное копирование своих данных на диск (я ошибся в предположении, что он работает полностью в ОЗУ). Итак, что произошло: когда я вернулся к стандартной конфигурации и перестал использовать модуль, Redis не смог запустить и восстановить данные из резервной копии, так как он не смог проанализировать данные, оставленные теперь отсутствующим модулем. Отсюда и ошибка.

Причина, по которой удаление и переустановка не помогли, заключается в том, что новая установка Redis все равно найдет файл резервной копии, оставленный предыдущей установкой, и попытается восстановить эти данные. Файл был dump.rdb в моем домашнем каталоге. Возможно, сценарий переместил его туда из рабочего каталога Redis во время удаления, а другой сценарий восстановил его в рабочий каталог Redis во время установки ?. Итак, чтобы вернуть Redis в нормальное состояние, я думаю, мне нужно было выполнить одно из следующих действий:

  1. Переместить / удалить dump.rdb файл, поэтому не будет данных для восстановления
  2. Запустите Redis с модулем, который записал данные
  3. Запустите Redis без конфигурации или с конфигурацией, которую не удалось найти dump.rdb

Вот соответствующий раздел конфигурации. Он показывает, как Redis со своей конфигурацией по умолчанию смог найти дамп данных из предыдущей установки.

################################ SNAPSHOTTING  ################################
#
# Save the DB on disk:
#
#   save <seconds> <changes>
#
#   Will save the DB if both the given number of seconds and the given
#   number of write operations against the DB occurred.
#
#   In the example below the behaviour will be to save:
#   after 900 sec (15 min) if at least 1 key changed
#   after 300 sec (5 min) if at least 10 keys changed
#   after 60 sec if at least 10000 keys changed
#
#   Note: you can disable saving completely by commenting out all "save" lines.
#
#   It is also possible to remove all the previously configured save
#   points by adding a save directive with a single empty string argument
#   like in the following example:
#
#   save ""

save 900 1
save 300 10
save 60 10000

# The filename where to dump the DB
dbfilename dump.rdb

# The working directory.
#
# The DB will be written inside this directory, with the filename specified
# above using the 'dbfilename' configuration directive.
#
# The Append Only File will also be created inside this directory.
#
# Note that you must specify a directory here, not a file name.
dir /var/lib/redis

Спасибо всем за помощь. Жаль, что я не понял это раньше; Я закончил тем, что стер ОС и начал с нуля из-за разочарования.