如何为Flask应用配置Redis Sentinel并适配SSL及Flask-Caching参数
Flask-Caching Redis Sentinel 配置指导
配置项含义说明
你提到的几个配置项用途如下:
CACHE_KEY_PREFIX:所有缓存key的统一前缀,作用是避免同个Redis实例下多个应用的缓存key冲突,直接沿用你原来配置的someprefix即可。CACHE_REDIS_SENTINELS:值为列表类型,每个元素是哨兵节点的(主机地址, 端口)元组,按你实际部署的哨兵节点信息填写。CACHE_REDIS_SENTINEL_MASTER:Redis哨兵集群中提前定义的主节点名称,是你搭建哨兵集群时自行配置的,默认通常为mymaster。CACHE_REDIS_PASSWORD:Redis主从节点的访问密码,和你原来配置的mypass一致即可。CACHE_REDIS_DB:使用的Redis库编号,你原来使用的是0,直接填0即可。
带SSL的完整配置示例
首先确认你的redis-py依赖版本≥2.9,原生支持哨兵连接,不需要额外安装其他依赖。配置如下:
# 按你实际的哨兵节点信息修改 SENTINEL_NODES = [ ('sentinel1地址', 26379), ('sentinel2地址', 26379), ('sentinel3地址', 26379) ] CACHE_CONFIG = { 'CACHE_TYPE': 'RedisSentinel', # 缓存类型改为RedisSentinel,不要用原来的redis 'CACHE_DEFAULT_TIMEOUT': 60 * 60 * 24, 'CACHE_KEY_PREFIX': 'someprefix', 'CACHE_REDIS_SENTINELS': SENTINEL_NODES, 'CACHE_REDIS_SENTINEL_MASTER': 'mymaster', # 替换为你自己的哨兵主节点名称 'CACHE_REDIS_PASSWORD': 'mypass', 'CACHE_REDIS_DB': 0, # SSL及其他额外连接参数全部放在CACHE_REDIS_OPTIONS中 'CACHE_REDIS_OPTIONS': { 'username': '', # 你原来的用户名配置为空,不需要可以删掉这行 'ssl': True, 'ssl_cert_reqs': 'required', 'ssl_ca_certs': 'redis_certs/ca.crt', 'ssl_certfile': 'redis_certs/client.crt', 'ssl_keyfile': 'redis_certs/client.key', # 如果哨兵节点本身也开启了SSL访问,取消注释下面的配置,按实际参数修改 # 'sentinel_kwargs': { # 'ssl': True, # 'ssl_cert_reqs': 'required', # 'ssl_ca_certs': 'redis_certs/ca.crt', # 'ssl_certfile': 'redis_certs/client.crt', # 'ssl_keyfile': 'redis_certs/client.key' # } } }
注意不要像原有配置那样提前实例化
StrictRedis对象传入缓存配置,Flask-Caching的哨兵模式会自动根据配置创建连接。如果需要调整连接超时、重试次数等参数,也可以统一放在CACHE_REDIS_OPTIONS中。
内容的提问来源于stack exchange,提问作者user17238351
相关产品推荐
相关产品推荐

