首页 > 其他分享 >Flask框架 之Flask-caching数据页面缓存

Flask框架 之Flask-caching数据页面缓存

时间:2023-04-22 14:46:07浏览次数:37  
标签:__ 缓存 name Flask app CACHE cache caching

一、配置

CACHE_TYPE: 设置缓存的类型
下面五个参数是所有的类型共有的
CACHE_NO_NULL_WARNING = "warning" # null类型时的警告消息
CACHE_ARGS = [] # 在缓存类实例化过程中解包和传递的可选列表,用来配置相关后端的额外的参数
CACHE_OPTIONS = {} # 可选字典,在缓存类实例化期间传递,也是用来配置相关后端的额外的键值对参数
CACHE_DEFAULT_TIMEOUT # 默认过期/超时时间,单位为秒
CACHE_THRESHOLD # 缓存的最大条目数
CACHE_TYPE = null # 默认的缓存类型,无缓存

CACHE_TYPE = 'simple' # 使用本地python字典进行存储,线程非安全


CACHE_TYPE = 'filesystem' # 使用文件系统来存储缓存的值
CACHE_DIR = "" # 文件目录


CACHE_TYPE = 'memcached' # 使用memcached服务器缓存
CACHE_KEY_PREFIX # 设置cache_key的前缀
CAHCE_MEMCACHED_SERVERS # 服务器地址的列表或元组
CACHE_MEMCACHED_USERNAME # 用户名
CACHE_MEMCACHED_PASSWORD # 密码


CACHE_TYPE = 'uwsgi' # 使用uwsgi服务器作为缓存
CACHE_UWSGI_NAME # 要连接的uwsgi缓存实例的名称


CACHE_TYPE = 'redis' # 使用redis作为缓存
CACHE_KEY_PREFIX # 设置cache_key的前缀
CACHE_REDIS_HOST # redis地址
CACHE_REDIS_PORT # redis端口
CACHE_REDIS_PASSWORD # redis密码
CACHE_REDIS_DB # 使用哪个数据库
# 也可以一键配置
CACHE_REDIS_URL 连接到Redis服务器的URL。示例redis://user:password@localhost:6379/2

二、常用函数

cache.cached:装饰器,装饰无参数函数,使得该函数结果可以缓存
参数:
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 # 获取缓存对象

三、示例代码

from flask import Flask, render_template, redirect
from flask_caching import Cache
import random

app = Flask(__name__)

cache = Cache(app, config={"CACHE_TYPE": "simple"})

@app.route("/")
@cache.cached(timeout=100)
def index():
    # 缓存页面
    return render_template("index.html", data = random.randint(0, 10))

@app.route('/clear')
def clear_cache():
    # 清除所有缓存
    cache.clear()
    return redirect("/")

if __name__ == "__main__":

    app.debug = True
    app.run()
from flask import Flask, render_template, redirect
from flask_caching import Cache
import random
import os


app = Flask(__name__)

cache = Cache(app, config={"CACHE_TYPE": "filesystem", "CACHE_DIR": os.path.join(os.path.dirname(__file__), "cache")})

@app.route("/")
@cache.cached(timeout=100)
def index():
    # 缓存页面
    return render_template("index.html", data = random.randint(0, 10))

@app.route('/clear')
def clear_cache():
    cache.clear()
    return redirect("/")

if __name__ == "__main__":

    app.debug = True
    app.run()
from flask import Flask, render_template, redirect
from flask_caching import Cache

app = Flask(__name__)

cache = Cache(app, config={"CACHE_TYPE": "redis", "CACHE_REDIS_HOST  ": "127.0.0.1", "CACHE_REDIS_PORT": 6379})

@app.route("/")
def index():
    # 获取缓存数据
    name = cache.get("name")
    return render_template("index.html", data = name or "")

@app.route("/data")
def set_data():
    # 设置缓存数据
    cache.set("name", "yy", 30)
    return redirect("/")

@app.route('/clear')
def clear_cache():
    # 删除缓存
    cache.delete("name")
    return redirect("/")

if __name__ == "__main__":

    app.debug = True
    app.run()
from flask import Flask, render_template, redirect
from flask_caching import Cache


app = Flask(__name__)

cache = Cache(app, config={"CACHE_TYPE": "redis", "CACHE_REDIS_HOST  ": "127.0.0.1", "CACHE_REDIS_PORT": 6379})

@cache.memoize(timeout=60, make_name="get_result")
def get_result(n):
    print('设置数据')
    return str(n)

@app.route("/")
def index():
    result = get_result(1)
    return render_template("index.html", data = result)

@app.route("/clear")
def clear():
    cache.delete_memoized(get_result, 1)
    return redirect("/")

if __name__ == "__main__":

    app.debug = True
    app.run()

 

标签:__,缓存,name,Flask,app,CACHE,cache,caching
From: https://www.cnblogs.com/yang-2018/p/17343011.html

相关文章

  • flask连接数据库
    要在Flask应用程序中连接数据库,需要完成以下步骤:安装数据库驱动。配置数据库连接参数。创建数据库连接对象。在应用程序中使用数据库连接对象进行数据库操作。下面以MySQL数据库为例,详细介绍如何在Flask应用程序中连接MySQL数据库:1.安装MySQL数据库驱动可以使用以下命令......
  • flask常用方法
    以下是常用的Flask方法及其参数说明:@app.route(rule,options):装饰器函数,用于给指定的URL规则绑定视图函数。rule:定义URL规则的字符串,可以包含变量。options:一个字典,表示URL规则的其他选项,如请求方法、域名、子域名等。request:全局变量,用于获取请求对象,包括请求方法、请......
  • Flask框架 之简易博客系统
    一、效果图1、前端2、后台 ......
  • Redis布隆过滤器的原理和应用场景,解决缓存穿透
    大家好,我是哪吒。一、布隆过滤器BloomFilter是什么布隆过滤器BloomFilter是一种专门用来解决去重问题的高级数据结果。实质就是一个大型位数组和几个不同的无偏hash函数,无偏表示分布均匀。由一个初值为零的bit数组和多个哈希函数组成,用来判断某个数据是否存在,它和HyperLogLog一样,不......
  • day04-商家查询缓存03
    功能02-商铺查询缓存033.功能02-商铺查询缓存3.6封装redis工具类3.6.1需求说明基于StringRedisTemplate封装一个工具列,满足下列需求:方法1:将任意Java对象序列化为json,并存储在string类型的key中,并且可以设置TTL过期时间方法2:将任意Java对象序列化为json,并存储在string类型的k......
  • 两天学会flask(四)---请求对象request(5分钟)
    request是flask框架的全局对象,你可以通过它来获得当前进入的请求数据,如果是在多线程环境下,flask可以保证你所使用的request对象就是当前这个线程所处理的请求。关于request,最让人感到疑惑的地方在于,明明是一个全局变量,在使用时却提供了当前时刻的请求数据,而且,不同线程之间互不干......
  • tomcat提示静态文件缓存超限,造成日志爆满的问题
    日志片段:21-Apr-202311:20:47.215警告[http-nio-80-exec-5308]org.apache.catalina.webresources.Cache.getResourceUnabletoaddtheresourceat[/FileUploads/www/site/2022/11/30/ZZVRQAHD08ZX4GOW47.jpg]tothecacheforwebapplication[]becausetherewasin......
  • Redis 缓存失效问题
    目录Redis缓存缓存击穿场景解决方案:缓存穿透场景解决方案缓存雪崩场景解决方案大量数据同时过期Redis故障宕机Redis缓存引入了缓存层,就会有缓存异常的三个问题,分别是缓存雪崩、缓存击穿、缓存穿透。它们的区别如下:缓存击穿场景高并发流量场景下,大量请求同时访问一个热点......
  • django中开启事务,GEO地理位置信息、持久化方案、主从复制原理和方案、哨兵高可用、集
    django中开启事务#django中如何开启事务全局开启:每个http请求都在一个事务中DATABASES={'default':{'ENGINE':'django.db.backends.mysql','NAME':'lqz','HOST'......
  • Flask 上下文是什么 ?
    哈喽大家好,我是咸鱼。今天我们来聊聊什么是Flask上下文 咸鱼在刚接触到这个概念的时候脑子里蹦出的第一个词是CPU上下文 今天咸鱼希望通过这篇文章,让大家能够对Flask上下文设计的初衷以及应用有一个基本的了解 Flask上下文我们在使用Flask开发web程序的时候,......