redis: ReplyError: индекс ERR DB находится вне диапазона - PullRequest
0 голосов
/ 26 сентября 2019

Я запустил Redis с помощью Docker следующим образом:

docker run  --rm -p '6379:6379' -v "$redis_data_dir:/data" --name my_redis_server -d redis redis-server --appendonly 'yes'

В прошлом это работало нормально, но теперь я получаю эту ошибку:

{ ReplyError: ERR DB index is out of range
    at parseError (/root/interos/repos/ntrs-cli/node_modules/redis-parser/lib/parser.js:179:12)
    at parseType (/root/interos/repos/ntrs-cli/node_modules/redis-parser/lib/parser.js:302:14)

команда: {имя: 'select', args: ['20127']}}

Похоже, он пытается подключиться к db 20127, я уверен, что это один из этих четырех:

const client_db0 = new Redis(`redis://${conf["platform-build.public-dns"]}:6379/0`);
const client_db1 = new Redis(`redis://${conf["platform-build.public-dns"]}:6379/1`);
const client_db2 = new Redis(`redis://${conf["platform-build.public-dns"]}:6379/2`);
const client_db3 = new Redis(`redis://${conf["platform-build.public-dns"]}:6379/3`);

так есть ли способ запустить redis и сказать ему добавить больше баз данных?что-то вроде:

docker run  .... redis redis-server --appendonly 'yes' --db-count=16

Ответы [ 2 ]

1 голос
/ 26 сентября 2019

Это было из-за лишних пробелов, которые у меня были здесь:

 'platform-build.public-dns': ' 127.0.0.1'

Может быть, парсер можно улучшить?

1 голос
/ 26 сентября 2019

Команда SELECT используется для выбора базы данных, которую вы используете.20127 - это way за пределами установленного вами лимита 16.

Либо измените databases в /etc/redis.conf, чтобы быть выше, что, вероятно, является плохой идеей для очень больших значений, таких как 20K, или выберитезначение в диапазоне 0..15.

Если вы не уверены, откуда исходит 20127, отследите его в исходном коде или конфигурации.

...