zoukankan      html  css  js  c++  java
  • flask_caching 缓存

    这里只是简单介绍缓存:

      官网: https://flask-caching.readthedocs.io/en/latest/

      一个写的很不错的: https://www.cnblogs.com/cwp-bg/p/9687005.html

    何时使用话缓存:

      1. 存储需要短暂存储的数据, 可以以键值对形式存储

      2.存储视图, 对于不需要不停刷新的页面可以设置一定的缓存时间,这样在时间内不需要频繁的访问数据库。

    存储方式:

      由CACHE_TYPE 来设置:

      官网: https://pythonhosted.org/Flask-Caching/#simplecache 有详细解释

    使用示例:

    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

    1. 注册 Cache

    from flask import Flask
    from flask_caching import Cache
    from flask_cors import CORS
    from flask_jwt_extended import JWTManager
    from flask_marshmallow import Marshmallow
    from flask_sqlalchemy import SQLAlchemy
    import config
    
    db = SQLAlchemy()
    ma = Marshmallow()
    jwt = JWTManager()
    cache = Cache()
    
    def create_app():
        app = Flask(__name__)
        app.config.from_object(config)
        db.init_app(app)
        global ma
        ma = Marshmallow(app)
        # 解决跨域请问题
        CORS(app, resources=r'/*')
        # 缓存绑定
        cache.init_app(app)
        # 绑定路由
        from .routes import register
        register(app)
        return app

    2. 视图使用

    from manageApp.utils import ReturnValue
    from manageApp import cache 
    
    #
    manageApp 是我的app
    
    @cache.cached(timeout=30) # 专属试图, 设置缓存时间30 s
    def get_one(id):
        print("请求一次")
        # 自己定义的返回类,规范返回值
        return ReturnValue.return_value("success", {"name": "刘勇"})

    请求效果:

    第一次进入了 试图后后面30s都是使用缓存数据,不用进行数据处理, 30s后再次刷新。

    注: 后30s的数据都是和第一次的一样

    存储键值对数据:

      

    def get_one(id):
        cache.set("name", "liuyong")
        # return jsonify({"name": "刘勇"})
        return ReturnValue.return_value("success", {"name": "刘勇"})
    
    
    def get_list():
        name = cache.get("name")
        print("this name is %s" % name)
        return ReturnValue.return_value("success", {"name": name})

    返回结果

      

     我的缓存时间设置的是 5 分钟, 配置在config 文件中:

    更多方法:

      add(*args**kwargs)

      cached(timeout=Nonekey_prefix=’view/%s’unless=Noneforced_update=Nonequery_string=False)

      clear()

      delete(*args**kwargs)

      delete_many(*args**kwargs)

      delete_memoized(f*args**kwargs)

      get(*args**kwargs)

      get_many(*args**kwargs)

    Proxy function for internal cache object.

      init_app(appconfig=None)
      memoize(timeout=Nonemake_name=Noneunless=Noneforced_update=None)
      
      set(*args**kwargs)

    Proxy function for internal cache object.

      set_many(*args**kwargs)

    Proxy function for internal cache object.

      https://pythonhosted.org/Flask-Caching/#simplecache

      

  • 相关阅读:
    微服务架构技术栈选型手册(万字长文)
    Visual Studio 2013 always switches source control plugin to Git and disconnect TFS
    Visual Studio 2013 always switches source control plugin to Git and disconnect TFS
    MFC对话框中使用CHtmlEditCtrl
    ATL开发 ActiveX控件的 inf文件模板
    ActiveX: 如何用.inf和.ocx文件生成cab文件
    Xslt 1.0中使用Array
    如何分隔两个base64字符串?
    An attempt was made to load a program with an incorrect format
    JQuery 公网 CDN
  • 原文地址:https://www.cnblogs.com/ShanCe/p/14344527.html
Copyright © 2011-2022 走看看