检测到您已登录华为云国际站账号,为了您更好的体验,建议您访问国际站服务网站 https://www.huaweicloud.com/intl/zh-cn
不再显示此消息
使用DCS改造传统应用系统数据库 本章节以将MySQL数据库中的一张表迁移到华为云DCS Redis中为例,介绍数据迁移的过程。
无法拆分的大Key建议使用此方法,将不适用Redis能力的数据存至其它存储介质,如SFS或者其余NoSQL数据库,并在Redis中删除该大Key。 注意: 禁止使用DEL直接删除大Key,可能会造成Redis阻塞,甚至主备倒换。
图1 进入Web CLI登录界面 输入实例的访问密码进入Web CLI,然后选择当前操作的Redis数据库,在命令输入框输入Redis命令,按Enter键执行。 控制台连接实例空闲超过5分钟会连接超时,再次登录需要重新输入访问密码。 免密访问的Redis实例无需输入密码。
热Key的请求压力过大,超出Redis的承受能力易造成缓存击穿,即大量请求将被直接指向后端的数据库,导致数据库访问量激增甚至宕机,从而影响其他业务。 对于如何避免产生大Key和热Key,需要在业务设计阶段就考虑。参考Redis使用规范。
举例:redis中有1000万个key,迭代扫描key数量设为1000,则迭代10000次可完成全库扫描。
实施步骤 使用Redis-py库中的Redis()方法在每个游戏服务器上创建一个Redis客户端连接。 使用pubsub()方法在每个游戏服务器上创建一个Redis订阅者和发布者。用于订阅其他游戏服务器发布的消息,以及发布本地游戏服务器的数据更新消息。
QPS:即Query Per Second,表示数据库每秒执行的命令数。QPS的测试方法,可参考性能测试方法。 Memcached实例支持“单机”和“主备”两种类型。 单机实例 因系统开销占用一部分资源,Memcached单机实例可用内存比实例规格略小,如表1所示。
--dbnum <db> :选择指定的数据库编号(默认值0)。 --threads <num> :启动多线程模式(redis 6.0版本编译的redis-benchmark才支持,多线程压测redis的性能优于单线程)。
当前分布式加锁主要有三种方式:(磁盘)数据库、缓存数据库、Zookeeper。 使用DCS服务中Redis缓存实例实现分布式加锁,有几大优势: 加锁操作简单,使用SET、GET、DEL等几条简单命令即可实现锁的获取和释放。
QPS:即Query Per Second,表示数据库每秒执行的命令数。QPS的测试方法,可参考性能测试方法。 Redis 3.0实例支持“单机”、“主备”和“Proxy集群”三种类型。 DCS Redis 3.0已暂停售卖,建议使用Redis 4.0及以上版本。
可以输入命令对数据库进行读写操作。 图3 连接redis成功 连接Cluster集群实例。 安装redis-py-cluster客户端。 执行以下命令下载released版本。
如果运行报错找不到hiredis库文件,可参考如下命令,将相关文件复制到系统目录,并增加动态链接。
db String Redis数据库。 表6 TargetInstanceBody 参数 参数类型 描述 id String Redis实例ID(target_instance信息中必须填写)。
db String Redis数据库。 表6 TargetInstanceBody 参数 参数类型 描述 id String Redis实例ID(target_instance信息中必须填写)。
单机实例支持多个数据库(DB),请选择其中一个DB进行数据存储。此处选择“Database 0”。 图2 选择Database 在命令输入框输入Redis命令,例如,通过SET命令写入一个名称为“KEY_NAME”,值为“VALUE”的数据,按Enter键执行。
db 否 String Redis数据库。 响应参数 状态码: 200 表7 响应Body参数 参数 参数类型 描述 id String 迁移任务ID。 name String 迁移任务名称。
database 0 数据库下标,默认0。 password - 连接Redis实例的密码。 表2 RedisClusterConfiguration参数 参数 说明 clusterNodes cluster节点连接信息,需节点IP、Port。
database 否 Integer 数据库编号。 响应参数 状态码: 200 表3 响应Body参数 参数 参数类型 描述 response String 返回信息。 状态码: 400 表4 响应Body参数 参数 参数类型 描述 error_msg String 错误信息。
Memcached是一种内存Key-Value缓存系统,它支持简单字符串数据的存取,通常作为后端数据库内容缓存,以提升web的应用性能,降低对后端数据库的性能依赖,具体了解请参考Memcached(已停售)典型应用场景。
database_id Integer 数据库id,当前只对指定客户开放。 username String 操作慢日志的账号名称,当前只对指定客户开放。 状态码: 400 表5 响应Body参数 参数 参数类型 描述 error_msg String 错误信息。