Как оптимизировать массовый запрос к Redis в django - hiredis
Я переношу rest/graphql api из проекта на Java в Django на Python. Мы используем redis в обоих случаях. У нас есть одна конечная точка, которая является довольно большой (возвращает несколько МБ). В этой конечной точке мы создаем ключ, и если этот ключ существует в redis, мы возвращаем эти данные и пропускаем всю остальную логику в конечной точке. Я развернул api в среде разработки. Java-версия этой конечной точки возвращает данные на 4-5 секунд быстрее, чем python-версия. Я понимаю, что частично это связано с тем, что Java - компилируемый язык по сравнению с Python, который является интерпретируемым. Я знаю, что существует множество других различий, но я пытаюсь понять, есть ли какой-нибудь низко висящий плод, который я могу выбрать, чтобы ускорить мой Python api.
Я наткнулся на оптимизированную библиотеку под названием hiredis. На сайте говорится, что библиотека ускоряет получение ответов из нескольких пакетов, что и является моим сценарием использования. Я неоднократно сталкиваюсь с конечной точкой, которая возвращает большой объем данных. Hiredis - это якобы парсер, написанный на C. У меня установлены redis-py (v4.5.4) и django-redis. Я прочитал, что мне нужно pip install hiredis
. В одном источнике говорится, что hiredis будет автоматически обнаружен и просто будет работать в моем окружении, но в другом говорится, что мне нужно добавить свойство PARSER_CLASS
к настройкам CACHES
, например, так:
CACHES = {
'default': {
'BACKEND': 'django_redis.cache.RedisCache',
'LOCATION': 'redis://127.0.0.1:6379/1',
'OPTIONS': {
'CLIENT_CLASS': 'django_redis.client.DefaultClient',
'PARSER_CLASS': 'redis.connection.HiredisParser',
}
}
}
Я пробовал оба способа и не вижу ускорения. Я уверен, что данные кэшируются в redis и ключ найден. Данные возвращаются из redis и пропускают остальную логику. Вот мои вопросы
- Смогу ли я использовать hiredis с Django?
- Что мне нужно сделать, чтобы включить его?
- Есть ли способ проверить, что используется парсер hiredis?
- Есть ли другие способы ускорить соединение с redis?