在表中更新时使缓存失效



假设,如果我的 redis 缓存或任何其他缓存中有一个密钥,并且该密钥有很多 GET 查询。键的值取决于模型(表)中的数据。现在,如果通过某个过程在数据库中更新了与该键关联的值,那么我可以通过什么方式使缓存失效。

你可以使用 Django 信号编写一个接收器函数来监听post_save信号并清除关联的缓存。例如:

from django.db.models.signals import post_save
@receiver(post_save, sender=Item)
def my_handler(sender, instance, created, **kwargs):
    r.delete('item/%d' % instance.pk)

一个更强大的解决方案是使用像django-cacheops这样的包。

最新更新