summaryrefslogtreecommitdiffstats
path: root/iredis/data/commands/client-pause.md
diff options
context:
space:
mode:
Diffstat (limited to 'iredis/data/commands/client-pause.md')
-rw-r--r--iredis/data/commands/client-pause.md64
1 files changed, 23 insertions, 41 deletions
diff --git a/iredis/data/commands/client-pause.md b/iredis/data/commands/client-pause.md
index 3de6beb..6f778da 100644
--- a/iredis/data/commands/client-pause.md
+++ b/iredis/data/commands/client-pause.md
@@ -1,62 +1,44 @@
-`CLIENT PAUSE` is a connections control command able to suspend all the Redis
-clients for the specified amount of time (in milliseconds).
+`CLIENT PAUSE` is a connections control command able to suspend all the Redis clients for the specified amount of time (in milliseconds).
The command performs the following actions:
-- It stops processing all the pending commands from normal and pub/sub clients
- for the given mode. However interactions with replicas will continue normally.
- Note that clients are formally paused when they try to execute a command, so
- no work is taken on the server side for inactive clients.
-- However it returns OK to the caller ASAP, so the `CLIENT PAUSE` command
- execution is not paused by itself.
-- When the specified amount of time has elapsed, all the clients are unblocked:
- this will trigger the processing of all the commands accumulated in the query
- buffer of every client during the pause.
+* It stops processing all the pending commands from normal and pub/sub clients for the given mode. However interactions with replicas will continue normally. Note that clients are formally paused when they try to execute a command, so no work is taken on the server side for inactive clients.
+* However it returns OK to the caller ASAP, so the `CLIENT PAUSE` command execution is not paused by itself.
+* When the specified amount of time has elapsed, all the clients are unblocked: this will trigger the processing of all the commands accumulated in the query buffer of every client during the pause.
Client pause currently supports two modes:
-- `ALL`: This is the default mode. All client commands are blocked.
-- `WRITE`: Clients are only blocked if they attempt to execute a write command.
+* `ALL`: This is the default mode. All client commands are blocked.
+* `WRITE`: Clients are only blocked if they attempt to execute a write command.
For the `WRITE` mode, some commands have special behavior:
-- `EVAL`/`EVALSHA`: Will block client for all scripts.
-- `PUBLISH`: Will block client.
-- `PFCOUNT`: Will block client.
-- `WAIT`: Acknowledgements will be delayed, so this command will appear blocked.
+* `EVAL`/`EVALSHA`: Will block client for all scripts.
+* `PUBLISH`: Will block client.
+* `PFCOUNT`: Will block client.
+* `WAIT`: Acknowledgments will be delayed, so this command will appear blocked.
-This command is useful as it makes able to switch clients from a Redis instance
-to another one in a controlled way. For example during an instance upgrade the
-system administrator could do the following:
+This command is useful as it makes able to switch clients from a Redis instance to another one in a controlled way. For example during an instance upgrade the system administrator could do the following:
-- Pause the clients using `CLIENT PAUSE`
-- Wait a few seconds to make sure the replicas processed the latest replication
- stream from the master.
-- Turn one of the replicas into a master.
-- Reconfigure clients to connect with the new master.
+* Pause the clients using `CLIENT PAUSE`
+* Wait a few seconds to make sure the replicas processed the latest replication stream from the master.
+* Turn one of the replicas into a master.
+* Reconfigure clients to connect with the new master.
-Since Redis 6.2, the recommended mode for client pause is `WRITE`. This mode
-will stop all replication traffic, can be aborted with the `CLIENT UNPAUSE`
-command, and allows reconfiguring the old master without risking accepting
-writes after the failover. This is also the mode used during cluster failover.
+Since Redis 6.2, the recommended mode for client pause is `WRITE`. This mode will stop all replication traffic, can be
+aborted with the `CLIENT UNPAUSE` command, and allows reconfiguring the old master without risking accepting writes after the
+failover. This is also the mode used during cluster failover.
-For versions before 6.2, it is possible to send `CLIENT PAUSE` in a MULTI/EXEC
-block together with the `INFO replication` command in order to get the current
-master offset at the time the clients are blocked. This way it is possible to
-wait for a specific offset in the replica side in order to make sure all the
-replication stream was processed.
+For versions before 6.2, it is possible to send `CLIENT PAUSE` in a MULTI/EXEC block together with the `INFO replication` command in order to get the current master offset at the time the clients are blocked. This way it is possible to wait for a specific offset in the replica side in order to make sure all the replication stream was processed.
Since Redis 3.2.10 / 4.0.0, this command also prevents keys to be evicted or
expired during the time clients are paused. This way the dataset is guaranteed
-to be static not just from the point of view of clients not being able to write,
-but also from the point of view of internal operations.
+to be static not just from the point of view of clients not being able to write, but also from the point of view of internal operations.
@return
-@simple-string-reply: The command returns OK or an error if the timeout is
-invalid.
+@simple-string-reply: The command returns OK or an error if the timeout is invalid.
-@history
+## Behavior change history
-- `>= 3.2.10`: Client pause prevents client pause and key eviction as well.
-- `>= 6.2`: CLIENT PAUSE WRITE mode added along with the `mode` option.
+* `>= 3.2.0`: Client pause prevents client pause and key eviction as well. \ No newline at end of file