python-3.x - 是否可以在 python 中将连接字符串传递给 StrictRedis?
问题描述
在谷歌搜索时我无法找到答案,但似乎它应该是可行的。我正在从我的密码管理器中检索 Redis 连接字符串。我想把这个连接字符串传递给 Redis。我看到的所有例子都采用以下格式。
redis.StrictRedis(host=myHostname, port=6380, password=myPassword, ssl=True)
我也尝试过执行以下操作。
r = redis.StrictRedis()
r.ConnectionString = myConnectionString
这会导致错误
ConnectionRefusedError: [Errno 111] 连接被拒绝
有没有办法简单地传递这个连接字符串?对我来说似乎适得其反,必须将其取回然后将其拆分。
我的连接字符串被检索后看起来像这样。
xxx.redis.cache.yyy.net:6380,password=redacted,ssl=True,abortConnect=False
解决方案
您没有 Python Redis 客户端支持的连接字符串;那是一个.NET StackExchange.Redis 配置字符串。您必须自己解析组件,跳过该abortConnection
选项:
hostport, *options = myConnectionString.split(",")
host, _, port = hostport.partition(":")
arguments = {}
for option in options:
opt, _, value = option.partition("=")
if opt == "port":
value = int(value)
elif opt == "ssl":
value = value.lower() == "true"
elif opt == "abortConnect":
continue
arguments[opt] = value
client = redis.Redis(host, port=int(port), **arguments)
请注意,以上是基于您当前使用的选项的非常简单的解析器。如果需要支持更多 StackExchange.Redis 配置功能,则必须编写更多代码以将它们映射到等效的 Python Redis 功能(如果可用)。
对于支持的连接字符串 URL,您可以使用redis.from_url()
函数或Redis.from_url()
类方法
返回从给定数据库 URL 生成的活动 Redis 客户端。
注意支持的方案:
支持三种 URL 方案:
redis:// <http://www.iana.org/assignments/uri-schemes/prov/redis>
_ 创建一个普通的 TCP 套接字连接rediss:// <http://www.iana.org/assignments/uri-schemes/prov/rediss>
_ 创建一个 SSL 包装的 TCP 套接字连接unix://
创建一个 Unix 域套接字连接
请注意,这StrictRedis
只是redis.client.Redis
该类的别名。
推荐阅读
- sql-server - 使用 MS SQL Server 2016 进行春季启动配置
- javascript - 字符串到Angular中的函数调用
- java - 将具有条件逻辑的多个 for 循环转换为 Java 8 流
- c# - 无法从程序集“Microsoft.AspNetCore.Http,版本=3.1.0.0”加载类型“Microsoft.AspNetCore.Http.Internal.BufferingHelper”
- r - 安装包“Rmpfr”在 R 中具有非零退出状态
- bootstrap-4 - 如何在 Bootstrap 按钮和表格之间创建空间
- java - 将目录从一个存储库移动到另一个存储库
- postgresql - 在 docker-compose 文件中创建多个 PostgreSQL 数据库
- docker - Docker 系统尚未使用 systemd 作为 init 系统启动
- c++ - 当需要特定于类型参数的代码时是否应该使用模板?