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

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値としてバイナリにシリアル化されます。

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

フィルタリング

key equalsまたはin filteringを伴うクエリは、Redisからの複数キーのルックアップに最適化されます。フィルタリングキーなしのクエリでは、全テーブルスキャンが発生し、これは重い操作です。

使用例

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

もしくはnamed collectionsを使用して:

挿入:

クエリ:

更新:

プライマリキーは更新できないことに注意してください。

削除:

トランケート:

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

結合:

他のテーブルと結合します。

制限事項

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

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