Redis
Not supported in ClickHouse Cloud
このエンジンは、ClickHouseをRedisと統合することを可能にします。Redisはkvモデルを使用するため、where k=xx
やwhere k in (xx, xx)
のようにポイントでのみクエリを実行することを強く推奨します。
テーブルの作成
エンジンパラメータ
host:port
— Redisサーバーのアドレス。ポートを無視することができ、デフォルトのRedisポート6379が使用されます。db_index
— Redisのdbインデックスは0から15の範囲、デフォルトは0です。password
— ユーザーパスワード、デフォルトは空文字列です。pool_size
— Redisの最大接続プールサイズ、デフォルトは16です。primary_key_name
- カラムリストの任意のカラム名。
シリアル化
PRIMARY KEY
は1つのカラムのみをサポートします。プライマリキーはRedisキーとしてバイナリにシリアル化されます。
プライマリキー以外のカラムは対応する順序でRedis値としてバイナリにシリアル化されます。
引数はnamed collectionsを使用して渡すこともできます。この場合、host
とport
は別々に指定する必要があります。このアプローチは、本番環境で推奨されます。この時点で、named collectionsを使用してRedisに渡されるすべてのパラメータは必須です。
フィルタリング
key equals
またはin filtering
を伴うクエリは、Redisからの複数キーのルックアップに最適化されます。フィルタリングキーなしのクエリでは、全テーブルスキャンが発生し、これは重い操作です。
使用例
プレーン引数を使用してRedis
エンジンでClickHouseにテーブルを作成します:
もしくはnamed collectionsを使用して:
挿入:
クエリ:
更新:
プライマリキーは更新できないことに注意してください。
削除:
トランケート:
Redis dbを非同期でフラッシュします。また、Truncate
はSYNCモードをサポートしています。
結合:
他のテーブルと結合します。
制限事項
Redisエンジンは、where k > xx
のようなスキャンクエリもサポートしていますが、いくつかの制限があります:
- スキャンクエリは、リハッシュ中に非常にまれに重複したキーを生成する可能性があります。詳細はRedis Scanを参照してください。
- スキャン中にキーが作成され、削除される可能性があるため、結果のデータセットは有効な時点を表さないことがあります。