某些查询不是由django-cache-machine / django-johnny-cache缓存的查询集

时间:2013-12-10 01:37:32

标签: django django-johnny-cache django-cache-machine

我希望缓存来自DB中几个相关表的一些很少更新的数据(MySQL具体)。我已经尝试使用上面的django应用程序进行django ORM查询集缓存,但是两者都遇到了一些奇怪的行为:即使它们应该像其他人一样来自缓存,也会查询一些查询。

我在一组6个查询中检索数据,混合以下任何一个:filter,select_related,prefetch_related(M2M relations),正向和反向关系。只是数据检索,没有更新。这种情况发生在专用方法中,为了评估的目的,我从TestCase中调用了两次。 (为了抢占任何潜在问题,评估方法中没有任何类型的交易管理)

我观察到的是,重复了3个查询 - 一个是来自prefetch_related的反向m2m(另一个反向m2m被缓存),还有两个相当简单的反向管理器查询,即使更改为ModelName也保持了这种行为。 objects.all()或与关系对应的过滤器。 我在寻找某些模式的最后一次试验仅在johnny-cache上进行,由于其失效策略,这对于我的特定情况更为可取。我还试图以一些通用的方式修改方法,基本上是在黑暗中拍摄,比如删除有问题的查询(一切都被缓存),只留下一个有问题的查询(仍未缓存),更改查询顺序(无变化)。 / p>

有没有人碰到类似的东西或者可以提供一些解释?

0 个答案:

没有答案