python-3.x 无法创建redis客户端(针对群集进行身份验证)

yhuiod9q  于 2023-01-18  发布在  Python
关注(0)|答案(1)|浏览(128)

无法使用用户名/密码连接到redis群集。
from redis.cluster import RedisCluster, ClusterNode

def get_redis_connection():
  url = f"rediss://{uname}:{passwd}@{host}:{port}/0"
  connection = RedisCluster.from_url(url)
  if connection.ping():
     print("Success")
  else:
     print("Failed")

get_redis_connection中出现错误:以10为基数int()的文本无效:
注意:密码包含字母数字和特殊字符,包括引号。设置:管道安装
假设用户名和密码如下所示,其中用户名为“travel-tire”:

rediss://travel-tire:v'Y:[4o2n:3*s@hostname:port
sf6xfgos

sf6xfgos1#

密码中的字符不是有效的URI组件。

from redis.cluster import RedisCluster, ClusterNode
# add this import
from urllib.parse import quote

def get_redis_connection():
    # encode your password to make it valid for a uri
    password = quote(passwd, safe="")
    url = f"rediss://{uname}:{passwd}@{password}:{port}/0"
    connection = RedisCluster.from_url(url)
    if connection.ping():
        print("Success")
    else:
        print("Failed")

根据您的Redis客户端版本(如果您使用的版本早于4.0.0),您还需要更改from_url调用:

connection = RedisCluster.from_url(url, decode_components=True)

相关问题