阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

flask扩展 flask-cache

406次阅读
没有评论

共计 2188 个字符,预计需要花费 6 分钟才能阅读完成。

一、安装

pip install flask-cache

二、创建三方对象

from flask_cache import Cache
cache = Cache()

三、app 加载三方对象

from exts import cache
cache.init_app(app)

四、配置

# 缓存类型 redis 数据库 CACHE_TYPE = "redis" # CACHE_TYPE = "simple" # 简单的缓存 # 缓存时间 CACHE_DEFAULT_TIMEOUT = 60 * 60 * 24 * 7 #redis 中键的前缀 CACHE_KEY_PREFIX = "cache:" # redis 地址 CACHE_REDIS_HOST = "127.0.0.1" # redis 端口 CACHE_REDIS_PORT = 6379 # redis 密码 CACHE_REDIS_PASSWORD = "123456" # 使用哪个库 CACHE_REDIS_DB = 1

五、启动报错与解决

  • 报错

flask 扩展 flask-cache

  • 解决

    打开文件

    sudo vim /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/flask_cache/jinja2ext.py

    修改文件

    33 行原文件

    from flask.ext.cache import make_template_fragment_key

    修改为

    from flask_cache import make_template_fragment_key

六、使用

导入

from exts import cache
  • 装饰器缓存

    cache.cached()

    • timeout:过期时间,默认为 None,即永不过期
    • key_prefix:缓存项键值的前缀,默认为”view/%s”传入的值是唯一的
    • unless:回调函数,当其返回 True 时,缓存不起作用。默认为 None,即缓存有效
    @myApp.route('/index/') @cache.cached(timeout=300) # @cache.cached(timeout=300,key_prefix='index')# 设置一个 key_prefix 来作为标记 def index(): return render_template("index.html")

    注意

    • cache.delete(‘index’) 前缀 index 来删除缓使用
    • 装饰器 cache.cached() 不会考虑到参数的问题, 如果函数在接收到不同的实参后依然返回相同结果

    cache.memoize()

    @myApp.route('/page/<int:num>/') @myApp.route('/page/') @cache.memoize(300) def con(num=1): return render_template("index.html")

    注意

    • 装饰器 @cache.memoize() 不仅仅会缓存运行的结果, 还缓存调用时的参数, 所以在函数接受到相同的参数时, 就会将缓存中该参数对应的结果返回
  • 底层缓存

    设置

    @myApp.route("/setCache/") def setCache(): key = request.args.get("key") value = request.args.get("value") # 设置缓存 (往 redis 中存储键值对) cache.set(key, value, 60) return "设置了一个键为 %s,值为 %s 的缓存"%(key, value)

    获取

    @myApp.route("/getCache/") def getCache(): key = request.args.get("key") # 获取缓存值,如果获取不到返回 None value = cache.get(key) return "获取键为 %s 的缓存的值:%s"%(key, value)

    删除

    • 第一种方法就是设置过期时间自动清除,可以在 Flask 的 config 里面加上配置项:

      CACHE_DEFAULT_TIMEOUT

    • 装饰器加参数 timeout=50。

      @cache.cached(timeout=50) @cache.memoize(timeout=50)
    • 清除所有缓存
      cache.clear()
    • 只清除 memoize 的缓存

      cache.delete_memoized(缓存的视图函数名) # 实例 cache.delete_memoized(con) cache.delete_memoized('con', 5) # 删除调用 'con' 函数并且参数为 5 的缓存项
    • 删除 cache.cached 的缓存

      cache.delete('con') # 删除 'con' 缓存项 cache.delete_many('con', 'view_hello') # 同时删除 'con' 和 'view_hello' 缓存项

    缓存案例

    @blue.route("/user/") def user(): addr = request.remote_addr key = addr + "user" # current_app result = cache.get(key) if result: print(addr, "从缓存中加载数据") return result result = render_template("User.html") print(addr, "从数据库加载数据") cache.set(key, result, timeout=30) return result

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-05-26发表,共计2188字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19348
评论数
4
阅读量
7802412
文章搜索
热门文章
开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南 大家好,我是星哥。之前介绍了腾讯云的 Code...
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

云服务器部署服务器面板 1Panel:小白轻松构建 Web 服务与面板加固指南 哈喽,我是星哥,经常有人问我不...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
【开源神器】微信公众号内容单篇、批量下载软件

【开源神器】微信公众号内容单篇、批量下载软件

【开源神器】微信公众号内容单篇、批量下载软件 大家好,我是星哥,很多人都希望能高效地保存微信公众号的文章,用于...
星哥带你玩飞牛NAS-5:飞牛NAS中的Docker功能介绍

星哥带你玩飞牛NAS-5:飞牛NAS中的Docker功能介绍

星哥带你玩飞牛 NAS-5:飞牛 NAS 中的 Docker 功能介绍 大家好,我是星哥,今天给大家带来如何在...
每天一个好玩的网站-手机博物馆-CHAZ 3D Experience

每天一个好玩的网站-手机博物馆-CHAZ 3D Experience

每天一个好玩的网站 - 手机博物馆 -CHAZ 3D Experience 一句话介绍:一个用 3D 方式重温...
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
Prometheus:监控系统的部署与指标收集

Prometheus:监控系统的部署与指标收集

Prometheus:监控系统的部署与指标收集 在云原生体系中,Prometheus 已成为最主流的监控与报警...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
支付宝、淘宝、闲鱼又双叕崩了,Cloudflare也瘫了连监控都挂,根因藏在哪?

支付宝、淘宝、闲鱼又双叕崩了,Cloudflare也瘫了连监控都挂,根因藏在哪?

支付宝、淘宝、闲鱼又双叕崩了,Cloudflare 也瘫了连监控都挂,根因藏在哪? 最近两天的互联网堪称“故障...
每天一个好玩的网站-手机博物馆-CHAZ 3D Experience

每天一个好玩的网站-手机博物馆-CHAZ 3D Experience

每天一个好玩的网站 - 手机博物馆 -CHAZ 3D Experience 一句话介绍:一个用 3D 方式重温...
每年0.99刀,拿下你的第一个顶级域名,详细注册使用

每年0.99刀,拿下你的第一个顶级域名,详细注册使用

每年 0.99 刀,拿下你的第一个顶级域名,详细注册使用 前言 作为长期折腾云服务、域名建站的老玩家,星哥一直...
浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍 前言 在 AI 自动化快速发展的当下,浏览器早已不再只是...
零成本上线!用 Hugging Face免费服务器+Docker 快速部署HertzBeat 监控平台

零成本上线!用 Hugging Face免费服务器+Docker 快速部署HertzBeat 监控平台

零成本上线!用 Hugging Face 免费服务器 +Docker 快速部署 HertzBeat 监控平台 ...