如何从烧瓶缓存中检索所有密钥?

时间:2020-02-07 18:00:04

标签: flask caching

我正在调试flask应用程序,并想查看哪些值存储在我的简单缓存中。有没有办法检索所有密钥? (使用字典的方式...

cache = Cache()
cache.init_app(app, config={"CACHE_TYPE": "simple"})

cache.set("item-1", "red")
cache.set("item-2", "blue")

# I would like to do the following:
# cache.keys()

2 个答案:

答案 0 :(得分:2)

基于source code进行Flask-Caching(请勿使用Flask-Cache,因为它过时了)...

在没有提供键的情况下似乎没有一个内置的方法来获取所有值,但是对于调试,您可以执行以下操作:

>>> for k in cache.cache._cache:
...  print (k, cache.get(k))
... 
item-1 red
item-2 blue

这似乎为过期的项目返回值None

item-1 None

cache.cache._cache是具有腌制值的字典。

但是,您还应该知道,“简单”缓存并不是真正的线程安全,因为它仅使用字典进行存储。对于大型应用程序,您应该切换到different backend之类的Redis。

答案 1 :(得分:0)

使用redis作为flask_caching的后端时,没有公开查询所有键的方法。

但是我们可以自己查询redis实例。

source

k_prefix = cache.cache.key_prefix
keys = cache.cache._write_client.keys(k_prefix + '*')
keys = [k.decode('utf8') for k in keys]
keys = [k.replace(k_prefix, '') for k in keys]
print(keys)
values = cache.get_many(*keys)
print(values)