redis:ReplyError:ERR DB索引超出范围

时间:2019-09-25 21:18:14

标签: docker redis redis-server

我像这样使用Docker运行redis:

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',参数:['20127']}}

似乎正在尝试连接到数据库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

3 个答案:

答案 0 :(得分:1)

这是由于我在此处有多余的空白

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

也许解析器可以改进?

答案 1 :(得分:0)

SELECT命令用于选择您正在使用的数据库。 20127超出了您配置的限制16。

databases中的/etc/redis.conf更改为更大,对于20K之类的非常大的值,或者选择0..15范围内的值,这可能是个坏主意。

如果不确定20127的来源,请在原始代码或配置中进行跟踪。

答案 2 :(得分:0)

在文件 etc/redis/redis.conf 中 更改行 databases 16(默认情况下,它有 16 个),很可能您需要超过 16 个

默认情况下,每个 DB 索引负责 8 或 10 个数据库(不记得了),所以默认情况下您只使用 2 个索引(0 和 1)