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

Redis

Not supported in ClickHouse Cloud

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

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

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

  • host:port — адрес сервера 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. Во время сканирования могут создаваться и удаляться ключи, поэтому результирующий набор данных не может представлять действительную момент времени.