安装
1 | pip install flask-redis |
初始化
1 2 3 4 5 6 | from flask import Flask from flask_redis import FlaskRedis app = Flask(__name__) app.config['REDIS_URL'] = 'redis://:password@localhost:6379/0' redis_client = FlaskRedis(app) |
整个
使用示例
1 2 3 | @app.route('/') def index(): return redis_client.get('potato') |
源码
初始化方法
使用
1 2 3 4 5 6 7 8 9 | class FlaskRedis(object): def __init__(self, app=None, strict=True, config_prefix="REDIS", **kwargs): self._redis_client = None self.provider_class = redis.StrictRedis if strict else redis.Redis self.provider_kwargs = kwargs self.config_prefix = config_prefix if app is not None: self.init_app(app) |
可以看到默认实例使用的是
init_app 方法
1 2 3 4 5 6 7 8 9 10 11 12 13 | def init_app(self, app, **kwargs): redis_url = app.config.get( "{0}_URL".format(self.config_prefix), "redis://localhost:6379/0" ) self.provider_kwargs.update(kwargs) self._redis_client = self.provider_class.from_url( redis_url, **self.provider_kwargs ) if not hasattr(app, "extensions"): app.extensions = {} app.extensions[self.config_prefix.lower()] = self |
使用自定义类
1 2 3 4 5 6 7 8 9 10 11 12 | @classmethod def from_custom_provider(cls, provider, app=None, **kwargs): assert provider is not None, "your custom provider is None, come on" # We never pass the app parameter here, so we can call init_app # ourselves later, after the provider class has been set instance = cls(**kwargs) instance.provider_class = provider if app is not None: instance.init_app(app) return instance |
总结
可以看到