时间:2017-10-12 15:27:47

标签: django database api caching redis

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

1 个答案:

答案 0 :(得分:3)

您可以使用Django signals编写接收器函数来侦听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这样的包。