Редис не связан с джанго редисом
Я установил запрос в моем кеше как:
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-запрос еще не выполнен. Когда запрос выполняется:
- итерация
- нарезка
- Травление /Caching
- магнезии ()
- LEN ()
- список()
- 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)
и теперь разница во времени просто невероятна