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