FLASK 缓存(flask_caching)
创始人
2024-11-14 15:05:44
0

1、目标

为了尽量减少缓存穿透,并同时减少web的响应时间,可以针对那些需要一定时间才能获取结果的函数和那些不需要频繁更新的视图函数提供缓存服务,可以在一定的时间内直接返回结果而不是每次都需要计算或者从数据库中查找。

2、 集成

pip install Flask-Caching==2.3.0 pip install cachelib==0.9.0 

3、使用

3.1、配置

  • null: 不缓存。
  • simple: 使用本地Python字典缓存。这不是真正的线程安全。
  • memcached: 使用memcached服务器作为后端。支持pylibmc或memcache或谷歌应用程序引擎的memcache库。
  • gaememcached: MemcachedCache一个不同的名称。
  • redis: 使用 Redis 作为后端存储缓存值。
  • filesystem: 使用文件系统来存储缓存值。
  • saslmemcached:使用memcached服务器作为后端。使用SASL建立与memcached服务器的连接。pylibmc是必须的,libmemcached必须支持SASL。
class BaseConfig:     # 缓存配置     CACHE_TYPE = os.getenv('CACHE_TYPE') or 'SimpleCache'     CACHE_DEFAULT_TIMEOUT = os.getenv('CACHE_DEFAULT_TIMEOUT') or 300 

初始化及注册蓝图

from flask import Flask from flask_caching import Cache # 包名需要修改 from applications.configs.config import BaseConfig cache = Cache(config={'CACHE_TYPE': BaseConfig.CACHE_TYPE, 'CACHE_DEFAULT_TIMEOUT': BaseConfig.CACHE_DEFAULT_TIMEOUT})  #缓存配置 ''' 参数: timeout:超时时间 key_prefix:设置该函数的标志 unless:设置是否启用缓存,如果为True,不启用缓存 forced_update:设置缓存是否实时更新,如果为True,无论是否过期都将更新缓存 query_string:为True时,缓存键是先将参数排序然后哈希的结果 cache.memoize:装饰器,装饰有参数函数,使得该函数结果可以缓存 make_name:设置函数的标志,如果没有就使用装饰的函数 # 其他参数同cached  cache.delete_memoized:删除缓存 参数: fname:缓存函数的名字或引用 *args:函数参数  cache.clear() # 清除缓存所有的缓存,这个操作需要慎重 cache.cache # 获取缓存对象  #获取某个网页是否存在缓存,key值如'view//gbook.html' cache.cache.has('view/{}'.format(request.path)) #打印该缓存 print(request.path,cache.get('view/{}'.format(request.path))) #删除该缓存 cache.delete('view//gbook.html') '''  # 注册 def init_cache(app: Flask):     cache.init_app(app) 

3.2、使用

可选参数有:

  • key_prefix:缓存指定的函数;
  • unless:是否启用缓存,如果为True,不启用缓存;
  • forced_update:缓存是否实时更新,如果为True,无论是否过期都将更新缓存;
  • query_string:为True时,缓存键是先将参数排序然后哈希的结果;
  • timeout: 超时会自动刷新缓存。

在视图函数中

@app.route('/index')                                                                                                          @cache.cached(timeout=50) def index():       print "index called"     return "Hello World"  

在其他重复调用的函数

@cache.cached(timeout=300, key_prefix="event", make_cache_key='event_info_cache') def get_event_dict(): 	pass 

注意:key_prefix 一定要加,否则在一个视图函数中,调取俩个使用了缓存的函数,会返回相同的结果。

相关内容

热门资讯

据目击者称!上饶中至能操控吗(... 据目击者称!上饶中至能操控吗(辅助)好像真的有辅助app(发现有挂)1、这是跨平台的上饶中至能操控吗...
现场直击!广东雀神挂件骗局(辅... 现场直击!广东雀神挂件骗局(辅助)好像是真的有辅助app(有挂技巧)广东雀神挂件骗局能透视中分为三种...
黑科技辅助挂!新超凡辅助器(辅... 黑科技辅助挂!新超凡辅助器(辅助)原来是有辅助方法(确实有挂)1、用户打开应用后不用登录就可以直接使...
相较于以往!博雅红河西元红河破... 相较于以往!博雅红河西元红河破解版(辅助)总是真的有辅助脚本(有人有挂)1.博雅红河西元红河破解版 ...
网友热议!广东闲来辅助(辅助)... 网友热议!广东闲来辅助(辅助)一直确实有辅助工具(有挂技术)1、许多玩家不知道广东闲来辅助辅助怎么退...
黑科技辅助!微乐春天扑克开挂辅... 黑科技辅助!微乐春天扑克开挂辅助插件(辅助)切实是真的有辅助软件(有挂头条)1、全新机制【微乐春天扑...
长期以来!爱玩联盟辅助(辅助)... 长期以来!爱玩联盟辅助(辅助)确实存在有辅助攻略(真的有挂)1、首先打开爱玩联盟辅助辅助器下载最新版...
第三方插件!天天爱柳州辅助(辅... 第三方插件!天天爱柳州辅助(辅助)总是确实有辅助技巧(有挂分享)1、第三方插件!天天爱柳州辅助(辅助...
迎来新发展!微乐家乡app辅助... 迎来新发展!微乐家乡app辅助器(辅助)切实是真的有辅助脚本(有挂教学)进入游戏-大厅左侧-新手福利...
第三方技巧!情怀麻将辅助(辅助... 第三方技巧!情怀麻将辅助(辅助)竟然是有辅助器(有挂功能)1、游戏颠覆性的策略玩法,独创攻略技巧玩法...