Skip to content

Commit d9bfb71

Browse files
committed
Add REDIS_DB env variable for db selection
1 parent 34cf856 commit d9bfb71

File tree

2 files changed

+40
-18
lines changed

2 files changed

+40
-18
lines changed

src/common/config.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,16 @@
1616
"ssl_certfile": os.getenv('REDIS_SSL_CERTFILE', None),
1717
"ssl_cert_reqs": os.getenv('REDIS_SSL_CERT_REQS', 'required'),
1818
"ssl_ca_certs": os.getenv('REDIS_SSL_CA_CERTS', None),
19-
"cluster_mode": os.getenv('REDIS_CLUSTER_MODE', False) in ('true', '1', 't')}
19+
"cluster_mode": os.getenv('REDIS_CLUSTER_MODE', False) in ('true', '1', 't'),
20+
"db": int(os.getenv('REDIS_DB', 0))}
2021

2122

2223
def generate_redis_uri():
2324
cfg = REDIS_CFG
2425
scheme = "rediss" if cfg.get("ssl") else "redis"
2526
host = cfg.get("host", "127.0.0.1")
2627
port = cfg.get("port", 6379)
28+
db = cfg.get("db", 0)
2729

2830
username = cfg.get("username")
2931
password = cfg.get("password")
@@ -37,7 +39,7 @@ def generate_redis_uri():
3739
auth_part = ""
3840

3941
# Base URI
40-
base_uri = f"{scheme}://{auth_part}{host}:{port}"
42+
base_uri = f"{scheme}://{auth_part}{host}:{port}/{db}"
4143

4244
# Additional SSL query parameters if SSL is enabled
4345
query_params = {}

src/common/connection.py

Lines changed: 36 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -16,23 +16,43 @@ class RedisConnectionManager:
1616
def get_connection(cls, decode_responses=True) -> Redis:
1717
if cls._instance is None:
1818
try:
19-
redis_class: Type[Union[Redis, RedisCluster]] = redis.cluster.RedisCluster if REDIS_CFG["cluster_mode"] else redis.Redis
19+
if REDIS_CFG["cluster_mode"]:
20+
redis_class: Type[Union[Redis, RedisCluster]] = redis.cluster.RedisCluster
21+
connection_params = {
22+
"host": REDIS_CFG["host"],
23+
"port": REDIS_CFG["port"],
24+
"username": REDIS_CFG["username"],
25+
"password": REDIS_CFG["password"],
26+
"ssl": REDIS_CFG["ssl"],
27+
"ssl_ca_path": REDIS_CFG["ssl_ca_path"],
28+
"ssl_keyfile": REDIS_CFG["ssl_keyfile"],
29+
"ssl_certfile": REDIS_CFG["ssl_certfile"],
30+
"ssl_cert_reqs": REDIS_CFG["ssl_cert_reqs"],
31+
"ssl_ca_certs": REDIS_CFG["ssl_ca_certs"],
32+
"decode_responses": decode_responses,
33+
"lib_name": f"redis-py(mcp-server_v{__version__})",
34+
"max_connections_per_node": 10
35+
}
36+
else:
37+
redis_class: Type[Union[Redis, RedisCluster]] = redis.Redis
38+
connection_params = {
39+
"host": REDIS_CFG["host"],
40+
"port": REDIS_CFG["port"],
41+
"db": REDIS_CFG["db"],
42+
"username": REDIS_CFG["username"],
43+
"password": REDIS_CFG["password"],
44+
"ssl": REDIS_CFG["ssl"],
45+
"ssl_ca_path": REDIS_CFG["ssl_ca_path"],
46+
"ssl_keyfile": REDIS_CFG["ssl_keyfile"],
47+
"ssl_certfile": REDIS_CFG["ssl_certfile"],
48+
"ssl_cert_reqs": REDIS_CFG["ssl_cert_reqs"],
49+
"ssl_ca_certs": REDIS_CFG["ssl_ca_certs"],
50+
"decode_responses": decode_responses,
51+
"lib_name": f"redis-py(mcp-server_v{__version__})",
52+
"max_connections": 10
53+
}
2054

21-
cls._instance = redis_class(
22-
host=REDIS_CFG["host"],
23-
port=REDIS_CFG["port"],
24-
username=REDIS_CFG["username"],
25-
password=REDIS_CFG["password"],
26-
ssl=REDIS_CFG["ssl"],
27-
ssl_ca_path=REDIS_CFG["ssl_ca_path"],
28-
ssl_keyfile=REDIS_CFG["ssl_keyfile"],
29-
ssl_certfile=REDIS_CFG["ssl_certfile"],
30-
ssl_cert_reqs=REDIS_CFG["ssl_cert_reqs"],
31-
ssl_ca_certs=REDIS_CFG["ssl_ca_certs"],
32-
decode_responses=decode_responses,
33-
lib_name=f"redis-py(mcp-server_v{__version__})",
34-
**({"max_connections_per_node": 10} if REDIS_CFG["cluster_mode"] else {"max_connections": 10})
35-
)
55+
cls._instance = redis_class(**connection_params)
3656

3757
except redis.exceptions.ConnectionError:
3858
print("Failed to connect to Redis server", file=sys.stderr)

0 commit comments

Comments
 (0)