如何从云示例化一个python连接池,运行redis. python Redis以安全地连接到谷歌云Redis(Memstore)

yws3nbqq  于 2023-10-15  发布在  Redis
关注(0)|答案(2)|浏览(127)

从云运行服务,我成功地创建了一个连接到谷歌云Redis:

redis_webhooks = redis.StrictRedis(
            host=redis_webhooks_host,
            port=redis_webhooks_port,
            password=redis_webhooks_authstring,
            ssl=True,
            db=1,
            ssl_cert_reqs="required",
            ssl_ca_certs=f"/tmp/{redis_webhooks_server_ca_pem_name}",
        )

我现在尝试示例化一个连接池,为了更好的性能,我尝试遵循文档和官方谷歌指南和Redis指南,但没有参考如何使用身份验证来实现这一点
我降落在这,但它不工作,有意想不到的关键字“SSL”,然后“SSL_CERT_REQS”等。

pool = redis.ConnectionPool(
            host=redis_webhooks_host,
            port=redis_webhooks_port,
            password=redis_webhooks_authstring,
            ssl=True,
            db=1,
            ssl_cert_reqs="required",
            ssl_ca_certs=f"/tmp/{redis_webhooks_server_ca_pem_name}",
        )
redis_webhooks_client = redis.StrictRedis(connection_pool=pool)

我还尝试了拆分连接和身份验证,如下所示:

pool = redis.ConnectionPool(
            host=redis_webhooks_host,
            port=redis_webhooks_port,
            password=redis_webhooks_authstring,
            db=1,
            max_connections=100, 
            socket_timeout=5,    
            retry_on_timeout=True
        )

redis_webhooks_client = redis.StrictRedis(
            connection_pool=pool,
            ssl=True,
            ssl_cert_reqs="required",
            ssl_ca_certs=f"/tmp/{redis_webhooks_server_ca_pem_name}"
        )

但在这里,我得到了对等端重置的连接。
任何帮助将不胜感激,谷歌只提供简单的例子。谢谢你,谢谢

xzlaal3s

xzlaal3s1#

在后台,redis-py使用连接池来管理到Redis服务器的连接。默认情况下,您创建的每个Redis示例都会创建自己的连接池。你可以覆盖这个行为,并通过传递一个已经创建的连接池示例到Redis类的connection_pool参数来使用现有的连接池。您可以选择这样做,以实现客户端分片或更精细地控制连接的管理方式。
pool = redis.ConnectionPool(host='localhost',port=6379,db=0)r = redis.Redis(connection_pool=pool)

vof42yt1

vof42yt12#

From:Enabling Secure Connections to Redis Enterprise Cloud in Python
我尝试了他们的例子,没有得到你提到的错误。他们的ssl设置比你多。

import redis
import pprint
 
try:
  r = redis.StrictRedis(
    decode_responses=True,
    host='redis-16148.c15.us-east-1-2.ec2.cloud.redislabs.com',
    port=16148,
    password='sekret',
    ssl=True, 
    ssl_keyfile='./redislabs_user_private.key', 
    ssl_certfile='./redislabs_user.crt', 
    ssl_cert_reqs='required', 
    ssl_ca_certs='./redislabs_ca.pem',
    )
 
  info = r.info()
  pprint.pprint(info)
 
except Exception as err:
  print("Error connecting to Redis: {}".format(err))

403被禁止了因为我没有账户安装Redis v5.0.1

相关问题