如何清除缓存的查询?

时间:2016-09-25 16:44:06

标签: python python-2.7 web2py pydal

我使用以下方法来缓存SQL查询的结果:

db(my_query).select(cache=(cache.ram, 3600), cacheable=True)

在某些情况下,我希望在缓存过期之前将其清除,这可以通过使用cache.ram.clear(key)来完成,但实际上我并不知道前一代码中DAL生成的密钥。

我理解cache=(cache.ram, 0)也会清除缓存,但我也有执行查询的开销。

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:2)

缓存密钥复制有点复杂(它是数据库URI的MD5哈希加上为查询生成的SQL)。作为替代方案,由于您拥有cacheable=True,因此您可以使用自己的密钥直接致电cache.ram

rows = cache.ram('my_query', lambda: db(my_query).select(cacheable=True), 3600)