Является ли получение данных из экземпляра redis более медленным, чем получение их из словаря request.session Джанго? - PullRequest
0 голосов
/ 24 сентября 2018

В приложении Python / Django поиск значения, хранящегося в Redis, происходит медленнее, чем поиск в словаре request.session?


Справочная информация: У меня есть Djangoприложение, где я использую сеансы на основе БД.Т.е. вместо django.contrib.sessions я использовал эту изящную маленькую стороннюю библиотеку .

. Недавно я запустил тест, в результате чего я сохранил тестовое значение в локальном экземпляре Redis через * 1012.* redis-py обертка (то есть my_server.set('test','1')).Я сохранил то же значение теста в request.session['test'].

Затем я извлек тестовое значение из каждого и сравнил затраченное время.request.session в этом сценарии выполняется повторное выполнение с коэффициентом, превышающим 2x.


Проблема: Приложение не распространяется ни в коем случае, все совместно используется и происходит на одной машине- очень ванильный.

Результат кажется мне нелогичным.Зачем?Потому что мои сеансы основаны на DB, и я подумал, что redis будет быстрее, чем все, что может предложить Django.Ясно, что я не прав.

Может ли эксперт объяснить, что на самом деле здесь происходит?Может быть, оболочка Python на API ядра Redis замедляет работу?


Если вам нужна дополнительная информация или вы скептически относитесь к тому, как я провел тест, спросите.

Ps Я просто поместил два конкурирующих способа в цикл for для 100K итераций и измерил время, необходимое для завершения.

1 Ответ

0 голосов
/ 24 сентября 2018

Сеанс хранится в виде одного большого двоичного объекта, а не отдельных ключей.Он почти наверняка уже загружен и декодирован к тому времени, когда вы попадете в поле зрения, скорее всего, через промежуточное программное обеспечение для аутентификации.После загрузки он сохраняется локально как словарь, и это все, что будут измерять ваши тесты синхронизации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...