Основные данныеПроизводительность

Кеширование

Держите самые горячие данные в памяти и отвечайте на чтение за малую долю миллисекунды на движке, который задействует каждое ядро.

GET/с с конвейером, измерено
36.6M
точность TTL
нс
существующие клиенты работают
RESP2/3
Шаг 1 из 5
Читаем через кеш

Попадание возвращается прямо из памяти. База данных не затрагивается.

Пример сеансаplaying
# Читаем через кеш
hotkv> GET product:1001
"{\"name\":\"Desk lamp\",\"price\":39}"

Анимированная демонстрация с настоящими командами HotKV и примерами ответов. Нажмите на любой шаг, чтобы перейти к нему. Команды и ответы остаются на английском, ровно так, как вы вводите и видите их в HotKV.

Проблема

Обращаться к базам данных за данными, которые читаются тысячи раз в секунду, медленно и дорого. Каждый просмотр страницы, вызов API или обновление дашборда повторяет один и тот же запрос, и база данных становится узким местом задолго до вашего приложения.

Как с этим справляется HotKV

HotKV стоит перед базой данных и держит результаты в памяти. Ваше приложение сначала читает из HotKV и обращается к базе данных только при промахе. Поскольку HotKV выполняет команды на многих потоках одновременно, нагруженный кеш не пропускает всех клиентов через одно ядро, а теги позволяют инвалидировать целую группу записей, когда меняются исходные данные.

Шаг за шагом

Что происходит, команда за командой

  1. 01

    Читаем через кеш

    Попадание возвращается прямо из памяти. База данных не затрагивается.

    GET product:1001
  2. 02

    Промах, поэтому загружаем один раз и кешируем

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

    SET product:2002 "{\"name\":\"Oak desk\",\"price\":420}" EX 300
  3. 03

    Помечаем записи тем, от чего они зависят

    Каждая кешированная страница, где показаны осветительные товары, несёт один и тот же тег.

    TAG.SET product:1001 catalog:lighting
  4. 04

    Инвалидируем группу

    Цены изменились. Перечислите все ключи с тегом и удалите их одним конвейером.

    TAG.MEMBERS catalog:lighting
  5. 05

    Очень недолговечные записи

    Одноразовый токен, уже установленный, который должен исчезнуть через 250 мс с наносекундной точностью.

    NEXPIRE flash:token:9 250000000
Где это уместно

Реальные сценарии

Интернет-магазины

Страницы товаров, цены и остатки читаются тысячи раз в секунду и обновляются по тегу при изменении каталога.

API и мобильные бэкенды

Ответы популярных конечных точек кешируются с короткими TTL, поэтому всплески трафика попадают в память, а не в базу данных.

Сайты с контентом

Отрисованные фрагменты и метаданные статей кешируются на минуты и инвалидируются по тегу, когда редактор публикует материал.

Встроено

Что вы получаете

TTL от секунд до наносекунд

EXPIRE и PEXPIRE работают так, как вы ожидаете. NEXPIRE добавляет наносекундную точность.

EXPIREPEXPIRENEXPIRE

Инвалидация по тегу

Пометьте ключи командой TAG.SET, затем найдите все ключи с меткой.

TAG.SETTAG.MEMBERS

Необязательное сжатие

Большие объёмы данных можно сжимать, чтобы в памяти помещалось больше вашего рабочего набора.

Многопоточное чтение

Команды выполняются на параллельных потоках, поэтому пропускная способность растёт с числом ядер. Цифры - на странице «Производительность».

GETMGET
Справочник:SETNEXPIRETAG.SETTAG.MEMBERS

Частые вопросы

Можно ли использовать мой существующий клиент Redis?

HotKV понимает протокол Redis (RESP2 и RESP3), поэтому стандартные клиенты Redis подключаются к нему. Проверьте справочник команд на предмет команд, на которые вы полагаетесь.

Как инвалидировать группу кешированных ключей?

Пометьте ключи командой TAG.SET при кешировании, затем вызовите TAG.MEMBERS и удалите то, что вернулось.

Откуда взята цифра 36.6M?

Это пропускная способность GET с конвейером из опубликованного бенчмарка HotKV. Методика и оборудование - на странице «Производительность».

Связанные сценарии

Попробуйте на своей нагрузке

HotKV понимает протокол Redis, поэтому вы можете подключить к нему существующий клиент и выполнить те же команды.