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