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値としてバイナリ形式でシリアル化されます。
引数は、名前付きコレクションを使用して渡すこともできます。この場合、host
とport
は別々に指定する必要があります。このアプローチは本番環境で推奨されます。現時点では、Redisに渡される名前付きコレクションのすべてのパラメータが必須です。
フィルタリング
key equals
またはin filtering
を含むクエリは、Redisからのマルチキーのルックアップに最適化されます。フィルタリングキーなしのクエリは、フルテーブルスキャンを引き起こし、これは負荷の高い操作です。
使用例
プレーンな引数を使用して、Redis
エンジンでClickHouseにテーブルを作成します。
または、名前付きコレクションを使用して:
挿入:
クエリ:
更新:
主キーは更新できないことに注意してください。
削除:
トランケート:
Redis dbを非同期でフラッシュします。また、Truncate
はSYNCモードをサポートします。
結合:
他のテーブルとの結合。
制限事項
Redisエンジンはwhere k > xx
のようなスキャンクエリもサポートしていますが、いくつかの制限があります:
- スキャンクエリは、非常に珍しいケースでリハッシュ中に重複するキーを生成する可能性があります。Redis Scanで詳しく説明しています。
- スキャン中にキーが作成されたり削除されたりすることがあるため、結果のデータセットは有効な時点を表すことはできません。