Как оптимизировать массовый запрос к 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 и пропускают остальную логику. Вот мои вопросы

  1. Смогу ли я использовать hiredis с Django?
  2. Что мне нужно сделать, чтобы включить его?
  3. Есть ли способ проверить, что используется парсер hiredis?
  4. Есть ли другие способы ускорить соединение с redis?
Вернуться на верх