Я использую Ubuntu 18 (ну, на самом деле подсистема Windows для Linux с дистрибутивом Ubuntu 18). Я установил Redis 4.0.9. Если я запускаю его без указанной конфигурации, все работает нормально:
redis-server
Однако, если я запускаю его с использованием установленного файла конфигурации по умолчанию, он выдает ошибку:
Почему это могло быть? Ранее я изменил значение по умолчанию, но затем удалил его с помощью --purge и переустановил redis-server, чтобы вернуть исходную конфигурацию по умолчанию. Тем не менее ошибка сохраняется.
Вы можете увидеть загруженную конфигурацию, которая вызывает у меня проблемы: https://defuse.ca/b/g4wHiT0SlX0AUcpuSpgx3v
Я разместил это на StackOverflow после того, как понял, что может быть лучший форум, так как здесь всего пара сотен вопросов о Redis, а там более 15000. Извините за дублирование.
Похоже, вы восстанавливаете RDB с другого сервера или с другой конфигурацией и несоответствующим типом данных, как они написаны, или не могут быть интерпретированы без ReJSON-RL. Если это так, просто передайте требуемый модуль во время запуска сервера, он должен работать. как показано ниже
redis-server --loadmodule /path/to/module/rejson.so
Благодаря комментариям / ответу Итамара Хабера и asktyagi, я думаю, что я понял, что происходит.
Когда я раньше использовал ReJSON
модуль, он записал некоторые данные в БД. По умолчанию Redis время от времени выполняет резервное копирование своих данных на диск (я ошибся в предположении, что он работает полностью в ОЗУ). Итак, что произошло: когда я вернулся к стандартной конфигурации и перестал использовать модуль, Redis не смог запустить и восстановить данные из резервной копии, так как он не смог проанализировать данные, оставленные теперь отсутствующим модулем. Отсюда и ошибка.
Причина, по которой удаление и переустановка не помогли, заключается в том, что новая установка Redis все равно найдет файл резервной копии, оставленный предыдущей установкой, и попытается восстановить эти данные. Файл был dump.rdb
в моем домашнем каталоге. Возможно, сценарий переместил его туда из рабочего каталога Redis во время удаления, а другой сценарий восстановил его в рабочий каталог Redis во время установки ?. Итак, чтобы вернуть Redis в нормальное состояние, я думаю, мне нужно было выполнить одно из следующих действий:
dump.rdb
файл, поэтому не будет данных для восстановления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
Спасибо всем за помощь. Жаль, что я не понял это раньше; Я закончил тем, что стер ОС и начал с нуля из-за разочарования.