今天运行后端koa出现这个问题,当时自己还一脸懵逼,?????
报错信息:(node:8668) UnhandledPromiseRejectionWarning: ReplyError: ERR invalid DB index
一、问题出现
使用百度翻译了一下,知道是数据库的索引有问题,还是一脸懵逼状态。????
二、问题分析
发现问题是:
一个redis实例默认有16个数据库,从0-15,超出这个范围就会爆ERR invalid DB index,在redis_home/redis.windows-service.conf(我的redis作为windows服务存在,所以修改这个配置文件,如果不是服务,可以修改redis.windows.conf)中,描述如下。
# Set the number of databases. The default database is DB 0, you can select
# a different one on a per-connection basis using SELECT <dbid> where
# dbid is a number between 0 and 'databases'-1
databases 16
涉及到多实例数据库,redis的多数据库类似mysql数据库,一个mysql实例就可以有多个数据库,但是,redis的数据库不推荐用来分隔数据,redis有没有什么方法使不同的应用程序数据彼此分开同时又存储在相同的实例上呢?就相当于mysql数据库,不同的应用程序数据存储在不同的数据库下,redis没有提供任何方法来关联标识不同的数据库。
redis中,数据库是由一个整数索引标识,而不是由一个数据库名称。默认情况下,一个客户端连接到数据库0。redis配置文件中下面的参数来控制数据库总数。
三、解决办法
第一种:修改配置koa对redis的配置文件,将16改成15
第二种:修改redis的配置文件,redis.windows.conf,将数据库修改为18
采用其中一种只有运行,正常了