跳转到主要内容

在Flask应用中使用Redis的好方法

项目描述

flask-redis

CircleCI codecov Codacy Badge GitHub tag (latest SemVer)

PyPI - Python Version Flask version support is 0.9+ redis-py version support is 2.6+ Code style: black

在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-pyRedis 客户端。这可以用于将测试替换为 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

贡献

  1. 检查是否有开放的问题或提出一个新的问题以开始讨论。
  2. 在GitHub上Fork 存储库
  3. 发送带有您代码的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'] = valueredis_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.StrictRedisredis.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 (9.9 kB 查看哈希值)

上传时间:

构建分布

flask_redis-0.4.0-py2.py3-none-any.whl (8.6 kB 查看哈希值)

上传时间: Python 2 Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面