gpt4 book ai didi

mongodb - mongoengine中no_cache()对querySet的影响

转载 作者:可可西里 更新时间:2023-11-01 10:37:52 24 4
gpt4 key购买 nike

在mongoengine的官方文档中,它说从0.8开始,no_cache()被添加到mongoengine中。它能给我们带来什么好处? no_cache申请的典型场景是什么?

最佳答案

这里是 Mongoengine 维护者 - 默认情况下(和历史上),mongoengine 在您迭代查询集时缓存所有结果。这样做的好处是,如果您重复访问同一个变量,则不会触发查询,但缺点是会将所有内容都保存在内存中。即:

class User(Document):
pass

users = User.objects() # users is a queryset, it didn't hit the db yet

_ = [us for us in in users] # hits the db and caches all user instances in the users object
_ = [us for us in in users] # does not hit the db anymore, uses the users cached data


users = User.objects().no_cache()
_ = [us for us in in users] # hits the db and caches all user instances
_ = [us for us in in users] # hits the db again

使用缓存听起来是个好主意,但在实践中,您很少对同一个查询集进行 2 次迭代,如果对非常大的集合进行迭代,内存消耗可能会成为一个问题。

注意,以后可能会改为默认使用no_cache版本

关于mongodb - mongoengine中no_cache()对querySet的影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53588542/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com