如何清除缓存的查询?
How to clear a cached query?
我正在使用以下方法来缓存 SQL 查询的结果:
db(my_query).select(cache=(cache.ram, 3600), cacheable=True)
在某些情况下,我想在缓存过期之前清除它,这可以通过使用 cache.ram.clear(key)
来完成,但实际上我不知道前面代码中 DAL 生成的密钥。
我知道cache=(cache.ram, 0)
也会清除缓存,但我也有执行查询的开销。
我怎样才能做到这一点?
缓存键的复制有点复杂(它是数据库 URI 的 MD5 哈希加上为查询生成的 SQL)。作为替代方案,由于您有 cacheable=True
,您可以直接使用自己的密钥调用 cache.ram
:
rows = cache.ram('my_query', lambda: db(my_query).select(cacheable=True), 3600)
我正在使用以下方法来缓存 SQL 查询的结果:
db(my_query).select(cache=(cache.ram, 3600), cacheable=True)
在某些情况下,我想在缓存过期之前清除它,这可以通过使用 cache.ram.clear(key)
来完成,但实际上我不知道前面代码中 DAL 生成的密钥。
我知道cache=(cache.ram, 0)
也会清除缓存,但我也有执行查询的开销。
我怎样才能做到这一点?
缓存键的复制有点复杂(它是数据库 URI 的 MD5 哈希加上为查询生成的 SQL)。作为替代方案,由于您有 cacheable=True
,您可以直接使用自己的密钥调用 cache.ram
:
rows = cache.ram('my_query', lambda: db(my_query).select(cacheable=True), 3600)