我正在调试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()
答案 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
实例。
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)