コマンド | Redis 5.0 | Redis 6.2 | Redis 7.0/Valkey 8.0 | 自社構築ダイレクト接続モード | 推奨事項 |
del | クラスタ版はスロット横断・ノード横断のコマンド操作をサポートし、Proxy層がキー分散と結果集約を自動的に実行します。 | | | スロットをまたがるアクセスとノードをまたがるアクセスは、いずれもサポートされません。 | 正常に使用できます。 |
unlink | | | | | 正常に使用できます。 |
exists | | | | | 正常に使用できます。 |
mset | | | | | 正常に使用できます。 |
mget | | | | | 正常に使用できます。 注意: Proxyはコマンドmgetの検証結果が期待と一致しない場合にエラーを報告します。 -ERR invalid return data。 |
zunionstore | | | | | クロススロット操作では、Proxyがコマンドの振り分けと結果集約を追加で処理する必要があるため、Redisコミュニティの仕様に従い、関連するキーを同一スロットに配置してパフォーマンスを向上させることを推奨します。 |
randomkey | クラスタ版のrandomkeyコマンドはランダムにバックエンドの異なるノードへ転送されます。 | | | 現在接続中のノードでのみ実行されます。 | 現在のシャードのランダムキーが明確に必要な場合にのみ使用することを推奨します。それ以外の場合は、SCANまたは他の代替手段に切り替えてください。 |
keys | クラスタ版keysコマンドはデフォルトで全てのMasterノードで並行実行され、Proxy層が各シャードの結果を集約してからクライアントに統一的に返します。 クラスタ版は keys [@shard_id]構文を使用してシャードを指定して実行することをサポートしています。この場合、対象シャードの実行結果のみを透過的に転送し、ノード間の集約は行いません。標準版keysコマンドは直接唯一のMasterノードに透過的に転送されて実行され、シャード集約プロセスはなく、応答動作はネイティブRedisと一致します。 | | | 現在接続中のノードでのみ実行されます。 | ビジネス要件に応じてkeysコマンドの実行方法を選択してください:指定シャード実行(単一シャードデータを返す)または全シャード実行(集約データを返す)。実行方法はそれぞれ以下のとおりです。 KEYS {hash_tag}pattern KEYS pattern NODEID |
scan | クラスタ版scanコマンドはデフォルトで全てのMasterノードを順次ポーリングします。 標準版scanコマンドは直接Masterノードに透過的に転送されます。 クラスタ版/標準版はいずれもバックエンドノードを指定して実行することをサポートしています(例: SCAN 0 @shard2)。 | | | 現在接続中のノードでのみ実行されます。 | ビジネス要件に応じてscanコマンドの実行方法を選択してください:指定シャード実行(単一シャードデータを返す)または全シャード実行(集約データを返す)。実行方法はそれぞれ以下のとおりです。 SCAN cursor [MATCH {hash_tag}pattern] [COUNT count] SCAN cursor [MATCH pattern] [COUNT count] NODEID |
dbsize | クラスタ版dbsizeコマンドはデフォルトで全てのMasterノードで実行され、Proxy層が各シャードの結果を集約してからクライアントに統一的に返します。 クラスタ版は dbsize [@shard_id]構文を使用してシャードを指定して実行することをサポートしています。この場合、対象シャードの実行結果のみを透過的に転送し、ノード間の集約は行いません。標準版dbsizeコマンドは直接唯一のMasterノードに透過的に転送されて実行され、シャード集約プロセスはなく、応答動作はネイティブRedisと一致します。 | | | 現在接続中のノードでのみ実行されます。 | ビジネス要件に応じてdbsizeコマンドの実行方法を選択してください:指定シャード実行(単一シャードデータを返す)または全シャード実行(集約データを返す)。実行方法はそれぞれ以下のとおりです。 DBSIZE DBSIZE NODEID |
flushdb | クラスタ版flushdbコマンドはデフォルトで全てのMasterノードで実行され、Proxy層が各シャードの結果を集約してからクライアントに統一的に返します。 クラスタ版は flushdb [@shard_id]構文を使用してシャードを指定して実行することをサポートしています。この場合、対象シャードの実行結果のみを透過的に転送し、ノード間の集約は行いません。6.2と7.0バージョンはASYNC、SYNCオプションをサポートしており、デフォルトはASYNCです。 | | | 現在接続中のノードでのみ実行されます。 | ビジネス要件に応じてflushdbコマンドの実行方法を選択してください:指定シャード実行(単一シャードデータを返す)または全シャード実行(集約データを返す)。コマンドの使用法は以下のとおりです。 FLUSHDB FLUSHDB SYNC FLUSHDB ASYNC FLUSHDB SYNC NODEID FLUSHDB ASYNC NODEID |
flushall | クラスタ版flushallコマンドはデフォルトで全てのMasterノードで実行され、Proxy層が各シャードの結果を集約してからクライアントに統一的に返します。 クラスタ版は flushall [@shard_id]構文を使用してシャードを指定して実行することをサポートしています。この場合、対象シャードの実行結果のみを透過的に転送し、ノード間の集約は行いません。6.2と7.0バージョンはASYNC、SYNCオプションをサポートしており、デフォルトはASYNCです。 | | | 現在接続中のノードでのみ実行されます。 | ビジネス要件に応じてflushallコマンドの実行方法を選択してください:指定シャード実行(単一シャードデータを返す)または全シャード実行(集約データを返す)。コマンドの使用法は以下のとおりです。 FLUSHALL FLUSHALL SYNC FLUSHALL ASYNC FLUSHALL SYNC NODEID FLUSHALL ASYNC NODEID |
subscribe | クラスタ版コマンドはデフォルトで全てのMasterノードに転送されて実行されます。 標準版ではこのコマンドはデフォルトでMasterノードに転送されます。 | | | 現在接続中のノードでのみ実行されます。 | 正常に使用できます。 |
unsubscribe | | | | | 正常に使用できます。 |
psubscribe | | | | | 正常に使用できます。 |
punsubscribe | | | | | 正常に使用できます。 |
publish | クラスタ版publishコマンドはchannel名に基づいて計算されたslot値に従って、対応するMasterノードにルーティングされ、ブロードキャストが行われます。 標準版publishコマンドはデフォルトでMasterノードに転送されます。 | | | 現在接続中のノードでのみ実行されます。 | 正常に使用できます。 |
pubsub | CHANNELS、NUMPAT、NUMSUBオプションをサポートしています。 クラスタ版pubsubコマンドはデフォルトでバックエンドの異なるMasterノードにランダムに転送され、かつ返される結果は同じです。 標準版pubsubコマンドはデフォルトでMasterに転送されます。 | | | 現在接続中のノードでのみ実行され、ノードによって異なる結果が返されます。 | Tencent Cloud Redisクラスタ版はPUBSUBコマンドを拡張し、すべてのノードがグローバルに一貫したチャネルリストを返します。オープンソース版のノードごとに異なる結果を返す動作とは異なり、ビジネスコードはシャードのローカル状態に依存せず、サブスクリプションロジックをクラスタ全体の観点で処理することを推奨します。 |
cluster | クラスタ版はcluster keyslot、cluster slots、cluster nodes、cluster info、cluster countkeysinslot、cluster keyslot、cluster getkeysinslotコマンドをサポートしています。 クラスタ版cluster slots、cluster nodes、cluster infoコマンドはデフォルトでバックエンドノードにランダムに転送されます。 クラスタ版cluster infoコマンドは、追加でバックエンドノードを指定して実行することをサポートしています。 クラスタ版のcluster keyslot、cluster countkeysinslot、cluster keyslot、cluster getkeysinslotコマンドは、デフォルトで指定されたslotに基づいて対応するノードに転送されます。 クラスタ版のcluster slots、cluster nodesなどのコマンドは、一部の機密情報をマスクおよび変換します。 | | | 現在接続中のノードでのみ実行されます。 | ビジネスシナリオに基づいて、clusterコマンドの転送モードを評価してください。 |
asking | クラスタ版/標準版では実際の動作は発生しません。 | | | 実行後にリダイレクト効果があります。 | Proxyがaskエラーを処理するため、ユーザーは意識する必要はありません。 |
function | - | - | クラスタ版はfunction stats、function dump、function listコマンドをサポートしており、コマンドはデフォルトでバックエンドノードにランダムに転送されます。 function delete、function flush、function kill、function load、function restoreはデフォルトで全てのMasterノードで同期的に実行され、各ノードが一致した結果を返したことを確認してからクライアントに応答します。 | 現在接続中のノードでのみ実行されます。 | クラウド上のアーキテクチャが実際のビジネスシナリオと差異があるかどうかを評価することを推奨します。差異がある場合はコードを修正する必要があります。 |
script | クラスタ版と標準版はどちらもscript debugコマンドをサポートしていません。 クラスタ版のscript exists、script flush、script kill、script loadコマンドは、デフォルトで全てのMasterノードで同期的に実行され、各ノードが一致した結果を返したことを確認してからクライアントに応答します。 標準版のscriptコマンドはデフォルトでMasterノードに転送されます。 | | | 現在接続中のノードでのみ実行されます。 | 既存のコードロジックがTencent Cloudのデフォルトである全ノード実行のロジックと差異があるかどうかを確認してください。差異がある場合は、クラウド上の規範に従って改造する必要があります。 |
multi exec discard | トランザクションまたはwatchがロックするバックエンドノードは、最初の操作のキーのハッシュスロットによって決定されます(watchはmulti後の最初のコマンドよりも優先されます)。これにより、トランザクションまたは監視操作が単一ノード内で原子的に実行されます。 標準版はデフォルトでMasterノードに転送します。 | | | 現在接続中のノードでのみ実行されます。 | トランザクションおよびwatchコマンドの使用方法がクラウド移行前と差異があるかどうかを評価することを推奨します。 |
watch | watchを実行すると、接続は監視対象のkeyが存在するノードにロックされ、以降のすべてのコマンドはこの接続を介して転送されます。 | | | 現在接続中のノードでのみ実行されます。 | watchおよびunwatchコマンド間のkey操作は、同じslot上で実行することを推奨します。 |
expireat | - | | クラスタ版と標準版のexpireatコマンドは、[NX | XX | GT | LT]をサポートしていません。 | 現在接続中のノードでのみ実行され、[NX | XX | GT | LT] オプションをサポートします。 | ビジネスで [NX | XX | GT | LT] オプションを使用する必要があるかどうかを評価してください。 |
pexpire | - | | クラスタ版/標準版のPEXPIREコマンドは、[NX | XX | GT | LT]をサポートしていません。 | | |
pexpireat | - | | クラスタ版/標準版のPEXPIREATコマンドは、[NX | XX | GT | LT]をサポートしていません。 | | |
client | クラスタ版と標準版はどちらもProxy層でclient list、client setname、client getname、client id、client kill、client unblockコマンドに完全に互換性があります。 client listの実装は専用のサブスクリプション接続に依存します:各Proxyは0番目のslotを担当するmasterとこの接続を維持し、全てのProxyのセッション情報をリアルタイムに集約するために使用されます。 client listの出力にはid、addr、fd、name、cmd、age、idle、proxyフィールドのみが含まれます。また、idは常に負数であり、形式はオープンソースバージョンと異なります。 client killは他のProxy上のセッションを直接終了できます。 | | | 現在接続中のノードでのみ実行され、対応するredisバージョンのclient list情報を返します。 | 業務がclientコマンドに依存しているかどうかを自己確認してください。必須でない場合は、スロークエリやノードのメモリ急増を避けるため、client listの実行を避けてください。 |
monitor | monitorコマンドは、現在接続しているProxy上で実行されるコマンドのみを監視します。 | | | 現在接続中のノードでのみ実行されます。 | このコマンドを使用する場合は、監視対象が単一のProxyなのか、バックエンドの特定のシャードの指標なのかを明確にしてください。 |
imonitor | クラスタ版imonitorコマンドは、指定したバックエンドノード上で実行するコマンドをサポートしています。 標準版のimonitorコマンドはMasterノードにのみ転送されます。 | | | このコマンドはありません。 | 使用方法は以下のとおりです。 クラスタ版:IMONITOR NODEID 標準版:IMONITOR |
time | クラスタ版timeコマンドはデフォルトでバックエンドの異なるノードにランダムに転送されます。 標準版timeコマンドはデフォルトでMasterノードに転送されます。 | | | 現在接続中のノードでのみ実行されます。 | 業務がtimeコマンドに依存しているかどうかを評価してください。 |
wait | クラスタ版waitコマンドの転送は、前回の書き込みコマンドが転送されたバックエンドMasterノードに基づいて行われます。 標準版waitコマンドはデフォルトでMasterノードに転送されます。 | | | 現在接続中のノードでのみ実行されます。 | クラウド上のProxy転送ロジックと業務コードの差異を評価してください。 |
command | クラスタ版commandコマンドはデフォルトでバックエンドの異なるノードにランダムに転送されます。 標準版commandコマンドはデフォルトのMasterノードに転送されます。 | | | 現在接続中のノードでのみ実行されます。 | 正常に使用できます。 |
lolwut | クラスタ版lolwutコマンドはデフォルトでバックエンドの異なるノードにランダムに転送されます。 標準版lolwutコマンドはデフォルトでMasterノードに転送されます。 | | | 現在接続中のノードでのみ実行されます。 | 正常に使用できます。 |
echo | クラスタ版echoコマンドはデフォルトでバックエンドの異なるMasterノードにランダムに転送されます。 標準版はデフォルトでMasterノードに転送します。 | | | 現在接続中のノードでのみ実行されます。 | 正常に使用できます。 |
info | クラスタ版infoコマンドはデフォルトでバックエンドのMasterノードにランダムに転送され、実行されます。 標準版infoコマンドはデフォルトでMasterノードに転送されます。 infoコマンドは、指定したバックエンドノードへの転送を追加でサポートしています。 infoコマンドは返却情報に対して、機密情報のマスキングと変換を行います。 | | | 現在接続中のノードでのみ実行されます。 | infoコマンドの使用方法は以下のとおりです。 INFO INFO NODEID |
ping | クラスタ版pingコマンドはデフォルトでバックエンドのいずれかのMasterノードにランダムに転送されます。 クラスタ版pingコマンドは、指定したバックエンドノードでの実行を追加でサポートしています。 クラスタ版と標準版はいずれも、pingがバックエンドノードに転送されず、Proxyが直接応答を返すことをサポートしています。 | | | 現在接続中のノードでのみ実行されます。 | pingコマンドをバックエンドシャードに透過的に渡す必要があるかどうかを評価してください。コマンドの使用法は以下のとおりです。 PING PING NODEID |
hello | - | クラスタ版と標準版のhelloコマンドは現在、hello 2のみをサポートしており、ユーザーがAuthを実行した後にのみ正常に実行できます。 Proxyは現在resp3プロトコルをサポートしていません。hello 3を実行するとエラーが発生します。クライアントフレームワークをresp2のauthコマンドに変換して認証を行ってください。 | | 現在接続中のノードでのみ実行されます。 | 業務フレームワークが HELLO 3 auth username password形式による認証を使用しているかどうかを評価してください。resp3プロトコルを使用している場合は、resp2プロトコルへのダウングレードが必要です。 |
config | クラスタ版と標準版のconfig setコマンドはProxyにインターセプトされ、直ちに「成功」レスポンスが返されますが、コマンドは実際には有効になりません。 集群版config getコマンドはデフォルトでいずれかのバックエンドノードにランダムにアクセスします。 標準版はデフォルトでMasterノードにアクセスします。 | | | 現在接続中のノードでのみ実行されます。 | |
slowlog | クラスタ版slowlogコマンドはデフォルトで実行する際にバックエンドノードを指定する必要があります。指定しない場合、エラーが発生します。 標準版slowlogコマンドはデフォルトでMasterノードに転送されます。 | | | 現在接続中のノードでのみ実行されます。 | |
memory | クラスタ版はmemoryコマンドをサポートしていません。 | | | 現在接続中のノードでのみ実行されます。 | |
readonly | クラスタ版のreadonlyコマンドはProxy上で実行されて返りますが、実際には有効になりません。 | | | 現在接続中のノードでのみ実行され、有効になります。 | |
debug | debugコマンドはobjectサブコマンドのみをサポートします。 | | | debugコマンドのすべてのサブコマンドをサポートします。 | 他のサブコマンドを使用しているかどうかを評価してください。使用している場合は、コードの修正が必要です。 |
sentinel | クラスタ版と標準版は、SENTINEL sentinels、SENTINEL get-master-addr-by-name、SENTINEL slavesと互換性があります。バックエンドへは透過転送されません。 | | | クラスタモードはセンチネルモードをサポートしていません。 | クラスタモードでは、このコマンドを無視できます。 センチネルモードでは、現在クラウド上のRedisがサポートしているsentinelコマンドがビジネス要件を満たしているかどうかを評価してください。 |
role | クラスタ版roleコマンドはデフォルトでバックエンドのいずれかのノードにランダムに転送されます。 標準版はデフォルトでMasterノードに転送します。 | | | 現在接続中のノードでのみ実行されます。 | 使用しないことをお勧めします。 |
lastsave | クラスタ版はデフォルトでバックエンドの異なるMasterノードにランダムに転送されます。 標準版はデフォルトでMasterノードに転送します。 | | | 現在接続中のノードでのみ実行されます。 | 使用しないことをお勧めします。 |
latency | クラスタ版はサポートされていません。 標準版はデフォルトのMasterノードに転送します。 | | | 現在接続中のノードでのみ実行されます。 | 使用しないことをお勧めします。 |
readwrite | クラスタ版はreadwriteコマンドをサポートしていません。 | | | 現在接続中のノードでのみ実行されます。 | 使用しないことをお勧めします。 |
pfselftest | クラスタ版はpfselftestコマンドをサポートしていません。 | | | 現在接続中のノードでのみ実行されます。 | 使用しないことをお勧めします。 |
post | クラスタ版はpostコマンドをサポートしていません。 | | | 現在接続中のノードでのみ実行されます。 | 使用しないことをお勧めします。 |
host | クラスタ版はhostコマンドをサポートしていません。 | | | 現在接続中のノードでのみ実行されます。 | 使用しないことをお勧めします。 |
フィードバック