Redis:无效的数据库索引

Redis: invalid DB index

我最近通过 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", 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

建立连接时;

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

您将 db 用作 dse-inventory-orders(字符串),但根据 documentation;

Select the Redis logical database having the specified zero-based numeric index. New connections always use the database 0.

所以换成0,就可以了。