26.Redis WAITAOF - 阻塞当前客户端,等待数据持久化
Redis WAITAOF - 语法
WAITAOF numlocal numreplicas timeout
Redis WAITAOF命令,用于阻塞当前客户端,直到所有写入命令都成功持久化(fsync)到本地Redis AOF或指定数量的副本(从节点)AOF中为止。如果达到超时时间(以毫秒为单位),即使尚未达到指定的副本数量,该命令也会立即返回。
无论是达到指定的阈值时,还是达到超时时间时,该命令都将会在WAITAOF命令之前返回 已持久化当前客户端发送的写入命令的节点(主节点 + 从节点)数量。说明:
- 当WAITAOF返回时,表示在当前连接的上下文中发送的所有先前写入命令都已成功持久化到N个节点(主节点 + 从节点)的AOF中,其中N为WAITAOF返回的数量。
- 如果该命令作为MULTI事务中的一部分进行发送,那么将不会阻塞,而是尽快返回 已持久化的先前写入命令的节点(主节点 + 从节点)数量。
- timeout为0表示永久阻塞。
- 由于WAITAOF在失败和成功的情况下都会返回持久化的节点数量,因此客户端应该检查返回的值是否等于或大于它所要求的持久化级别。
- WAITAOF不能在从节点的实例上使用,如果本地Redis未启用AOF,那么numlocal参数不能为非0。
Redis WAITAOF - 时间复杂度
O(1)
Redis WAITAOF - 返回值
该命令返回一个数组:第1个是已将当前连接上下文中执行的所有写入命令持久化到AOF的本地Redis数量(0 或 1);第2个是已确认执行相同操作的从节点Redis数量。
Redis WAITAOF - 实例演示
redis> set site "www.cregend.com"
ok
redis> waitaof 1 0 1000 #只持久化到本地Redis
1) (integer) 1 #本地成功完成数量
2) (integer) 0 #从节点成功完成数量
redis> waitaof 0 1 1000 #只持久化到一个从节点
1) (integer) 1 #本地不需要,直接成功
2) (integer) 0 #没有从节点,所以没一个成功
轻松一刻
👉👉👉 【武映三千道】教您最小成本化试错:大长腿、露香肩、会撒娇,女主美若天仙即可,其余皆可恐龙......