当前位置: 首页 > news >正文

通过migrate命令实现两个redis实例之间的数据迁移

本文适用于将源服务器的redis实例的key的数据迁移到其他服务器的redis实例

一、migrate简介:

migrate用于在Redis实例间进行数据迁移,实际上migrate命令是将dump、restore、del三个命令进行组合,从而简化了操作流程。migrate命令具有原子性,从Redis 3.0.6版本后已经支持迁移多个键的功能。migrate命令的数据传输直接在源Redis和目标Redis上完成,目标Redis完成restore后会发送OK给源Redis。

二、migrate命令参数:

MIGRATE host port key| destination-db timeout [COPY] [REPLACE] [AUTH password] [AUTH2 username password] [KEYS key]
重要参数解释:

host:目标Redis的IP地址
port:目标Redis的端口
key|“”:Redis 3.0.6 后如果需要迁移多个键,此处为空字符串""
destination-db:目标Redis的数据库索引
timeout:迁移的超时时间(单位为毫秒)
copy:如果添加此选项后,迁移后不删除源键。
replace:如果添加此选项migrate不管目标Redis是否存在该键都会正常迁移进行数据覆盖,如果不提供此参数且目标redis存在该键,则抛出异常”(error) ERR Target instance replied with error: BUSYKEY Target key name already exists.“
keys:如果要迁移多个键 keys key1 key2 key3 key4

示例:

将name1 复制到目标redis的0库,超时时间为1s,不删除源redis的key,覆盖目标redis中相同的key

MIGRATE 127.0.0.1 6379 name1 0 1000 copy replace

如果移动多个key:

MIGRATE 127.0.0.1 6379 "" 2 5000 copy replace keys key1 key2 key3 key4

三、实践测试:

1、我在本地模拟了两个redis实例。ip都为127.0.0.1,端口一个是默认的6379,一个是63791
并且分别set了不同的key

127.0.0.1:63791> keys *
1) "age"
2) "like"
3) "colour"
127.0.0.1:6379> keys *
1) "student"

2、在源redis实例63791上执行迁移命令
将age 复制到目标redis的0库,超时时间为1s,不删除源redis的key,覆盖目标redis中相同的key

127.0.0.1:63791> keys *
1) "age"
2) "like"
3) "colour"
127.0.0.1:63791>
127.0.0.1:63791>
127.0.0.1:63791>
127.0.0.1:63791>
127.0.0.1:63791> MIGRATE 127.0.0.1 6379 age 0 1000 copy replace
OK

查看6379的redis实例,可以看到age迁移成功

127.0.0.1:6379> keys *
1) "age"
2) "student"
127.0.0.1:6379> get age
"22"

再试一下replace这个参数的作用,增加这个参数代表覆盖目标key,验证一下,现在6379的实例的age是22
我们在源实例里将age改一下,然后再迁移

127.0.0.1:63791> set age 99
OK
127.0.0.1:63791> get age
"99"
127.0.0.1:63791> MIGRATE 127.0.0.1 6379 age 0 1000 copy replace
OK

查看目标实例
可以看到age已经被覆盖了

127.0.0.1:6379> keys *
1) "age"
2) "student"
127.0.0.1:6379>
127.0.0.1:6379> get age
"99"

如果不想覆盖目标实例的key,可以把replace参数去掉,在源实例执行一下命令
可以看到抛出了异常,key已经存在

127.0.0.1:63791> MIGRATE 127.0.0.1 6379 age 0 1000 copy
(error) ERR Target instance replied with error: BUSYKEY Target key name already exists.

迁移多个key的命令:

127.0.0.1:63791> MIGRATE 127.0.0.1 6379 "" 0 1000 copy replace keys age like colour
OK

查看目标实例
可以看到数据都被迁移了过来

127.0.0.1:6379> keys *
1) "like"
2) "age"
3) "student"
4) "colour"

剩下的其他参数大家可以自己验证一下~

相关文章:

通过migrate命令实现两个redis实例之间的数据迁移

本文适用于将源服务器的redis实例的key的数据迁移到其他服务器的redis实例 一、migrate简介: migrate用于在Redis实例间进行数据迁移,实际上migrate命令是将dump、restore、del三个命令进行组合,从而简化了操作流程。migrate命令具有原子性&…...

Unity 判断两个UI是否相交

今天碰到要判断两个UI是否相交的交互。 尝试了下,发现有两个方法都成功了。 1、使用Collider2D组件 分别创建两个Image组件,并且添加Collider2D组件,其中一个还要添加Rigidbody2D组件,如下图: 然后创建个判断脚本“…...

swoole process 消息通信

swoole文档:Swoole 文档 process子进程和父进程之间通信,依靠监听。子进程和父进程分别做监听。父进程写入信息,子进程监听接收。子进程向父进程写入,调用父进程监听。 子进程向父进程写入信息有两种方式,一种调用wr…...

uniapp跳转方式

UniApp 是一个基于 Vue.js 的跨平台开发框架,可以同时构建 iOS、Android、H5 和小程序等多个平台的应用。在 UniApp 中,我们可以使用以下几种方式进行页面之间的跳转: 使用 uni.navigateTo 方法:该方法可以在当前页面打开新的页面…...

六大排序算法:插入、选择、冒泡、快排、希尔、归并

1、插入排序 解析&#xff1a;第一个元素设定为已经排好序&#xff0c;依次选择后续的元素插入到已经排好序的组内进行排序。 图示&#xff1a; 代码&#xff1a; public static void insertionSort(int[] arr) {int n arr.length;for (int i 1; i < n; i) {int key a…...

短信登录实现(黑马点评为例)

文章目录 前言一、隐藏用户敏感信息二、短信验证登录、注册1.流程2.代码3.使用redis优化解决代码 二、登录拦截&#xff08;校验&#xff09;1.流程2.代码 总结 前言 短信登录核心知识 首先黑马点评这个短信登录是一伪验证&#xff0c;即后台调用工具类随机生成六位数字。 1.R…...

【uniapp】签名组件,兼容vue2vue3

网上找了个源码改吧改吧&#xff0c;清除了没用的功能和兼容性&#xff0c;基于uniapp开发的 样子 vue2 使用方法&#xff0c;具体的可以根据业务自行修改 <signature ref"signature" width"100%" height"410rpx"></signature>confi…...

初步利用Ansible实现批量服务器自动化管理

1.Ansible介绍 Ansible是一款开源的自动化运维工具, 在2012年由Michael DeHaan创建, 现在由Red Hat维护。Ansible是基于Python开发的,采用YAML语言编写自动化脚本playbook, 可以在Linux、Unix等系统上运行, 通过SSH协议管理节点, 无需在被管理节点安装agent。Ansible以其简单、…...

网络安全和隐私保护技术

一、定义 网络安全和隐私保护技术是指在互联网和其他网络环境中&#xff0c;通过技术手段保护网络系统、网络数据和用户隐私免于受到恶意攻击、非法访问、窃取或滥用。网络安全和隐私保护技术是保护网络安全和用户隐私的重要手段&#xff0c;是保障互联网和其他网络环境正常运…...

保险行业采购管理痛点及解决方案(数智化采购系统)

随着社会发展&#xff0c;个人和企业有了更多的金融保险需求。对于金融保险公司而言&#xff0c;需要在采购合规的基础上&#xff0c;基于数智化能力&#xff0c;让经营变得更加高效和智能。 1、围绕重点领域&#xff0c;业务加速布局。 保险行业结合自身业务经营重点&#x…...

光学仿真 | 仿真推动以人类视觉感知为本的汽车显示设计

如果产品设计无法使终端用户产生共鸣&#xff0c;就不会存在卓越的工程设计。您可以设计一种结构坚固的方向盘&#xff0c;但如果它被放在错误的位置&#xff0c;就无法实现其用于转向的主要目的。 同样&#xff0c;在围绕人类视觉进行设计时&#xff0c;显示器其实无需具备尽…...

判断两个对象是否不相等operator.ne()

【小白从小学Python、C、Java】 【计算机等级考试500强双证书】 【Python-数据分析】 判断两个对象是否不相等 operator.ne() 选择题 下列代码执行输出的结果是? import operator print("【执行】operator.ne(8,8)") print(operator.ne(8,8)) print("【执行】…...

2023年云计算发展趋势:生活的智能未来

目录 引言1 智能家居的崭新时代2 无人驾驶的崭新时代3 虚拟现实的扩展与改进4 人工智能的综合应用5 云计算的可持续性结语 引言 时光荏苒&#xff0c;科技的飞速发展已经成为当今社会的标志之一。在这个数字化时代&#xff0c;云计算已经成为推动技术革新和生活方式改变的关键…...

Spring Boot项目中通过 Jasypt 对属性文件中的账号密码进行加密

下面是在Spring Boot项目中对属性文件中的账号密码进行加密的完整步骤&#xff0c;以MySQL的用户名为root&#xff0c;密码为123321为例&#xff1a; 步骤1&#xff1a;引入Jasypt依赖 在项目的pom.xml文件中&#xff0c;添加Jasypt依赖&#xff1a; <dependency><…...

2.3 矩阵消元

一、消元矩阵 消元矩阵执行消元步骤用到的矩阵。从第 i i i 个方程减去 l i j l_{ij} lij​ 乘第 j j j 个方程&#xff08;将 x j x_j xj​ 从第 i i i 行中消去&#xff09;。我们需要很多个简单的矩阵 E i j E_{ij} Eij​&#xff0c;每一个对应一个主对角线下方要消…...

Docker 从构建开始导出一个镜像

docker build docker build命令用于从Dockerfile创建一个镜像。它的基本格式如下&#xff1a; docker build [OPTIONS] PATH | URL | -这里的PATH是Dockerfile所在的路径&#xff0c;URL是一个Git仓库地址&#xff0c;-表示从标准输入读取Dockerfile。 docker build命令的一…...

案例研究|腾讯音乐娱乐集团与JumpServer共探安全运维审计解决方案

近年来&#xff0c;得益于人民消费水平的提升以及版权意识的加强&#xff0c;用户付费意愿和在线用户数量持续增长&#xff0c;中国在线音乐市场呈现出稳定增长的发展态势。随着腾讯音乐于2018年12月上市&#xff0c;进一步推动了中国在线音乐市场的发展。 腾讯音乐娱乐集团&a…...

如何卸载在linux下通过rpm安装的mysql

目录 1.先关闭MySQL服务并查看运行状态 2.使用 rpm 管道命令的方式查看已安装的mysql 3. 使用rpm -ev 命令移除安装 4. 删除MySQL数据库内容 1.先关闭MySQL服务并查看运行状态 如果之前安装过并已经启动&#xff0c;则需要卸载前请先关闭MySQL服务 systemctl stop mysqld…...

docker复制镜像文件

一、复制镜像 #1. 查找本机已有的镜像docker images |grep xxxx#2. 将镜像复制出来指向到xxxx.tar的文件中 docker save 343cca04e31d > xxxx.tareg: 二、加载镜像 直接将拷贝好的镜像包直接加载即可 docker load < myimage.tar...

自动驾驶学习笔记(六)——Apollo安装

#Apollo开发者# 学习课程的传送门如下&#xff0c;当您也准备学习自动驾驶时&#xff0c;可以和我一同前往&#xff1a; 《自动驾驶新人之旅》免费课程—> 传送门 《2023星火培训【感知专项营】》免费课程—>传送门 文章目录 前言 Apollo安装 硬件配置 安装Ubuntu…...

【力扣数据库知识手册笔记】索引

索引 索引的优缺点 优点1. 通过创建唯一性索引&#xff0c;可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度&#xff08;创建索引的主要原因&#xff09;。3. 可以加速表和表之间的连接&#xff0c;实现数据的参考完整性。4. 可以在查询过程中&#xff0c;…...

【Linux】C语言执行shell指令

在C语言中执行Shell指令 在C语言中&#xff0c;有几种方法可以执行Shell指令&#xff1a; 1. 使用system()函数 这是最简单的方法&#xff0c;包含在stdlib.h头文件中&#xff1a; #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...

Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)

目录 1.TCP的连接管理机制&#xff08;1&#xff09;三次握手①握手过程②对握手过程的理解 &#xff08;2&#xff09;四次挥手&#xff08;3&#xff09;握手和挥手的触发&#xff08;4&#xff09;状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...

Linux-07 ubuntu 的 chrome 启动不了

文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了&#xff0c;报错如下四、启动不了&#xff0c;解决如下 总结 问题原因 在应用中可以看到chrome&#xff0c;但是打不开(说明&#xff1a;原来的ubuntu系统出问题了&#xff0c;这个是备用的硬盘&a…...

selenium学习实战【Python爬虫】

selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...

大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计

随着大语言模型&#xff08;LLM&#xff09;参数规模的增长&#xff0c;推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长&#xff0c;而KV缓存的内存消耗可能高达数十GB&#xff08;例如Llama2-7B处理100K token时需50GB内存&a…...

云原生玩法三问:构建自定义开发环境

云原生玩法三问&#xff1a;构建自定义开发环境 引言 临时运维一个古董项目&#xff0c;无文档&#xff0c;无环境&#xff0c;无交接人&#xff0c;俗称三无。 运行设备的环境老&#xff0c;本地环境版本高&#xff0c;ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...

LeetCode - 199. 二叉树的右视图

题目 199. 二叉树的右视图 - 力扣&#xff08;LeetCode&#xff09; 思路 右视图是指从树的右侧看&#xff0c;对于每一层&#xff0c;只能看到该层最右边的节点。实现思路是&#xff1a; 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树记录每个节点的深度对于…...

佰力博科技与您探讨热释电测量的几种方法

热释电的测量主要涉及热释电系数的测定&#xff0c;这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中&#xff0c;积分电荷法最为常用&#xff0c;其原理是通过测量在电容器上积累的热释电电荷&#xff0c;从而确定热释电系数…...

算法:模拟

1.替换所有的问号 1576. 替换所有的问号 - 力扣&#xff08;LeetCode&#xff09; ​遍历字符串​&#xff1a;通过外层循环逐一检查每个字符。​遇到 ? 时处理​&#xff1a; 内层循环遍历小写字母&#xff08;a 到 z&#xff09;。对每个字母检查是否满足&#xff1a; ​与…...