在Flask应用中使用Redis的好方法
项目描述
flask-redis
在Flask应用中使用Redis的好方法。
配置
首先使用pip install flask-redis
安装扩展。完成后,在Flask配置中配置它。设置您的Redis实例的URL如下
REDIS_URL = "redis://:password@localhost:6379/0"
如果您想连接到Unix套接字,可以指定为"unix://:password@/path/to/socket.sock?db=0"
。
使用方法
设置
要将Redis客户端添加到您的应用程序
from flask import Flask
from flask_redis import FlaskRedis
app = Flask(__name__)
redis_client = FlaskRedis(app)
或者,如果您愿意,您也可以这样做
redis_client = FlaskRedis(app)
def create_app():
app = Flask(__name__)
redis_client.init_app(app)
return app
访问Redis
从FlaskRedis
创建的上述redis客户端就像是从redis-py
库中的普通Redis
实例一样
from my_app import redis_client
@app.route('/')
def index():
return redis_client.get('potato')
有关您可以在客户端使用哪些方法以及如何使用Lua脚本、管道和回调等高级功能的详细说明,请查阅redis-py文档。
小技巧: redis-py 包使用 redis
命名空间,因此将您的Redis对象命名为 redis_client
而不是简单的 redis
会更好。
flask-redis的额外功能
自定义提供者
您可以使用自己的客户端代替默认的来自 redis-py
的 Redis
客户端。这可以用于将测试替换为 mockredis。
from flask import Flask
from flask_redis import FlaskRedis
from mockredis import MockRedis
def create_app():
app = Flask(__name__)
if app.testing:
redis_store = FlaskRedis.from_custom_provider(MockRedis)
else:
redis_store = FlaskRedis()
redis_store.init_app(app)
return app
贡献
- 检查是否有开放的问题或提出一个新的问题以开始讨论。
- 在GitHub上Fork 存储库。
- 发送带有您代码的pull请求!
合并需要测试以证明错误已被修复或功能按预期工作。如果您不确定如何编写测试,请随意提出一个没有测试的草稿pull请求并寻求帮助。
由于Bence(唯一的维护者)全职工作,请允许在处理您的问题或pull请求之前留出一些时间。
变更日志
此项目中所有显著更改都将记录在此文件中。
格式基于Keep a Changelog,并且此项目遵循语义化版本控制。
0.4.0 (2019-05-29)
- 重新组织了模块并重写了除库代码之外的所有内容,主要是包装和CI。没有用户界面更改。
0.3.0 (2016-07-18)
- 向后不兼容:
FlaskRedis.init_app
方法不再接受strict
参数。请在创建您的FlaskRedis
实例时传递此标志。 - 向后不兼容: 扩展现在将注册到实例的(小写)配置前缀下。默认配置前缀为
'REDIS'
,除非您更改它,否则您仍然可以通过app.extensions['redis']
如以前那样访问扩展。 - 向后不兼容: 默认类已更改为
redis.StrictRedis
。您可以通过在FlaskRedis
关键字参数中指定strict=False
来切换回旧的redis.Redis
类。 - 您现在可以将所有支持的
Redis
关键字参数(如decode_responses
)传递给FlaskRedis
,并且它们将正确传递给redis-py
实例。感谢,@giyyapan! - 现在支持类似
redis_store['key'] = value
、redis_store['key']
和del redis_store['key']
的用法。感谢,@ariscn!
0.2.0 (2015-04-15)
- 使0.1.0的弃用警告更改最终确定
0.1.0 (2015-04-15)
- 弃用: 将
flask_redis.Redis
重命名为flask_redis.FlaskRedis
。使用旧名称仍然有效,但会发出弃用警告,因为它将在下一个版本中删除。 - 弃用: 设置
REDIS_DATABASE
(或等效)现在会发出弃用警告,因为它将在版本中删除,转而使用在REDIS_URL
(或等效)中包含数据库编号。 - 添加了
FlaskRedis.from_custom_provider(provider)
类方法,用于使用任何支持使用from_url
类方法进行实例化的redis提供者类。 - 为
FlaskRedis
添加了strict
参数,它期望一个布尔值,并允许选择使用redis.StrictRedis
和redis.Redis
作为默认提供者。 - 通过Flask的扩展API将
FlaskRedis
注册为Flask扩展 - 使用py.test重写了测试套件
- 去掉了 attribute copying 机制,改用使用
__getattr__
魔法方法将调用传递给底层客户端
0.0.6 (2014-04-09)
- 改进了Python 3支持(感谢underyx!)。
- 改进了测试用例。
- 改进了配置。
- 修复了文档。
- 删除了未使用的导入(感谢underyx和lyschoening!)。
0.0.5 (2014-02-17)
- 增强了配置前缀的支持。
0.0.4 (2014-02-17)
- 添加了对config_prefix的支持,允许多个数据库。
0.0.3 (2013-07-06)
- 为Flask 0.9/0.10添加了TravisCI测试。
- 在README中添加了徽章。
0.0.2 (2013-07-06)
- 实现了一个非常简单的测试。
- 修复了一些文档问题。
- 包含requirements.txt用于测试。
- 包含包含一些基本测试方法的任务文件。
0.0.1 (2013-07-05)
- 概念
- 将包的初始提交提交到GitHub。
致谢
《flask-redis》项目由Bence Nagy (underyx)编写和维护。
该项目最初由Rhys Elsmore创建,他一直维护到2014年的0.0.6版本发布。他的工作是在Apache 2许可下进行的。自那时起,该项目已进行了全面重写,但他的工作对于启发至关重要。谢谢,Rhys!
可以在GitHub的贡献者页面上找到完整的贡献者列表,或者您可以通过运行git shortlog -sn
自行获取。
项目详情
flask-redis-0.4.0.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | e1fccc11e7ea35c2a4d68c0b9aa58226a098e45e834d615c7b6c4928b01ddd6c |
|
MD5 | 41a3f42ee360f53f9b78030af7683dfd |
|
BLAKE2b-256 | b8d16e5a087e2fd99782451312dd467bbf5f9f64d999de900047dc0854a7d175 |
flask_redis-0.4.0-py2.py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 8d79eef4eb1217095edab603acc52f935b983ae4b7655ee7c82c0dfd87315d17 |
|
MD5 | 76de72bbf395704b2d4395c0e9d36737 |
|
BLAKE2b-256 | 9d9ccead8fff1c8da2bd31a83ec476c3364812ee74f3c7c3445d070555f681d1 |