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

      

  • 相关阅读:
    C++获取时间函数
    平滑算法:三次样条插值(Cubic Spline Interpolation)
    为什么想要交谈?
    c++日常小问题
    看板娘
    世界碰撞算法原理和总结(sat gjk)
    转载c++默认初始化文章--google翻译
    从4行代码看右值引用(转载 《程序员》2015年1月刊)
    c++模板特例化 函数模板(非法使用显式模板参数 )
    InverseTransformPoint 函数问题
  • 原文地址:https://www.cnblogs.com/ShanCe/p/14344527.html
Copyright © 2011-2022 走看看