4

我使用 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)

命令:{名称:'选择',参数:['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
4

3 回答 3

4

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

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

于 2021-01-26T00:01:47.173 回答
2

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

要么改databases/etc/redis.conf更高,这对于像 20K 这样非常大的值来说可能是个坏主意,要么选择 0..15 范围内的值。

如果您不确定 20127 的来源,请在原始代码或配置中追踪它。

于 2019-09-25T21:23:04.347 回答
1

这是由于我在这里有额外的空白:

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

也许解析器可以改进?

于 2019-09-25T23:30:16.547 回答