douban-orz
douban-orz copied to clipboard
关于count_by的问题
你好,感谢豆瓣开源,学到很多,这里有个疑问,想请教下。 关于count_by和gets_by的缓存设计有点疑问 他们的都是根据 查询条件,然后生成了缓存的key
ck = config.to_string(conditions)
如果是count_by 缓存存的应该是mysql执行count(1)查询后的总数,比如123 如果是gets_by 缓存存的应该是mysql查询结构对应的主键的id列表,比如[1, 2, 3]
但是在代码里面cache_mgr.py里面CachedOrmManager的count_by和gets_by代码实际没有看到区分。 如果两种的缓存key是一样的话,会存在不一致的问题
def test_count_by(self):
for i in range(10):
Dummy.create(subject_id=10, ep_num=i, content='hheheheh')
self.assertEqual(Dummy.count_by(subject_id=10), 10)
m = Dummy.gets_by(subject_id=10)[0]
m.subject_id = 2
m.save()
self.assertEqual(Dummy.count_by(subject_id=10), 9)
比如这块测试代码是否会有问题