微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Redis:无效的数据库索引

如何解决Redis:无效的数据库索引

我最近通过AWS启动了redis数据库,并希望使用一些初始虚拟代码进行一些测试。在同一VPC内的EC2实例上运行代码时,出现错误redis.exceptions.ResponseError: invalid DB index

代码如下:

import redis
import pickle
import zlib
EXPIRATION_SECONDS = 600
r = redis.Redis(host='dse-inventory-orders.xxxxxx.xxxxxx.xxxxxx.cache.amazonaws.com',port=6379,db='dse-inventory-orders')
r.set('foo','bar')
r.get('foo')

logger.info(f"r.get('foo'): {r.get('foo')}")

这是错误消息。关于我做错了什么的任何想法?:

Traceback (most recent call last):
File "/tmp/scripts/redis_test.py",line 25,in <module>
r.set('foo','bar')
File "/home/ec2-user/anaconda3/envs/solver_env/lib/python3.7/site-packages/redis/client.py",line 1801,in set
return self.execute_command('SET',*pieces)
File "/home/ec2-user/anaconda3/envs/solver_env/lib/python3.7/site-packages/redis/client.py",line 898,in execute_command
conn = self.connection or pool.get_connection(command_name,**options)
File "/home/ec2-user/anaconda3/envs/solver_env/lib/python3.7/site-packages/redis/connection.py",line 1192,in get_connection
connection.connect()
File "/home/ec2-user/anaconda3/envs/solver_env/lib/python3.7/site-packages/redis/connection.py",line 567,in connect
self.on_connect()
File "/home/ec2-user/anaconda3/envs/solver_env/lib/python3.7/site-packages/redis/connection.py",line 664,in on_connect
if nativestr(self.read_response()) != 'OK':
File "/home/ec2-user/anaconda3/envs/solver_env/lib/python3.7/site-packages/redis/connection.py",line 756,in read_response
raise response
redis.exceptions.ResponseError: invalid DB index
ERROR conda.cli.main_run:execute(39): Subprocess for 'conda run ['/bin/bash','/usr/local/bin/fetch_and_run.sh','pythonRunnerCplex.sh','s3://srdata-lab/ipredict_dev/dynamic_scheduling_engine/scripts/redis_test.py','redis_test.py']' command Failed. Stderr was:
    
Traceback (most recent call last):
File "/tmp/scripts/redis_test.py",in read_response
raise response
redis.exceptions.ResponseError: invalid DB index

解决方法

建立连接时;

redis.Redis(host='dse-inventory-orders.xxxxxx.xxxxxx.xxxxxx.cache.amazonaws.com',port=6379,db='dse-inventory-orders')

您使用db作为dse-inventory-orders(字符串),但是根据documentation

选择具有指定的从零开始的数字索引的Redis逻辑数据库。新连接始终使用数据库0。

因此,将其替换为0,它将起作用。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。