Перейти к основному содержимому
Перейти к основному содержимому

Redis

Not supported in ClickHouse Cloud

Этот движок позволяет интегрировать ClickHouse с Redis. Поскольку Redis использует модель ключ-значение, мы настоятельно рекомендуем выполнять запросы точечно, например, where k=xx или where k in (xx, xx).

Создание таблицы

Параметры движка

  • host:port — адрес сервера Redis, можно игнорировать порт, по умолчанию будет использоваться порт Redis 6379.
  • db_index — индекс базы данных Redis в диапазоне от 0 до 15, по умолчанию 0.
  • password — пароль пользователя, по умолчанию пустая строка.
  • pool_size — максимальный размер пула подключений Redis, по умолчанию 16.
  • primary_key_name - любое имя колонки в списке колонок.
Сериализация

PRIMARY KEY поддерживает только одну колонку. Первичный ключ будет сериализован в бинарном виде как ключ Redis. Колонки, отличные от первичного ключа, будут сериализованы в бинарном виде как значение Redis в соответствующем порядке.

Аргументы также могут быть переданы с использованием именованных коллекций. В этом случае host и port должны быть указаны отдельно. Этот подход рекомендуется для производственной среды. На данный момент все параметры, переданные через именованные коллекции в Redis, являются обязательными.

Фильтрация

Запросы с key equals или in filtering будут оптимизированы для многократного поиска ключей в Redis. Если запросы без фильтрации ключа, произойдёт полное сканирование таблицы, что является тяжелой операцией.

Пример использования

Создайте таблицу в ClickHouse, используя движок Redis с простыми аргументами:

Или с использованием именованных коллекций:

Вставка:

Запрос:

Обновление:

Обратите внимание, что первичный ключ не может быть обновлён.

Удаление:

Транкация:

Очистить базу данных Redis асинхронно. Также Truncate поддерживает режим SYNC.

Объединение:

Объединение с другими таблицами.

Ограничения

Движок Redis также поддерживает запросы на сканирование, такие как where k > xx, но у него есть некоторые ограничения:

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