redis:回复错误:ERR数据库索引超出范围

sqserrrh  于 2022-10-31  发布在  Redis
关注(0)|答案(4)|浏览(547)

我用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年' ] } }
它看起来像是在尝试连接到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
ryhaxcpt

ryhaxcpt1#

在文件etc/redis/redis.conf中,更改databases 16行(默认情况下,它有16行),您很可能需要16行以上行
默认情况下,每个DB索引负责8个或10个数据库(不记得了),因此默认情况下您只使用2个索引(0和1)

ipakzgxi

ipakzgxi2#

SELECT命令用于选择您正在使用的数据库。20127远远超出了您配置的16个数据库的限制。
要么将/etc/redis.conf中的databases更改得更高,这对于像20K这样的非常大的值可能是个坏主意,要么在0..15范围内选择一个值。
如果您不确定20127的来源,请在原始代码或配置中找到它。

omqzjyyz

omqzjyyz3#

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

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

也许解析器可以改进?

z4bn682m

z4bn682m4#

当我停止Docker环境并执行

docker volume prune

错误ERR DB index is out of range (Redis::CommandError)消失。

相关问题