Python Flask_caching-缓存

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

你可能感兴趣的:(Python)