Adds Redis support to Flask, built on top of redis-py.
Based on the "Flask" category.
Alternatively, view Flask-Redis alternatives based on common mentions on social networks and blogs.
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of Flask-Redis or a related project?
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
A nice way to use Redis in your Flask app.
Start by installing the extension with pip install flask-redis.
Once that's done, configure it within your Flask config.
Set the URL of your Redis instance like this:
REDIS_URL = "redis://:password@localhost:6379/0"
If you wanna connect to a Unix socket,
you can specify it like "unix://:password@/path/to/socket.sock?db=0".
To add a Redis client to your application:
from flask import Flask
from flask_redis import FlaskRedis
app = Flask(__name__)
redis_client = FlaskRedis(app)
or if you prefer, you can do it the other way around:
redis_client = FlaskRedis()
def create_app():
app = Flask(__name__)
redis_client.init_app(app)
return app
The FlaskRedis client here will pass its keyword arguments
to the Redis class
from the redis-py library,
so all parameters from the Redis documentation page will work here as well
β such as socket_timeout and encoding.
Access is done by using FlaskRedis as if it was a
Redis class
as well:
from my_app import redis_client
@app.route('/')
def index():
return redis_client.get('potato')
For detailed instructions on what methods you can use on the client, as well as how you can use advanced features such as Lua scripting, pipelines, and callbacks, please check the redis-py documentation.
Pro-tip: The redis-py
package uses the redis namespace, so it's nicer to name your Redis object something like redis_client instead of just redis.
Instead of the default Redis client from redis-py,
you can provide your own.
This can be useful to replace it with mockredis for testing:
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
Merging will require a test which shows that the bug was fixed, or that the feature works as expected. Feel free to open a draft pull request though without such a test and ask for help with writing it if you're not sure how to.
As Bence (the only maintainer) works full-time, please allow some time before your issue or pull request is handled.
Do not miss the trending, packages, news and articles with our weekly report.