Tag 详细用法

.. note:: 不建议用来缓存细粒度接口,每次读取时会多取一次 tag, 因此对接口缓存的请求量会放大一倍

可以有多个tag

@cache.cached(tags=["a:{0}", "b:{1}", "c"])
def add(a, b):
    return a + b + random.randint(1,100)

tag 可以是函数

接受参数 *args, **kwargs, 返回字符串。由于默认的 key_generator 不接受 kwargs, 通常用不上这个参数。

@cache.cached(tags=[lambda *args, **kwargs: "add:{0}".format(args[0] + args[1])])
def add(a, b):
    return a + b + random.randint(1,100)

add(5, 6)
add(4, 7)
add(5, 8)
add.invalidate_tag("add:11") # 前两个函数的缓存失效