メインコンテンツまでスキップ
メインコンテンツまでスキップ

Redis

Not supported in ClickHouse Cloud

このエンジンはClickHouseとRedisの統合を可能にします。Redisはkvモデルを採用しているため、where k=xxwhere 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値としてバイナリ形式でシリアル化されます。

引数は、名前付きコレクションを使用して渡すこともできます。この場合、hostportは別々に指定する必要があります。このアプローチは本番環境で推奨されます。現時点では、Redisに渡される名前付きコレクションのすべてのパラメータが必須です。

フィルタリング

key equalsまたはin filteringを含むクエリは、Redisからのマルチキーのルックアップに最適化されます。フィルタリングキーなしのクエリは、フルテーブルスキャンを引き起こし、これは負荷の高い操作です。

使用例

プレーンな引数を使用して、RedisエンジンでClickHouseにテーブルを作成します。

または、名前付きコレクションを使用して:

挿入:

クエリ:

更新:

主キーは更新できないことに注意してください。

削除:

トランケート:

Redis dbを非同期でフラッシュします。また、TruncateはSYNCモードをサポートします。

結合:

他のテーブルとの結合。

制限事項

Redisエンジンはwhere k > xxのようなスキャンクエリもサポートしていますが、いくつかの制限があります:

  1. スキャンクエリは、非常に珍しいケースでリハッシュ中に重複するキーを生成する可能性があります。Redis Scanで詳しく説明しています。
  2. スキャン中にキーが作成されたり削除されたりすることがあるため、結果のデータセットは有効な時点を表すことはできません。