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