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) | 将键的值减一 |