Redis异步写失败后补数逻辑设计

背景

最近各种机房事故频发,所以很多公司都对Redis存储等进行异步多活,我们公司采用的方式是通过客户端双写的方式来实现异地Redis机房的备份,但是当异地机房出现临时网络故障时,就涉及到了如何进行补数的操作,本文就是来记录下如何补数

Redis补数设计

首先可以补数的前提肯定需要记录写异地机房失败的redis命令,所以当客户端在写异地机房失败时,我们需要先把失败的redis命令写到kafka主题中,不过由于我们需要确保同一个key操作的顺序性,所以需要确保同一个redis的key命令发送到同一个kafka分区

其次补数的主要逻辑是通过对比Redis源集群和目标集群对应key的数据,把Redis源集群的key对应的value设置到目标Redis集群的key上面

此外还需要考虑的一些要点包括:

1.为了防止对Redis造成太大的压力,消费消息时需要进行限流(可以通过预期QPS/分片数=每个分片的消费速度,进行每分片限流)

2.补数时针对不同的redis的cmd需要不同的处理逻辑,比如针对SADD和SET就是两种不同的处理逻辑

方案设计如下
在这里插入图片描述

相关推荐

  1. IDEA异常退出重启项目启动失败解决

    2024-01-13 00:00:03       54 阅读
  2. FastAPI使用异步Redis

    2024-01-13 00:00:03       72 阅读
  3. VSCode !+tab失效解决方法

    2024-01-13 00:00:03       61 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-13 00:00:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-13 00:00:03       106 阅读
  3. 在Django里面运行非项目文件

    2024-01-13 00:00:03       87 阅读
  4. Python语言-面向对象

    2024-01-13 00:00:03       96 阅读

热门阅读

  1. 【力扣每日一题】力扣447回旋镖的数量

    2024-01-13 00:00:03       56 阅读
  2. UR5机械臂控制

    2024-01-13 00:00:03       59 阅读
  3. tcp 的四次挥手

    2024-01-13 00:00:03       61 阅读
  4. tcp的三次握手

    2024-01-13 00:00:03       55 阅读
  5. 1.5如何用命令得到自己的ip<本地>

    2024-01-13 00:00:03       59 阅读
  6. 1、HarmonyOS简介

    2024-01-13 00:00:03       52 阅读
  7. 6.停车场管理系统

    2024-01-13 00:00:03       51 阅读