.. note:: 不建议用来缓存细粒度接口,每次读取时会多取一次 tag, 因此对接口缓存的请求量会放大一倍
@cache.cached(tags=["a:{0}", "b:{1}", "c"])
def add(a, b):
return a + b + random.randint(1,100)
接受参数 *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") # 前两个函数的缓存失效