云数据库 GeminiDB
云数据库 GeminiDB
- 最新动态
- 功能总览
- 服务公告
- 产品介绍
-
GeminiDB Redis接口
- 产品介绍
- 计费说明
- 快速入门
-
用户指南
- 权限管理
- 购买GeminiDB Redis实例
- 实例连接及管理
-
数据迁移
- Redis数据迁移方案概览
- 使用DRS服务将GeminiDB Redis迁移到Redis(推荐)
- 阿里云数据库Redis/Tair到GeminiDB Redis的迁移
- 腾讯云Redis到GeminiDB Redis的迁移
- 使用DRS服务将自建Redis或者Redis集群迁移到GeminiDB Redis(推荐)
- 通过Redis-Shake迁移工具将自建Redis迁移到GeminiDB Redis
- 使用Redis-Shake工具将RDB文件/AOF文件 导入到GeminiDB Redis
- 使用数据导入功能将RDB文件恢复到GeminiDB Redis(推荐)
- Kvrocks到GeminiDB Redis的迁移
- Pika到GeminiDB Redis的迁移
- SSDB到GeminiDB Redis的迁移
- LevelDB到GeminiDB Redis的迁移
- RocksDB到GeminiDB Redis的迁移
- AWS ElasticCache for Redis数据库到GeminiDB Redis的迁移
- 迁移后Redis数据一致性校验
- 实例管理
- 变更实例
- 数据备份
- 数据恢复
- 诊断分析
- 账号与安全
- 参数管理
- 日志与审计
- 查看监控指标与配置告警
- GeminiDB Redis标签管理
- GeminiDB Redis用户资源配额
- 通过GeminiDB Redis实现MySQL内存加速
- 开发参考
- 最佳实践
- 性能白皮书
-
常见问题
- 高频常见问题
-
产品咨询
- GeminiDB Redis和开源Redis、其他开源Redis云服务有什么区别?
- 和开源Redis相比,GeminiDB Redis性能如何?
- GeminiDB Redis兼容Redis哪些版本,兼容哪些命令,客户端连接是否需要修改
- 自建Redis是否可以搬迁至GeminiDB Redis,需要注意什么
- 什么是GeminiDB Redis实例可用性
- GeminiDB Redis实例总容量是总内存吗,内存和容量之间是什么联系
- 购买GeminiDB Redis实例时,如何选择合适的节点规格和节点数量?
- 购买x GB的GeminiDB Redis的实例,优选主备还是集群?
- GeminiDB Redis持久化机制是怎样的,会丢数据吗
- GeminiDB Redis的内存淘汰策略是什么
- GeminiDB Redis是否支持布隆过滤器等modules
- 计费相关
-
数据库使用
- scan指定match参数,数据中确实存在匹配的key,为什么返回的是空
- 业务侧原本做了数据分片,切换到GeminiDB Redis后如何处理这部分逻辑
- GeminiDB Redis接口是否支持keys命令的模糊查询
- GeminiDB Redis是否支持多DB
- 对于scan类的操作,GeminiDB Redis接口与开源Redis 5.0的返回值顺序为什么有差异
- 针对某些不合法命令,GeminiDB Redis接口与开源Redis 5.0的报错信息为什么有差异
- 如何处理报错:CROSSSLOT Keys in request don't hash to the same slot
- GeminiDB Redis单次事务推荐包含的命令条数
- GeminiDB Redis集群版实例中,哪些命令需要使用hashtag
- 如何处理报错“ERR unknown command sentinel"
- 对于阻塞命令,GeminiDB Redis接口(主备实例)与开源Redis的返回值为什么可能有差异
- GeminiDB Redis存储扩容需要多久,对业务有影响吗?
- GeminiDB Redis多个节点同时扩容需要多长时间,对业务影响如何?
- GeminiDB Redis规格变更包含的在线变更和离线变更有什么区别,通常需要多长时间,对业务有哪些影响?
- GeminiDB Redis版本补丁升级包含的在线升级和离线升级有什么区别,通常需要多长时间,对业务有哪些影响?
- GeminiDB Redis备份文件是否可以下载到本地,是否支持线下恢复数据
- GeminiDB Redis数据备份工作机制是怎样的,对业务有哪些影响?
- 购买GeminiDB Redis 1U*2节点特惠型实例后,业务访问量比较少,但CPU占用率比较高,是什么原因?
- GeminiDB Redis监控面板上key数量下降又恢复至正常数量是什么原因?
- GeminiDB Redis节点CPU偶发冲高,可能是哪些原因
- GeminiDB Redis如何从5.0版本升级到6.2版本
- GeminiDB Redis什么时候进入只读
-
数据库连接
- 如何接入GeminiDB Redis
- 如何使用GeminiDB Redis提供的多个节点IP地址
- GeminiDB Redis提供的ELB的实现方式是怎样的
- 如何创建和连接弹性云服务器
- GeminiDB Redis实例购买成功后是否支持更换VPC
- 绑定了弹性公网IP但是连接不上数据库
- 内网如何访问GeminiDB Redis
- GeminiDB Redis自带的负载均衡地址是否能绑定公网IP?如何通过公网连接GeminiDB Redis实例?
- 设置了安全组,还需要设置负载均衡内网访问控制吗?
- 如何处理客户端连接池报错“Could not get a resource from the pool”
- 常见客户端报错及解决方法
- 备份与恢复
- 区域和可用区
-
数据迁移
- DRS上找不到GeminiDB Redis链路
- 报错ERR the worker queue is full, and the request cannot be excecuted
- 报错ERR the request queue of io thread is full, and the request cannot be excecuted
- 报错 read error, please check source redis log or network
- 报错 slaveping_thread.cc-ThreadMain-90: error: Ping master error
- 同步状态正向迁移速度太慢
- 同步状态正向迁移速度太快,报错:ERR server reply timeout, some responses may lose, but requests have been executed
- 4.0、5.0以及6.2版本的自建Redis能迁移至GeminiDB Redis吗?
- 自建Redis主备、集群实例如何迁移到GeminiDB Redis?
- 为什么阿里云Redis、腾讯云Redis等云服务不能使用DRS进行数据迁移?
- 自建主备Redis,迁移到GeminiDB Redis集群,需要考虑哪些因素?
- 迁移完成后数据量变少了,100GB的数据迁移到GeminiDB Redis只有20-30GB,数据是不是没迁移完?
- 内存加速
- 资源冻结/释放/删除/退订
- GeminiDB Influx接口
-
GeminiDB Cassandra接口
- 产品介绍
- 计费说明
- 快速入门
-
用户指南
- 权限管理
- 购买GeminiDB Cassandra实例
- 实例连接及管理
- 数据迁移
- 实例生命周期管理
- 变更实例
- 同城容灾
- 异地双活
- 数据备份
- 数据恢复
- 参数管理
- 日志与审计
- 查看监控指标与配置告警
- 企业项目
- GeminiDB Cassandra标签管理
- GeminiDB Cassandra用户资源配额
- 最佳实践
- 性能白皮书
- 常见问题
- GeminiDB (兼容DynamoDB API)实例
- HBase协议兼容版实例
- GeminiDB Mongo接口
- 技术白皮书
-
API参考
- 使用前必读
- API概览
- 如何调用API
- 快速入门
-
API v3(推荐)
- 查询API版本
- 接口版本和规格
-
实例管理
- 创建实例
- 删除实例
- 查询实例列表和详情
- 扩容实例存储容量
- 扩容实例的节点数量
- 缩容实例的节点数量
- 获取节点会话列表
- 查询实例节点会话统计信息
- 关闭实例节点会话
- 查询实例可变更规格
- 变更实例规格
- 修改实例的管理员密码
- 修改实例名称
- 变更实例安全组
- 数据库补丁升级
- 批量数据库补丁升级
- 创建冷数据存储
- 扩容冷数据存储
- 绑定/解绑弹性公网IP
- 切换实例SSL开关
- 重启实例
- 设置磁盘自动扩容策略
- 修改数据库端口
- 判断弱密码
- 修改副本集跨网段访问配置
- 删除扩容失败的节点
- 查询创建实例或扩容节点时需要的IP数量
- 查询磁盘自动扩容策略
- 变更实例存储容量
- 查询高危命令
- 修改高危命令
- 查询Redis实例的热key
- 设置Redis禁用命令
- 查询Redis禁用命令
- 删除Redis禁用命令
- 设置实例可维护时间段
- Redis主备切换
- 支持节点的开关机
- 查询GeminiDB Redis实例的大key
- 获取GeminiDB Redis的免密配置
- 支持修改GeminiDB Redis的免密配置
- 查询内存加速映射列表和详情
- 创建内存加速规则
- 解除内存加速映射
- 创建内存加速映射
- 修改内存加速规则
- 查询内存加速规则列表和详情
- 删除内存加速规则
- 开启/关闭实例数据导出
- 开启/关闭秒级监控
- 查询秒级监控配置
- 连接管理
- 备份与恢复
- 参数模板管理
- 管理数据库和账号
- 标签管理
- 日志管理
- 配额管理
- 容灾管理
- 任务管理
- 企业项目管理
- 实例负载均衡管理
- API v3(即将下线)
- 权限策略和授权项
- 附录
- SDK参考
- 场景代码示例
- 视频帮助
- 文档下载
- 通用参考
链接复制成功!
开启和使用内存加速
本章节主要介绍如何开启内存加速功能,主要流程如下:
注意事项
- 内存加速开启后,不允许在MySQL实例执行RESET MASTER、FLUSH LOGS等删除binlog的命令。
- 目前仅支持MySQL到GeminiDB Redis接口Hash类型的转换。
- 新规则的Redis键前缀+键分隔符不能是已有规则的Redis键前缀+键分隔符的子前缀,反之亦然。例如新规则的前缀为 "pre1:",键分隔符为 "," ,老规则前缀为 "pre1",分隔符为":", 这种情况不允许创建新规则。
- 暂不支持ENUM、SET、JSON三种数据类型的同步。
操作步骤
步骤1:创建GeminiDB实例
- 登录管理控制台。
- 单击管理控制台左上角的
,选择区域和项目。
- 单击页面左上角的
,选择“数据库 > 云数据库 RDS”,进入RDS信息页面。
- 在“实例管理”页面,选择目标实例名称。
- 在左侧导航栏选择“内存加速”,单击“创建GeminiDB实例”。
- 填写并选择实例相关信息后,单击“提交”,完成实例创建。
表1 基本信息 参数
描述
GeminiDB实例规格
实例的CPU和内存,详细规格见表2。
数据库端口
数据库的访问端口号。
GeminiDB Redis支持自定义端口号,取值范围为:1024~65535,其中,如下端口号为禁用端口:2180、2887、3887、6377、6378、6380、8018、8079、8091、8479、8484、8999、12017、12333、50069。
当您不指定端口时,创建实例的访问端口默认为6379。
说明:
暂时不支持实例创建成功后修改端口。
实例名称
设置实例名称时,需要满足如下规则。
- 实例名称允许和已有名称重复。
- 实例名称长度在4个到64个字节之间,必须以字母或中文字开头,区分大小写,可以包含字母、数字、中划线、下划线或中文(一个中文字符占用3个字节),不能包含其他特殊字符。
数据库密码
用户设置的数据库密码。
- 长度为8~32个字符。
- 必须是大写字母、小写字母、数字、特殊字符中至少两种的组合,其中可输入~!@#%^*-_=+?特殊字符。
- 系统会进行弱密码校验,安全起见,请输入高强度密码。
请妥善管理您的密码,因为系统将无法获取您的密码信息。
确认密码
必须和数据库密码一致。
步骤2:创建映射
- 登录管理控制台。
- 单击管理控制台左上角的
,选择区域和项目。
- 单击页面左上角的
,选择“数据库 > 云数据库 RDS”,进入RDS信息页面。
- 在“实例管理”页面,选择目标实例名称。
- 在左侧导航栏选择“内存加速”,在“映射规则”页面单击“创建映射规则”。
图1 映射规则
- 在“创建映射规则”页面,填写并选择相关信息。
- 配置规则名称。
- 源实例配置。
- 数据库名:选择需要加速实例的数据库。
- 表名:选择需要加速实例中的表。
图3 源实例配置 - 加速实例端配置。
- Redis键前缀:可选。默认的前缀格式为“数据库名:数据表名:字段名1:字段名2...”,长度不超过1024个字符。如果用户自定义了Redis键前缀,那么以自定义前缀为准。
- 值存储类型:缓存的数据类型,当前仅支持Hash。
- DB号(0-999):加速实例中保存缓存数据的DB号,默认为0。
- TTL(单位:秒,默认值为30天。):加速实例中缓存数据的过期时间,默认30天(2592000秒),输入-1为不过期。
- 键分隔符:Redis键前缀与键(Key)、以及键(Key)各字段之间的分隔符,长度为1个字符。
图4 加速实例端配置 - 单击“键(Key)设置”,选择加速实例的键(Key)字段,单击“确定”。
说明:
如果加速实例键(Key)由多个源实例字段组成,那么需要具备唯一性(这些字段在MySQL实例中要能成功创建出唯一索引);可以单击“上移”和“下移”调整各字段在键(Key)中的先后顺序。
图5 键(Key)设置设置完成后,会在界面中显示键(Key)的构成方式,如下图所示:
图6 键(Key) - 配置加速实例的域-值。
- 配置信息填写完成后,单击“提交”,完成映射规则创建。
步骤3:使用示例
- 在源实例MySQL中创建一个db1数据库,并在db1中创建一个students表,具体的 SQL 如下:
mysql> CREATE DATABASE db1; Query OK, 1 row affected (0.00 sec) mysql> CREATE TABLE db1.students( sid INT UNSIGNED PRIMARY KEY AUTO_INCREMENT NOT NULL, sname VARCHAR(20), sclass INT, sgender VARCHAR(10), sbirthday DATE ); Query OK, 0 rows affected (0.00 sec) mysql> DESC db1.students; +-----------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-----------+--------------+------+-----+---------+----------------+ | sid | int unsigned | NO | PRI | NULL | auto_increment | | sname | varchar(20) | YES | | NULL | | | sclass | int | YES | | NULL | | | sgender | varchar(10) | YES | | NULL | | | sbirthday | date | YES | | NULL | | +-----------+--------------+------+-----+---------+----------------+ 5 rows in set (0.00 sec)
- 建表后,在“内存加速”界面,创建一条映射规则,将students表中的每一行转换为一个Redis Hash。该Hash的键(Key)由”数据库名:数据表名:sid:<sid的值>”构成,域-值由选中的“sname,sclass,sgender,sbirthday”构成。
图8 配置映射规则
- 映射规则创建成功后,可以查看映射规则及映射信息。
图9 映射信息
- 在MySQL实例侧对students表插入一条新数据:
mysql> INSERT INTO db1.students (sname, sclass, sgender, sbirthday) VALUES ('zhangsan', 1, 'male', '2015-05-20'); Query OK, 1 row affected (0.01 sec) mysql> SELECT * FROM db1.students; +-----+----------+--------+---------+------------+ | sid | sname | sclass | sgender | sbirthday | +-----+----------+--------+---------+------------+ | 1 | zhangsan | 1 | male | 2015-05-20 | +-----+----------+--------+---------+------------+ 1 row in set (0.00 sec)
- 由于映射规则的存在,会把该数据自动同步到GeminiDB实例中。此时在GeminiDB实例中执行命令即可查询到该数据:
127.0.0.1:6379> KEYS * 1) "db1:students:sid:1" 127.0.0.1:6379> HGETALL db1:students:sid:1 1) "sbirthday" 2) "2015-05-20" 3) "sclass" 4) "1" 5) "sgender" 6) "male" 7) "sname" 8) "zhangsan"
- 在MySQL实例侧对students表再次插入一条新数据:
mysql> INSERT INTO db1.students (sname, sclass, sgender, sbirthday) VALUES ('lisi', 10, 'male', '2015-05-22'); Query OK, 1 row affected (0.00 sec) mysql> SELECT * FROM db1.students; +-----+----------+--------+---------+------------+ | sid | sname | sclass | sgender | sbirthday | +-----+----------+--------+---------+------------+ | 1 | zhangsan | 1 | male | 2015-05-20 | | 2 | lisi | 10 | male | 2015-05-22 | +-----+----------+--------+---------+------------+ 2 rows in set (0.00 sec)
- 新数据会被同步到GeminiDB实例中:
127.0.0.1:6379> KEYS * 1) "db1:students:sid:1" 2) "db1:students:sid:2" 127.0.0.1:6379> HGETALL db1:students:sid:2 1) "sbirthday" 2) "2015-05-22" 3) "sclass" 4) "10" 5) "sgender" 6) "male" 7) "sname"
- 在 MySQL实例侧对students表执行更新数据操作:
mysql> UPDATE db1.students SET sclass=12, sname='wangwu' WHERE sid = 1; Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> SELECT * FROM db1.students; +-----+--------+--------+---------+------------+ | sid | sname | sclass | sgender | sbirthday | +-----+--------+--------+---------+------------+ | 1 | wangwu | 12 | male | 2015-05-20 | | 2 | lisi | 10 | male | 2015-05-22 | +-----+--------+--------+---------+------------+ 2 rows in set (0.00 sec)
- 在GeminiDB实例中查看数据被更新:
127.0.0.1:6379> KEYS * 1) "db1:students:sid:1" 2) "db1:students:sid:2" 127.0.0.1:6379> HGETALL db1:students:sid:1 1) "sbirthday" 2) "2015-05-20" 3) "sclass" 4) "12" 5) "sgender" 6) "male" 7) "sname" 8) "wangwu"
- 在MySQL实例侧对students表执行删除数据操作:
mysql> DELETE FROM db1.students WHERE sid = 1; Query OK, 1 row affected (0.00 sec) mysql> SELECT * FROM db1.students; +-----+-------+--------+---------+------------+ | sid | sname | sclass | sgender | sbirthday | +-----+-------+--------+---------+------------+ | 2 | lisi | 10 | male | 2015-05-22 | +-----+-------+--------+---------+------------+ 1 row in set (0.00 sec)
- 在 GeminiDB实例中查看数据被删除:
127.0.0.1:6379> KEYS * 1) "db1:students:sid:2"