Redis主从同步以及Redis-Shake数据同步实战

使用redis-shake工具进行redis的数据同步 工作中将常遇到测试环境和正式环境的数据同步或者需要进行数据迁移,对于mysql数据库的方案倒是不少,但是redis中如何快速便捷的迁移呢? 阅读详情
  1. 背景

项目在进行上云,原先redis是自建的,现需要对自建的redis中的数据迁移到云上的redis中,遂调研当前有哪些工具支持redis的全量部署数据的迁移和增量数据迁移。经过调研当前使用比较多的有 Redis-Shake 以及云厂商提供的商用的同步工具,我们公司当前采购的是阿里云的redis,所以阿里云也提供了DTS的工具,由于阿里云的DTS在增量同步数据这块是按时间收费的,而且 Redis-Shake 当前是能正常满足我们的迁移需求的,所以下面主要介绍Redis-Shake 这个工具的使用以及 Redis 的主从复制的原理等

  1. Redis主从复制以及Redis-Shake架构

和 Mysql 领域的 Canal 的原理类似,Redis-Shake 也是通过伪装成 Redis Master节点的 Slave 节点来获取主节点数据,之后进行主动推送给 需要同步的目标机器Redis, 所以先来了解下 Redis 主从同步的过程,然后再来了解下Redis-Shake 的工作过程。

  1. Redis 主从(Master-Replica)数据同步过程

Redis 的主从同步分为两种主要模式:全量同步(Full Synchronization)和部分同步(Partial Synchronization)。

阶段一:建立连接与协商

当一个副本节点(Replica)要从一个主节点(Master)同步数据时,整个过程开始。

  1. 设置主节点:副本节点通过执行 REPLICAOF <master_ip> <master_port> 命令(老版本是 SLAVEOF)来指定其主节点。
  2. 建立网络连接:副本与主节点之间建立一个 TCP socket 连接。
  3. 发送 PING:副本向主节点发送 PING 命令,如果收到 PONG 响应,说明网络通信正常。
  4. 身份验证:如果主节点设置了 requirepass,副本需要发送 AUTH 进行验证。
  5. 端口和能力协商:副本通过 REPLCONF listening-port 告知主节点自己的监听端口,并通过 REPLCONF capa eof capa psync2 等告知主节点自己支持的能力(例如,支持无盘复制、支持 PSYNC2 协议等)。
  6. 发起同步请求:副本向主节点发送 PSYNC 命令,请求开始同步数据。这是最关键的一步。

阶段二:同步数据(全量或部分)

主节点收到 PSYNC 命令后,会根据副本提供的 runid 和 offset 决定采用哪种同步模式。

场景 A:全量同步 (Full Synchronization)

在以下情况下会触发全量同步:

  • 副本是第一次连接主节点。
  • 副本的 runid 与主节点的 runid 不匹配(说明主节点重启过或发生了故障转移)。
  • 副本请求的 offset 在主节点的复制积压缓冲区(Replication Backlog)中已经不存在(即副本断线时间太长)。

全量同步的详细步骤:

  1. 主节点响应:主节点回复 +FULLRESYNC ,告知副本需要进行全量同步,并提供自己当前的 runid 和 offset。
  2. 生成 RDB:主节点执行 BGSAVE 命令,在后台异步生成一个 RDB 快照文件。
  3. 缓冲写命令:在 BGSAVE 期间,主节点会将所有新的写命令(如 SET, INCR 等)缓存到一个内存缓冲区中。
  4. 发送 RDB:RDB 文件生成后,主节点将其内容发送给副本。
  5. 副本接收 RDB:副本接收到 RDB 文件后,会清空自己当前的所有数据,然后加载 RDB文件,将自己的数据库状态恢复到主节点执行 BGSAVE 时的状态。
  6. 发送缓冲命令:主节点将之前在内存缓冲区中缓存的写命令,逐一发送给副本。
  7. 副本执行命令:副本执行从主节点发来的所有写命令,使其数据库状态与主节点完全一致。至此,全量同步完成,主从状态达到一致。

场景 B:部分同步 (Partial Synchronization)

如果副本不是第一次连接,并且它请求的 runid 与主节点匹配,且 offset仍在主节点的复制积压缓冲区内,则会触发部分同步。

  1. 主节点响应:主节点回复 +CONTINUE,表示可以进行部分同步。
  2. 发送缺失命令:主节点从复制积压缓冲区中,将从副本 offset 之后的所有命令发送给副本。
  3. 副本执行命令:副本接收并执行这些命令。部分同步非常快,因为它只传输断线期间的少量增量数据,避免了生成和传输庞大 RDB 文件的开销。

阶段三:命令传播 (Command Propagation)

一旦主从状态同步完成,它们就进入了命令传播阶段

  • 主节点每执行一个写命令,都会异步地将该命令发送给所有连接的副本。
  • 副本接收并执行这些命令,从而实时保持与主节点的数据同步。
  • 为了维持连接,主从之间会周期性地发送心跳命令(主节点发 PING,副本回 REPLCONF ACK )
  1. 涉及的核心命令详解
  • REPLICAOF <master_ip> <master_port> (或 SLAVEOF)
    • 作用:由客户端或副本自己执行,用于设置要复制的主节点。执行 REPLICAOF NO ONE 可以使副本节点变回主节点。这是触发整个复制流程的“用户命令”。
  • PSYNC
    • 作用:由副本在内部自动发送给主节点,是复制协议的核心命令。
    • 参数:
      • runid: 副本所记录的主节点的运行 ID。如果是第一次连接,runid 为 ?。
      • offset: 副本已接收到的数据偏移量。如果是第一次连接,offset 为 -1。
    • 主节点响应:
      • +FULLRESYNC : 强制进行全量同步。
      • +CONTINUE: 同意进行部分同步。
      • -ERR ...: 拒绝同步(例如,runid 不匹配且无法进行部分同步)
  • REPLCONF
    • 作用:一个用于配置和确认的内部命令。
    • 常见子命令:
      • REPLCONF listening-port : 副本告知主节点自己的监听端口。
      • REPLCONF ip-address : 副本告知主节点自己的 IP 地址。
      • REPLCONF capa : 副本告知主节点自己支持的能力(如 eof, psync2)。
      • REPLCONF ACK :非常重要,副本周期性地向主节点报告自己已处理的数据偏移量。这既是心跳,也让主节点知道复制的健康状况,并据此判断复制积压缓冲区中的数据是否可以被覆盖。
  1. Redis-Shake 伪装成副本的原理和过程

Redis-shake 的核心原理就是完全遵守并实现了上述的 Redis 复制协议,从主节点的视角来看,Redis-shake

就是一个行为标准的 Redis 副本。

  1. 配置与启动:您在 redis-shake.toml 中配置源 Redis(即 Master)的地址、端口和密码。
  2. 模拟连接握手:
    1. Redis-shake 启动后,会像一个真正的副本一样,与源 Redis 建立 TCP 连接。
    2. 它会发送 PING、AUTH、REPLCONF listening-port 等一系列命令,完成连接的初始化和身份验证。这个过程与真实副本完全一致。
  3. 发起同步请求:
    1. 握手成功后,Redis-shake 向源 Redis 发送 PSYNC ? -1,请求进行数据同步。
  4. 处理数据流(核心区别):
    1. 源 Redis 收到请求后,开始进行全量同步,并向 Redis-shake 发送 RDB 文件流。
    2. 关键区别在于:
    3. 一个真实的 Redis 副本会接收 RDB 数据,并将其加载到自己的内存中。
    4. Redis-shake 则在接收 RDB数据流时,实时地解析(Parse)这个数据流。它并不把数据加载到自己的内存里,而是根据解析出的键值对(Key-Value),将其转换成目标端需要的格式。
    5. 例如,如果目标端是另一个 Redis,它就会为每个键值对生成对应的 RESTORE 命令或 SET、HSET等命令,然后发送给目标 Redis。如果目标端是文件,它就会将键值对格式化后写入文件。
  5. 处理增量命令:
    1. 当 RDB 同步完成后,源 Redis 会进入命令传播阶段,开始向 Redis-shake 发送增量写命令。
    2. Redis-shake 接收到这些增量命令后,同样不会在自己身上执行,而是将这些命令转换并应用到目标端。
  6. 维持心跳:
    1. 在整个同步过程中,Redis-shake 会像一个好学生一样,周期性地向源 Redis 发送 REPLCONF ACK ,报告自己的同步进度,防止连接因超时而中断。
  1. 使用方式

Redis-Shake 非常容易上手,而且提供了相当强大的功能,包括自动的全量数据同步以及增量数据同步,相关文档见下面的参考

  1. 下载Redis-Shake工具到Linux服务器

保证 Redis-Shake 所在机器能访问 自建Redis机器 以及 阿里云redis代理地址

bash

## 下载地址 https://github.com/tair-opensource/RedisShake/releases

2. ##### 配置redis-shake

shake.toml 配置文件修改,主要修改sync_reader 以及 redis_writer的配置

ini

[sync_reader] cluster = false # Set to true if the source is a Redis cluster address = "127.0.0.1:6379" # For clusters, specify the address of any cluster node; use the master or slave address in master-slave mode username = "" # Keep empty if ACL is not in use password = "local@test" # Keep empty if no authentication is required tls = false # Set to true to enable TLS if needed sync_rdb = true # Set to false if RDB synchronization is not required sync_aof = true # Set to false if AOF synchronization is not required prefer_replica = false # Set to true to sync from a replica node try_diskless = false # Set to true for diskless sync if the source has repl-diskless-sync=yes #[scan_reader] #cluster = false # set to true if source is a redis cluster #address = "127.0.0.1:6379" # when cluster is true, set address to one of the cluster node #username = "" # keep empty if not using ACL #password = "" # keep empty if no authentication is required #tls = false #dbs = [] # set you want to scan dbs such as [1,5,7], if you don't want to scan all #scan = true # set to false if you don't want to scan keys #ksn = false # set to true to enabled Redis keyspace notifications (KSN) subscription #count = 1 # number of keys to scan per iteration # [rdb_reader] # filepath = "/tmp/dump.rdb" # [aof_reader] # filepath = "/tmp/.aof" # timestamp = 0 # subsecond [redis_writer] cluster = false # set to true if target is a redis cluster address = "云上地址:6379" # when cluster is true, set address to one of the cluster node username = "" # keep empty if not using ACL password = "test" # keep empty if no authentication is required tls = false off_reply = false # turn off the server reply # [file_writer] # filepath = "/tmp/cmd.txt" # type = "cmd" #cmd,aof,json (default cmd) [filter] # Allow keys with specific prefixes or suffixes # Examples: # allow_keys = ["user:1001", "product:2001"] # allow_key_prefix = ["user:", "product:"] # allow_key_suffix = [":active", ":valid"] # allow A collection of keys containing 11-digit mobile phone numbers # allow_key_regex = [":\d{11}:"] # Leave empty to allow all keys allow_keys = [] allow_key_prefix = [] allow_key_suffix = [] allow_key_regex = [] # Block keys with specific prefixes or suffixes # Examples: # block_keys = ["temp:1001", "cache:2001"] # block_key_prefix = ["temp:", "cache:"] # block_key_suffix = [":tmp", ":old"] # block test 11-digit mobile phone numbers keys # block_key_regex = [":test:\d{11}:"] # Leave empty to block nothing block_keys = [] block_key_prefix = [] block_key_suffix = [] block_key_regex = [] # Specify allowed and blocked database numbers (e.g., allow_db = [0, 1, 2], block_db = [3, 4, 5]) # Leave empty to allow all databases allow_db = [] block_db = [] # Allow or block specific commands # Examples: # allow_command = ["GET", "SET"] # Only allow GET and SET commands # block_command = ["DEL", "FLUSHDB"] # Block DEL and FLUSHDB commands # Leave empty to allow all commands allow_command = [] block_command = [] # Allow or block specific command groups # Available groups: # SERVER, STRING, CLUSTER, CONNECTION, BITMAP, LIST, SORTED_SET, # GENERIC, TRANSACTIONS, SCRIPTING, TAIRHASH, TAIRSTRING, TAIRZSET, # GEO, HASH, HYPERLOGLOG, PUBSUB, SET, SENTINEL, STREAM # Examples: # allow_command_group = ["STRING", "HASH"] # Only allow STRING and HASH commands # block_command_group = ["SCRIPTING", "PUBSUB"] # Block SCRIPTING and PUBSUB commands # Leave empty to allow all command groups allow_command_group = [] block_command_group = [] # Function for custom data processing # For best practices and examples, visit: # https://tair-opensource.github.io/RedisShake/zh/filter/function.html function = "" [advanced] dir = "data" ncpu = 0 # runtime.GOMAXPROCS, 0 means use runtime.NumCPU() cpu cores pprof_port = 0 # pprof port, 0 means disable status_port = 0 # status port, 0 means disable # log log_file = "shake.log" log_level = "info" # debug, info or warn log_interval = 5 # in seconds log_rotation = true # enable log rotation log_max_size = 512 # MiB, logs max size to rotate, default 512 MiB log_max_age = 7 # days, logs are kept, default 7 days log_max_backups = 3 # number of log backups, default 3 log_compress = true # enable log compression after rotate, default true # redis-shake gets key and value from rdb file, and uses RESTORE command to # create the key in target redis. Redis RESTORE will return a "Target key name # is busy" error when key already exists. You can use this configuration item # to change the default behavior of restore: # panic: redis-shake will stop when meet "Target key name is busy" error. # rewrite: redis-shake will replace the key with new value. # skip: redis-shake will skip restore the key when meet "Target key name is busy" error. rdb_restore_command_behavior = "panic" # panic, rewrite or skip # redis-shake uses pipeline to improve sending performance. # Adjust this value based on the destination Redis performance: # - Higher values may improve performance for capable destinations. # - Lower values are recommended for destinations with poor performance. # 1024 is a good default value for most cases. pipeline_count_limit = 1024 # This setting corresponds to the 'client-query-buffer-limit' in Redis configuration. # The default value is typically 1GB. # It's recommended not to modify this value unless absolutely necessary. target_redis_client_max_querybuf_len = 1073741824 # 1GB in bytes # This setting corresponds to the 'proto-max-bulk-len' in Redis configuration. # It defines the maximum size of a single string element in the Redis protocol. # The value must be 1MB or greater. Default is 512MB. # It's recommended not to modify this value unless absolutely necessary. target_redis_proto_max_bulk_len = 512_000_000 # If the source is Elasticache, you can set this item. AWS ElastiCache has custom # psync command, which can be obtained through a ticket. aws_psync = "" # example: aws_psync = "10.0.0.1:6379@nmfu2sl5osync,10.0.0.1:6379@xhma21xfkssync" # destination will delete itself entire database before fetching files # from source during full synchronization. # This option is similar redis replicas RDB diskless load option: # repl-diskless-load on-empty-db empty_db_before_sync = false [module] # The data format for BF.LOADCHUNK is not compatible in different versions. v2.6.3 <=> 20603 target_mbbloom_version = 20603

3. ##### 启动redis-shake

bash

nohup redis-shake ./shake.toml &

4. ## 全量数据同步验证

进程启动之后,会自动进行全量数据同步,如上面的原理分析一样,redis-shake会请求源redis进行数据同步,这次因为相当于是新增的redis副本,所以是一次全量的数据同步,源redis会后台进行bgsave生成rdb文件,之后传输给redis-shake, 同时源redis的增量数据会被源redis保存缓存,等待全量数据同步之后,自动会进行增量数据同步

  1. 增量数据同步验证

使用 redis-benchmark 模拟增量数据过程,往测试的162的redis 发送1000w的redis的写,

bash

taskset -c 0-7 /usr/local/redis/bin/redis-benchmark -r 10000000 -n 10000000 -t set -h 127.0.0.1 -a 'local@test' -c 8 -d 8 -P 2

本地的redis 实际生成 6320024

云上redis通过 redis-shake的增量同步也有了 6320024

  1. 总结

本文通过一个 Redis 的数据迁移的需求,深入了解了redis的主从同步的过程以及原理,之后调研Redis的数据同步工具,包括 Redis-Shake 和 云厂商提供的同步工具,最后经过动手搭建一个本地的redis ,然后通过redis-shake 工具成功进行数据的全量和增量同步。最后感谢下开源贡献者吧,然后作为开发者的一员,咱们也要多多参与开源

Redis数据迁移-RedisShake redis-shake是阿里云Redis团队开源的用于Redis数据迁移和数据过滤的工具。一、基本功能redis-shake它支持解析、恢复、备份、同步四个功能恢复restore:将RDB文件恢复到目的redis数据库。备份dump:将源redis的全量数据通过RDB文件备份起来。解析decode:对RDB文件进行读取,并以json格式解析存储。同步sync:支持源redis和目的redis的数据同步,支持全量和增量数据的迁移,支持单节点、主从版、集群版之间的互相同步。 阅读详情

相关推荐

使用Redis-Shake进行Redis集群间的数据同步详细介绍

Redis集群数据同步,Redis-Shake工具使用; 本介绍主要侧重容灾解决方案,具体业务情况具体分析。

qq_39344638的博客 6461

Redis-shake 数据迁移工具

redis-shake 是 Redis 数据迁移和数据过滤的工具。2、使用容器部署两个Redis测试实例。1、下载安装redis-shake。5、执行redis数据库迁移。3、源端创建测试数据。4、创建迁移配置文件。

IT 7910

redis-shake 同步redis数据

redis-shake 同步redis数据

congge 1万+

Redis数据同步利器:redis-shake实战指南

在Redis运维过程中,数据同步、迁移是常见需求——无论是单机间的数据备份、集群与单机的双向同步,还是基于RDB文件的离线恢复,都需要可靠的工具支撑。阿里云开源的redis-shake正是为解决这类问题而生,它轻量、灵活,支持单机、主从、哨兵、集群等多种部署架构的同步场景。本文将从工具介绍、安装配置入手,手把手带你实战四种核心同步场景,最后总结关键注意事项,帮你快速掌握redis-shake的使用。

专注Java和MySQL领域知识分享 1449

使用redis-shake工具迁移云Redis数据(二十一)

阿里云Redis版本时5.x,由于版本兼容性问题,我们也需要在ECS中部署5.x版本的Redis。 2.安装redis-shake工具 3.redis-shake配置文件 redis-shake其他扩展参数: 源redis的类型,支持一下4种类型:: 单db节点/主从版模式。如果源端是从多个db节点拉取就选择这个模式,即便是codis等开源的proxy-db架构。: sentinel模式。: 集群模式。开源的cluster。对于阿里云来说,用户目前无法拉取db的地址,所以此处只能是proxy。: pro

江晓龙的博客 1万+

Redis迁移-RedisShake工具

本文介绍了使用RedisShake进行Redis数据迁移的步骤和注意事项。首先介绍了安装RedisShake的方法,然后介绍了配置文件中需要修改的部分,包括数据源和目标数据库的设置、管道命令最大数和缓存区大小的调节等。接着介绍了两种迁移方式:Sync模式和Scan模式,并讲解了数据清洗的方法和注意事项。最后提供了官方中文文档和仓库地址,方便读者进一步了解和使用RedisShake。

weixin_43063953的博客 4571

使用redis-shake 进行redis的数据同步或迁移操作

redis-shake 是阿里开源的一个redis 同步工具(redis-migrate-tool比较老了,对一些命令的支持不好,并且官方的版本对应4.X的直接就是不支持)下载地址:https://github.com/alibaba/RedisShake(直接去下载官方编译好的tar.gz包即可)官方文档:https://yq.aliyun.com/articles/...

weixin_34366546的博客 7415

Claude Code启动失败解决方案,执行文件不兼容一键修复

Claude Code命令行工具突然报错,显示"不支持的16位应用程序"。作者排查Node版本无果后,发现是Anthropic更新导致Windows兼容性问题。解决方法很简单:卸载旧版、切换npm镜像源、重装最新版即可恢复。经验教训:遇到类似问题应先搜索社区反馈,避免无谓排查,同时注意npm源使用后及时还原。整个踩坑过程虽折腾,但最终只是简单的重装问题。

1463

Redis 缓存数据库使用 Redis-Shake 做数据同步

目录Redis 缓存数据库使用 Redis-Shake 做数据同步Redis-shake 简介Redis-Shake 同步的五种模式基本原理部署过程同步模式restore 模式dump 模式示例单点到单点cluster 到 clustercluster 到 proxystandalone 到 cluster Redis 缓存数据库使用 Redis-Shake 做数据同步 Redis-shake 简介 redis-shake是阿里云Redis&MongoDB团队开源的用于redis数据同步的工具,下载

weixin_41335923的博客 1762

国产麒麟系统PXE安装-UEFI引导

注意: 适用uefi引导 适用x86_64架构 一键部署脚本扣我 1.上传ISO到PXE服务器,拷贝ISO文件 # mkdir /kylin_iso # mount -o loop Kylin-Server-10-SP1-Release-Build04-20200711-x86_64.iso /kylin_iso/ 2.配置http,获取安装源 # yum -y install httpd # mkdir /var/www/html/{ks,kylin} # 注意一定是"/kylin_iso/

河静 5056

ARM SMMUv3设备树配置实战:从零开始为RK3588搭建IOMMU环境

本文详细介绍了在RK3588平台上配置ARM SMMUv3设备树的实战经验。从理解硬件架构、设备树节点定义,到内核驱动集成与调试,提供了完整的IOMMU环境搭建指南,并分享了解决StreamID冲突、中断配置等常见问题的技巧,帮助开发者高效完成控制器初始化。

l3m4n的博客 887

redis数据同步之redis-shake

redis-shake简介 redis-shake是阿里开源的用于redis数据同步的工具,基本功能有: 恢复restore:将RDB文件恢复到目的redis数据库。 备份dump:将源redis的全量数据通过RDB文件备份起来。 解析decode:对RDB文件进行读取,并以json格式解析存储。 同步sync:支持源redis和目的redis的数据同步,支持全量和增量数据的迁移,支持从云下到阿里云云上的同步,也支持云下到云下不同环境的同步,支持单节点、主从版、集群版之间的互相同步。需要注意的是,

manong20210713的博客 1717

深入解析BlueZ5与D-Bus:Linux蓝牙开发实战指南

本文深入解析BlueZ5与D-Bus在Linux蓝牙开发中的核心应用,提供从环境搭建到实战开发的完整指南。通过详细代码示例和调试技巧,帮助开发者掌握蓝牙协议栈与D-Bus接口的交互方法,实现高效蓝牙设备管理与GATT服务开发。

weixin_28292761的博客 451

Redis迁移及数据同步(Redis-Shake)

redis-shake是阿里云Redis&MongoDB团队开源的用于redis数据同步的工具。它支持解析、恢复、备份、同步四个功能。 恢复restore:将RDB文件恢复到目的redis数据库。 备份dump:将源redis的全量数据通过RDB文件备份起来。 解析decode:对RDB文件进行读取,并以json格式解析存储。 同步sync:支持源redis和目的redis的数据同步,支持全量和增量数据的迁移,支持单节点、主从版、集群版之间的互相同步。需要注意的是,如果源端是集群版,需要搭建

会哭的雨@的博客 3025

Keil MDK-ARM v5.43a 部署 STM32F103 开发环境全流程

嵌入式开发环境是 Cortex-M 微控制器工程落地的基础支撑,其核心在于编译器链、设备支持包(DFP)与调试驱动的协同一致性。Keil MDK-ARM 作为工业级 ARM Cortex-M 开发套件,依托 Arm Compiler 和 CMSIS 标准,提供从代码编译、外设抽象到实时调试的全栈能力。其技术价值体现在对 STM32 等主流 MCU 的深度适配、高可靠性 SWD 调试支持,以及与 HAL 库、CubeMX 工程的无缝集成。典型应用场景涵盖温湿度传感终端、工业 PLC 子模块及低功耗边缘节点开发

weixin_33750664的博客 896

【11】科曼医疗——科曼医疗 嵌入式--面试,校招,面试问答记录

科曼医疗嵌入式校招面试记录:3位面试官分别考察应用层技术、底层技术和HR面。技术问题涵盖C++特性(多态、虚函数、指针与引用区别)、内存管理(malloc与new对比)、嵌入式基础(51最小系统、IIC/SPI协议)及项目经验(智能黑板擦专利项目)。同时考察了Linux使用经验、STM32开发及嵌入式操作系统认知。最后环节应聘者询问了开发环境及面试流程。面试内容全面覆盖嵌入式开发核心知识点。

程序员,他们想的是什么?他们想的永远都是技术,他们崇尚的也永远都是技术。 1252

【redis数据同步】redis-shake数据同步全量+增量

redis-shake是基于redis-port基础上进行改进的一款产品。它支持解析、恢复、备份、同步四个功能。以下主要介绍同步sync。redis-shake 的基本原理就是模拟一个从节点加入源redis集群,首先进行全量拉取并回放,然后进行增量的拉取(通过psync命令)。如果目标库的数据逐出策略(maxmemory-policy)配置为noeviction以外的值,可能导致目标库的数据与源库不一致。关于数据逐出策略详情,请参见Redis数据逐出策略介绍。

hh的博客 3915

AUTOSAR-WdgM篇

Wdg通常有两种:一种是芯片内部自带的片内看门狗,另一种是在芯片外部通过SPI这种接口连接的片外看门狗。MCAL只负责常用的有MCU内部看门狗,片内看门狗的特点是Wdg模块是直接访问相关硬件寄存器。内部看门狗依赖于系统时钟片外看门狗属于设备抽象层负责,通常需要使用MCAL提供的其他模块(比如SPI,DIO,PWM等)来访问/控制外扩看门狗芯片。这种不能直接访问硬件寄存器。Wdg Driver:有三种模式slow mode,fast mode ,off mode。

qq_329563867的博客 5830

redis-shake数据同步&迁移工具

redis同步

wsncbddg的博客 745

基于DSIFT多尺度图像融合的MATLAB代码

多尺度图像融合是一种常用的图像处理技术,它可以将具有不同尺度和空间频率特征的图像融合成一幅更具信息丰富度和视觉效果的图像。DSIFT算法是一种基于SIFT算法的改进版本,它在提取图像特征时采用了密集采样的方法,能够有效地提取图像的局部特征。多尺度图像融合基于DSIFT算法的思想,通过在不同尺度下提取图像的DSIFT特征,并将这些特征进行融合,得到最终的融合图像。然后,通过DSIFT算法提取了两幅图像的特征。通过运行上述代码,我们可以在MATLAB中实现基于DSIFT多尺度图像融合的算法,并观察到融合结果。

IELLQUI9的博客 181

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Redis集群迁移实战:用Redis-Shake搞定跨版本数据同步(附避坑指南)

本文详细介绍了如何使用Redis-Shake工具实现Redis集群跨版本数据同步,涵盖版本兼容性分析、Redis-Shake部署配置、迁移全流程实战及高频避坑指南。通过实战案例和优化策略,帮助开发者高效完成Redis 5.0到6.0/7.0的集群迁移,确保数据一致性和业务连续性。

dream的博客 940

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

【分布式知识】Redis-Shake 容器云部署完整指南

Redis-Shake容器云部署指南摘要 本文详细介绍了Redis-Shake在Kubernetes环境中的容器化部署方案。主要内容包括: 架构设计:展示了包含源/目标Redis集群、Kubernetes资源配置及监控系统的整体架构图,并比较了单实例、分片并行和多租户三种部署方案的适用场景。 Kubernetes资源配置: 使用Namespace隔离部署环境 通过ConfigMap配置Redis-Shake主参数和启动脚本 使用Secret管理敏感连接信息 配置PVC提供持久化存储 提供单实例Deploym

wendao76的专栏 1249

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

redis-shake数据迁移工具

  redis-shake是阿里云Redis&MongoDB团队开源的用于redis数据同步的工具。 基本功能   redis-shake是我们基于redis-port基础上进行改进的一款产品。它支持解析、恢复、备份、同步四个功能。以下主要介绍同步sync。 恢复restore:将RDB文件恢复到目的redis数据库。 备份dump:将源red...

weixin_34217711的博客 1944

Redis6【备份迁移篇】02:使用redis-shake对Redis进行迁移

使用redis-shake对Redis进行迁移

weixin_40612128的博客 1985
上一篇: 在微服务架构下,如何结合Spring Cloud实现动态数据源的路由管理
下一篇: 5分钟上手!MyBatis-Plus 让你开发效率翻倍!
退休的汤姆
博客等级 码龄7年 1657粉丝 1050原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值