【问题标题】:How can I retrieve all keys from a flask cache?如何从烧瓶缓存中检索所有密钥?
【发布时间】:2020-02-07 18:00:04
【问题描述】:

我正在调试一个烧瓶应用程序,并想查看我的简单缓存中存储了哪些值。有没有办法检索所有密钥? (就像使用字典一样......

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()

【问题讨论】:

    标签: flask caching


    【解决方案1】:

    基于 Flask-Caching 的 source code(不要使用 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。

    【讨论】:

      【解决方案2】:

      当使用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)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-06-09
        • 1970-01-01
        • 1970-01-01
        • 2016-01-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多