Redis
Этот движок позволяет интегрировать 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
, но у него есть некоторые ограничения:
- Запрос на сканирование может привести к появлению некоторых дублирующихся ключей в очень редких случаях, когда происходит изменение хэширования. Подробности см. в Redis Scan.
- В процессе сканирования ключи могут создаваться и удаляться, поэтому результатирующий набор данных не может представлять собой действительную точку во времени.