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
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
FlaskRedis client here will pass its keyword arguments
so all parameters from the
Redis documentation page will work here as well
— such as
Access is done by using
FlaskRedis as if it was a
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
Extra features in flask-redis
Instead of the default
Redis client from
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
- Check for open issues or open a fresh issue to start a discussion
- Fork the repository on GitHub.
- Send a pull request with your code!
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.