CLIENT PAUSE timeout

CLIENT PAUSE は指定された時間(ミリ秒)の間全てのRedisクライアントを中断することができる接続制御コマンドです。

コマンドは以下のアクションを実行します:

  • 通常およびpub/subクライアントからの全ての保留中のコマンドの実行を停止します。しかしレプリカとのやり取りは通常通りに続けるでしょう。
  • 呼び出し元にできる限り早くOKを返しますが、CLIENT PAUSE コマンドの実行はそれによって中断されません。
  • 指定された時間が経過した時、全てのクライアントのブロックが解除されます: これは中断中の各クライアントのクエリバッファ内に集約された全てのコマンドの処理を引き起こすでしょう:

制御された方法で1つのRedisインスタンスから他のものへクライアントを切り替えることができるため、このコマンドは便利です。例えば、インスタンスのアップグレードの間にシステム管理者は以下のことを行うことができます:

  • CLIENT PAUSEを使ってクライアントを中断する
  • レプリカがマスターからの最新のレプリケーションを処理したことを確実にするために2,3秒待つ。
  • レプリカの1つをマスターに変える。
  • クライアントを新しいマスターに接続するように再設定します。

クライアントがブロックされた時点で現在のマスターのオフセットを取得するためにINFO replicationコマンドと一緒にMULTI/EXECブロック内でCLIENT PAUSEを送信することができます。このようにして全てのリプリケーションストリームが処理されたことを確実にするためにレプリカ側での特定のオフセットを待つことができます。

Redis 3.2.10 / 4.0.0 から、このコマンドはクライアントが中断されている間にキーが削除されたり期限切れになることも防ぎます。このようにしてデータセットは書き込みができないクライアントの観点からだけでなく、内部的なオペレーションの観点からも静的であることが保証されます。

*返り値

Simple string reply: コマンドはOKを返すか、タイムアウトが無効な時にエラーを返します。

TOP
inserted by FC2 system