因为数据库的速度是一个web应用性能的瓶颈,因此,为了提高访问效率,尽可能的减少数据库的操作。可以将经常访问的数据缓存起来,再次使用时直接从缓存中获取,而不是每次都操作数据库。
-
flask-cache:专门负责数据缓存的扩展。
-
安装:
pip install flask-cache
-
使用:
from flask_cache import Cache # 配置 # 缓存类型 app.config['CACHE_TYPE'] = 'redis' # redis主机 app.config['CACHE_REDIS_HOST'] = '127.0.0.1' # redis端口 app.config['CACHE_REDIS_PORT'] = 6379 # redis数据库 app.config['CACHE_REDIS_DB'] = 1 # 创建对象 cache = Cache(app, with_jinja2_ext=False)
-
缓存视图函数
# timeout:有效期,默认为300s # key_prefix:键前缀 @cache.cached(timeout=100, key_prefix='index') def index(): print('查询数据库') return '数据缓存'
-
清除缓存
@app.route('/delete/') def delete(): # 指定删除 # cache.delete('index') # 清空全部 cache.clear() return '缓存已删除'
-
缓存普通函数
# 缓存普通函数时最好指定key_prefix参数 # 因为不指定时,缓存的键前缀默认是调用的视图函数所在路由 @cache.cached(timeout=10, key_prefix='aaa') def aaa(): print('查询数据库') return 'hello world' # 缓存普通函数 @app.route('/common/') def common(): return aaa()
-
自定义缓存
@app.route('/test/') def test(): # 先从缓存中获取数据 data = cache.get('test_data') if data: # 有缓存,直接返回 return data # 没有缓存 print('读取数据库') data = '123456' # 将数据缓存起来 cache.set('test_data', data, timeout=20) return data