Python redis未与django redis连接

Python redis未与django redis连接,python,django,django-redis,Python,Django,Django Redis,我已将缓存中的查询集设置为: 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')

我已将缓存中的查询集设置为:

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",
        }
    }
}

所以请允许我给我提些建议。。当您编写
queryset=touch\u Detail.objects.all()时,尚未执行数据库sql查询。
执行查询时:

  • 迭代
  • 切片
  • 酸洗/缓存
  • repr()
  • len()
  • 列表()
  • 布尔()
  • 请在此处阅读更多信息:。因此,在您的示例中,数据库查询将在第
    cache.set('person',queryset)


    编写
    queryset=teaching\u Detail.objects.all()
    数据库sql查询时,可以通过将行从
    queryset=teaching\u Detail.objects.all()更改为
    list(queryset=teaching\u Detail.objects.all())
    来进行测试。 执行查询时:

  • 迭代
  • 切片
  • 酸洗/缓存
  • repr()
  • len()
  • 列表()
  • 布尔()
  • 请在此处阅读更多信息:。因此,在您的示例中,数据库查询将在第
    cache.set('person',queryset)


    您可以通过将行从
    queryset=teaching\u Detail.objects.all()
    更改为
    list(queryset=teaching\u Detail.objects.all())

    实际上,我的错误是我使用的是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)
    

    现在时差简直难以置信

    事实上,我的错误是我使用的是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)
    

    现在时差简直令人难以置信

    你在哪里运行你的Redis实例?同一台服务器还是其他地方?
    queryset
    是一次加载所有att还是延迟加载?(即:它是获取所有行还是仅在读取行时获取行?)。差别有多大?您可以编辑问题以包含这些问题的答案。您在哪里运行Redis实例?同一台服务器还是其他地方?
    queryset
    是一次加载所有att还是延迟加载?(即:它是获取所有行还是仅在读取行时获取行?)。差别有多大?您可以编辑您的问题以包括这些问题的答案。正如您现在建议我的,我将在这两种情况下应用以下操作(从数据库和缓存中获取数据之后):t1=datetime.datetime.now()g=teaching\u Detail.objects.all()name=g.filter(teaching\u name='Chemistry')length=len(name)t2=datetime.datetime.now()bt仍然时差很大程度上是关于:“不带缓存0:00:00.903429,带缓存0:00:02.490702”,所以请给我一些建议。表中有多少条记录?过滤后有多少条记录?表中有101006条记录,在filteringI尝试过之后有50000条记录,但我使用了文件系统缓存,并得到了类似的结果:没有缓存0:00:00.246513和wich缓存0:00:00.666614,正如您所建议的,现在我在这两种情况下都应用了以下操作(从数据库和缓存中获取数据之后):t1=datetime.datetime.now()g=teachment\u Detail.objects.all()name=g.filter(teachment\u name='Chemistry')lent=len(name)t2=datetime.datetime.now()bt仍然时差很大,它是关于:“没有缓存的0:00:00.903429,有缓存的0:00:02.490702”,所以请给我一些建议。表中有多少记录?过滤后有多少条记录?表中有101006条记录,50000条在filteringI自己尝试过之后,但我使用了文件系统缓存,并得到了类似的结果:没有缓存0:00:00.246513和wich缓存0:00:00.666614