Лучшая стратегия кэширования для повторного доступа к словарю с объемом около 100 000 записей

#caching #redis

#кэширование #redis

Вопрос:

Я работаю над приложением, которое предоставляет переведенные субтитры для видеоконтента. Мой шаблон доступа выглядит следующим образом:

  1. Извлекать субтитры к видео

  2. Для каждого слова извлекайте перевод из «базы данных переводов» (по сути, просто словарь word -> word на языке x)

  3. Возвращает агрегированные переводы.

Каждое видео может содержать тысячи слов, и мой текущий метод занимает несколько секунд для одного видео — в основном это связано с повторной выборкой word -> word translations . Поскольку весь словарь переводов ограничен и относительно мал, порядка нескольких мегабайт, я подумал, что мог бы просто кэшировать весь словарь, чтобы пропустить все эти крошечные выборки из базы данных.

Новое в стратегиях кэширования — будет ли что-то вроде Redis излишним или это предполагаемый вариант использования? Предпочел бы снизить затраты. Используя Node.js бэкэнд, если это имеет отношение к делу.

Ответ №1:

У вас мало вариантов:

  1. Вы можете использовать Amazon Translate, который сделает всю тяжелую работу за вас. Вы можете просто вызвать API и получить переведенный текст (существуют как пакетные, так и API в реальном времени).

  2. Если размер кэша составляет всего несколько мегабайт, извлеките словарь из базы данных при запуске приложения и сохраните его в памяти приложения. Однако, если словарь будет расти, сохраните его в Redis.