当前位置: 首页 > 工具软件 > flask-caching > 使用案例 >

Python Flask_caching-缓存

漆雕升
2023-12-01

Python Flask_caching-缓存

安装:

pip install Flask-Caching

初始化使用演示

# app.py
app = Flask(__name__)
cache = Cache(app, config={'CACHE_TYPE' : 'simple'})
app.extensions['cache_key'] = cache

# ***.py
# 调用 .cache 返回cache对象
cache = current_app._get_current_object().extensions.get('cache_key').cache
# 调用set添加,get获取
cache.set(1, '1', timeout)
cache.get(1)

配置参数

参数说明
CACHE_TYPE指定cache类型,填入参数返回cache对象(遵循werkzeug cache API)
CACHE_NO_NULL_WARNINGnull 类型时的警告消息
CACHE_ARGS在缓存类实例化过程中解包和传递的可选列表,用来配置相关后端的额外的参数
CACHE_OPTIONS可选字典,在缓存类实例化期间传递,也是用来配置相关后端的额外的键值对参数
CACHE_DEFAULT_TIMEOUT默认过期时间,单位为秒
CACHE_THRESHOLD缓存最大数量,SimpleCache 和FileSystemCache类型时使用
CACHE_KEY_PREFIXcache_key前缀, RedisCache, MemcachedCache 和GAEMemcachedCache类型时使用
CACHE_UWSGI_NAME举例 mycache@localhost:3031,默认为空时,本地模式 。如果缓存与werkzeug应用程序位于同一实例中,则只需提供缓存名称 默认为空时,本地模式
MEMCACHED类型参数
CACHE_MEMCACHED_SERVERS可以为list或者tuple
CACHE_MEMCACHED_USERNAME
CACHE_MEMCACHED_PASSWORD
redis类型参数
CACHE_REDIS_HOST
CACHE_REDIS_PORT默认6379
CACHE_REDIS_PASSWORD
CACHE_REDIS_DB默认 0
CACHE_REDIS_URLURL to connect to Redis server
CACHE_DIR存储cache的路径. FileSystemCache类型时使用

内置cache类型,CACHE_TYPE:

  • null: NullCache (default)
  • simple: SimpleCache
  • filesystem: FileSystemCache
  • redis: RedisCache (Werkzeug >= 0.7 and redis required)
  • uwsgi: UWSGICache (Werkzeug >= 0.12 and uwsgi required)
  • memcached: MemcachedCache (pylibmc or memcache required)
  • gaememcached: GAEMemcachedCache
  • saslmemcached: SASLMemcachedCache (pylibmc required)
  • spreadsaslmemcached: SpreadSASLMemcachedCache (pylibmc required)

使用Redis例子

class RedisCache(BaseCache):
        def __init__(self, servers, default_timeout=500):
                pass

def redis(app, config, args, kwargs):
      args.append(app.config['REDIS_SERVERS'])
      return RedisCache(*args, **kwargs)
     

Cache初始化参数:

参数说明
appflask的app对象没有则创建
with_jinja2_ext默认支持jinja2语法
config配置参数

常有方法

方法类似于dict,方法名字类似于set

方法名说明
clear()清除缓存
get(key)获取一个键的值,如果值是json格式会自动转化成字典
set(key,value,timeout)设置一个键值,value可以是字典,会自动转化json格式的字符串
set_many(key,value,timeout)设置多个键值对
add(key, value, timeout=None)设置一个键值,如果存在就pass,注意和set的区别
delete(key)删除键
delete_many(k1,k2…)删除多个键值
get_many(k1,k2…)获取多个键的值
get_dict(k1,k2…)获取多个键的值,返回一个字典
has(k)查询是否存在一个键
inc(self, key, delta=1)将键的值加一
dec(self, key, delta=1)将键的值减一
 类似资料: