How to cache SQL Alchemy calls with Flask-Cache and Redis? How to cache SQL Alchemy calls with Flask-Cache and Redis? python python

How to cache SQL Alchemy calls with Flask-Cache and Redis?


You don't need to create custom RedisCache class. The docs is just teaching how you would create new backends that are not available in flask-cache. But RedisCache is already available in werkzeug >= 0.7, which you might have already installed because it is one of the core dependencies of flask.

This is how I could run the flask-cache with redis backend:

import timefrom flask import Flaskfrom flask_cache import Cacheapp = Flask(__name__)cache = Cache(app, config={'CACHE_TYPE': 'redis'})@cache.memoize(timeout=60)def query_db():    time.sleep(5)    return "Results from DB"@app.route('/')def index():    return query_db()app.run(debug=True)

The reason you're getting "ImportError: redis is not a valid FlaskCache backend" is probably because you don't have redis (python library) installed which you can simply install by:
pip install redis.


your redis args would look something like this:

cache = Cache(app, config={    'CACHE_TYPE': 'redis',    'CACHE_KEY_PREFIX': 'fcache',    'CACHE_REDIS_HOST': 'localhost',    'CACHE_REDIS_PORT': '6379',    'CACHE_REDIS_URL': 'redis://localhost:6379'    })

Putting the @cache.memoize over a method that grabs the info from the DB should work.