Редис не связан с джанго редисом

Я установил запрос в моем кеше как:

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

когда я exexute это его вывод:

time before 0:00:00.014256
time after 0:00:01.366022
time after 0:00:01.552436
time after 0:00:01.433049

так что я думаю, что мой редис не связан с джанго редисом. мои настройки:

CACHES = {
    "default": {
        "BACKEND": "redis_cache.RedisCache",
        "LOCATION": "redis://127.0.0.1:6379:1",
        "OPTIONS": {
            "CLIENT_CLASS": "redis_cache.client.DefaultClient",
        }
    }
}

так что плз мне предложить мне что-то.. спасибо заранее..

2 ответа

Когда ты пишешь queryset=Lecture_Detail.objects.all() База данных SQL-запрос еще не выполнен. Когда запрос выполняется:

  1. итерация
  2. нарезка
  3. Травление /Caching
  4. магнезии ()
  5. LEN ()
  6. список()
  7. BOOL ()

Подробнее об этом читайте здесь: Когда оцениваются QuerySets. Так что в вашем примере запрос к базе данных будет выполняться в режиме онлайн cache.set('person',queryset)

Вы можете проверить, изменив строку из queryset=Lecture_Detail.objects.all() в list(queryset=Lecture_Detail.objects.all())

На самом деле моя ошибка заключалась в том, что я использовал кеш django вместо кеша redis.... чтобы использовать redis, мы должны сделать что-то вроде этого:

сначала установите данные из вашей оболочки Python или просмотрите как:

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)

и теперь разница во времени просто невероятна

Другие вопросы по тегам