我像这样使用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
答案 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)