我在缓存中设置了一个查询集为:
cache.set('person',Lecture_Detail.objects.all())在我看来:
from django.core.cahe import cache
t3=datetime.datetime.now()
list(Lecture_Detail.objects.all())
t5 = datetime.datetime.now()
print "time before",(t5 - t3)
g = cache.get('person')
t4 = datetime.datetime.now()
print "time after",(t4 - t5)
g = cache.get('person')
t6 = datetime.datetime.now()
print "time after",t6-t4
g = cache.get('person')
t7 = datetime.datetime.now()
print "time after",t7-t6当我导出它时,它的输出是:
time before 0:00:00.014256
time after 0:00:01.366022
time after 0:00:01.552436
time after 0:00:01.433049所以我认为我的redis和django-redis没有关系。我的设置是:
CACHES = {
"default": {
"BACKEND": "redis_cache.RedisCache",
"LOCATION": "redis://127.0.0.1:6379:1",
"OPTIONS": {
"CLIENT_CLASS": "redis_cache.client.DefaultClient",
}
}
}所以请给我一些建议..提前感谢..
发布于 2015-09-21 19:17:19
当您编写queryset=Lecture_Detail.objects.all()数据库时,sql query尚未执行。执行查询时:
点击这里了解更多信息:When QuerySets are evaluated。因此,在您的示例中,数据库查询将在行cache.set('person',queryset)上执行
您可以通过将行从queryset=Lecture_Detail.objects.all()更改为list(queryset=Lecture_Detail.objects.all())来进行测试
发布于 2015-09-28 18:20:56
实际上我的错误是我使用的是django缓存而不是redis缓存……要使用redis,我们必须这样做:
首先从python shell或视图中设置数据,如下所示:
import redis
r=redis.StrictRedis()
r.set('person',Lecture_Detail.objects.all())要从redis缓存中获取数据:
import redis
r=redis.StrictRedis()
t3=datetime.datetime.now()
list(Lecture_Detail.objects.all())
t5 = datetime.datetime.now()
print "time before",(t5 - t3)
g = r.get('person')
t4 = datetime.datetime.now()
print "time after",(t4 - t5)现在的时差简直令人难以置信
https://stackoverflow.com/questions/32693362
复制相似问题