使用cachetools获取 `cache_info()`

问题描述 投票:0回答:2

我正在使用 cachetools 并且我想获得

cache_info()
:

class UserData(object):
    def __init__():
        ...

    @cached(cache=TTLCache(maxsize=1024, ttl=600))
    def get_user_data(self, user_id):
        return self.redis.get_user_data(user_id)

    def get_cache_info():
        return self.get_user_data.cache_info()

我想获取如下所示的缓存统计信息answer

>>> foo.cache_info()
CacheInfo(hits=1, misses=1, maxsize=5, currsize=1)

我知道这是一个不同的缓存(我正在使用第三方库),但在上面的文档中,

cache_info
确实存在。有没有办法以某种方式获取
TTLCache
统计数据?

python python-3.x caching
2个回答
3
投票

根据代码文档,您应该使用

ttl_cache
中的
func.py

from cachetools.func import ttl_cache


class UserData(object):
    ...
    @ttl_cache(maxsize=1024, ttl=600)
    def get_user_data(self, user_id):
        return self.redis.get_user_data(user_id)

然后您应该可以致电

UserData.get_user_data.cache_info()

cached
装饰器不维护任何统计数据。


0
投票

如果使用

TTLCache
,请添加
info=True
以获得
CacheInfo
,请参阅 https://github.com/tkem/cachetools/issues/131#issuecomment-1399703630

class UserData(object):
    def __init__():
        ...

    @cached(cache=TTLCache(maxsize=1024, ttl=600), info=True)
    def get_user_data(self, user_id):
        return self.redis.get_user_data(user_id)

    def get_cache_info():
        return self.get_user_data.cache_info()
© www.soinside.com 2019 - 2024. All rights reserved.