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_WARNING |
null 类型时的警告消息 |
CACHE_ARGS |
在缓存类实例化过程中解包和传递的可选列表,用来配置相关后端的额外的参数 |
CACHE_OPTIONS |
可选字典,在缓存类实例化期间传递,也是用来配置相关后端的额外的键值对参数 |
CACHE_DEFAULT_TIMEOUT |
默认过期时间,单位为秒 |
CACHE_THRESHOLD |
缓存最大数量,SimpleCache 和FileSystemCache类型时使用 |
CACHE_KEY_PREFIX |
cache_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_URL |
URL 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初始化参数:
参数 |
说明 |
app |
flask的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) |
将键的值减一 |