我有Django,PostgreSQL和Redis。我有具有外鍵和m2m關係的模型。每天我都會緩存一堆對象,並在午夜時分放下緩存。問題是當我從數據庫中刪除對象時(白天) - 緩存中的關係字段也發生了變化(這些對象的id從外鍵和m2m中刪除)。正如我在Redis文檔中所讀到的 - 所有對象都以散列形式存儲在服務器的RAM中。我無法理解數據庫更改如何影響RAM緩存。那麼爲什麼會發生這種情況,我該如何防止這種行爲?爲什麼如果相關對象從數據庫中刪除,Redis會刪除對象中的關係?
例子:
# 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管理我刪除的地方之一,並在外殼我得到緩存的項目:
items = cache.get(key)
和手動檢查檢索到的項目的地方 - 該地點已從所有相關項目中刪除。這不好。
您沒有提供足夠的細節。你到底在做什麼? – 2015-03-14 03:47:12
感謝您的評論。我已經更新了這個問題。 – Gleb 2015-03-16 07:59:32