Табличный движок 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 должны указываться отдельно. Этот подход рекомендуется для production-среды. На данный момент все параметры, передаваемые с использованием именованных коллекций в Redis, являются обязательными.
Запросы с key equals или in filtering будут оптимизированы до поиска по нескольким ключам в Redis. Если запросы выполняются без ключа фильтрации, будет выполнено полное сканирование таблицы, что является ресурсоёмкой операцией.
Пример использования
Создайте таблицу в ClickHouse с движком Redis, явно указав аргументы:
Или, используя именованные коллекции:
Вставить:
Запрос:
Обновление:
Имейте в виду, что первичный ключ нельзя изменять.
Удалить:
Truncate:
Асинхронно очищает базу данных Redis. Также Truncate поддерживает синхронный режим (SYNC).
Join:
Объединение с другими таблицами.
Ограничения
Движок Redis также поддерживает запросы сканирования, такие как where k > xx, но у него есть некоторые ограничения:
- Запрос сканирования может привести к появлению дублирующихся ключей в очень редких случаях, когда выполняется рехеширование. См. подробности в Redis Scan.
- Во время сканирования ключи могут создаваться и удаляться, поэтому полученный набор данных не будет соответствовать корректному состоянию на какой-либо конкретный момент времени.