【发布时间】:2015-05-15 17:15:51
【问题描述】:
我有 Django、PostgreSQL 和 Redis。我有具有外键和 m2m 关系的模型。每天我都在缓存一堆对象并在午夜删除它们的缓存。问题是当我从数据库中删除对象时(白天)-缓存中具有关系的字段也发生了变化(此对象的 id 已从外键和 m2m 中删除)。正如我在 Redis 文档中所读到的 - 所有对象都作为哈希存储在服务器的 RAM 中。我无法理解数据库更改如何影响 RAM 缓存。那么为什么会发生这种情况,我该如何防止这种行为呢?
例子:
# Model
class Item(models.Model):
...
places = models.ManyToManyField(Place, verbose_name=_('Places'), related_name='items', null=True, blank=True)
# In view
items = Item.objects.all()
cache.set(key, items, None)
然后在 django admin 中,我正在删除其中一个 Places,在 shell 中,我正在获取缓存的项目:
items = cache.get(key)
并手动检查检索到的项目的位置 - 该位置已从所有相关项目中删除。这不好。
【问题讨论】:
-
您没有提供足够的详细信息。你究竟是如何做你正在做的事情的?
-
感谢您的评论。我已经更新了问题。
标签: python django postgresql caching redis