检测到您已登录华为云国际站账号,为了您更好的体验,建议您访问国际站服务网站 https://www.huaweicloud.com/intl/zh-cn
不再显示此消息
订单处理:后端服务器会将订单信息保存到数据库中,并进行异步处理,例如发送消息通知用户订单状态。 缓存更新:后端服务器会更新缓存中的商品库存信息,以便处理下一次秒杀请求。 秒杀过程中多次访问数据库,下单通常是利用行级锁进行访问限制,抢到锁才能查询数据库和下单。
业务应用 使用DCS实现热点资源顺序访问 使用DCS实现排行榜功能 使用DCS实现视频直播弹幕和社交网站评论的功能 使用DCS实现游戏开合服的数据同步 使用DCS实现电商秒杀功能 使用DCS改造传统应用系统数据库 升级Redis 3.0实例到高版本实例
Redis-cli Redis自带命令行工具,支持导出RDB文件,也支持将持久化的AOF文件整库导入。 AOF文件为所有数据更改命令的全量集合,数据文件稍大。 - Rump 支持在线迁移,支持在同一个实例的不同数据库之间,以及不同实例的数据库之间迁移。 不支持增量迁移。
热Key的请求压力过大,超出Redis的承受能力易造成缓存击穿,即大量请求将被直接指向后端的数据库,导致数据库访问量激增甚至宕机,从而影响其他业务。 父主题: 大Key/热Key分析/过期Key扫描
如果有某个数据库没有被业务系统使用,可以将测试数据写入该数据库,待导入DCS后,使用flushdb命令清空该数据库。 单机实例如果不做持久化配置,则RDB文件需要临时生成,导出耗时较主备实例相比稍多一些。 登录弹性云服务器。 安装Redis-cli客户端。
使用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等几条简单命令即可实现锁的获取和释放。
如果运行报错找不到hiredis库文件,可参考如下命令,将相关文件复制到系统目录,并增加动态链接。
可以输入命令对数据库进行读写操作。 图3 连接redis成功 连接Cluster集群实例。 安装redis-py-cluster客户端。 执行以下命令下载released版本。
QPS:即Query Per Second,表示数据库每秒执行的命令数。QPS的测试方法,可参考性能测试方法。 Redis 3.0实例支持“单机”、“主备”和“Proxy集群”三种类型。 DCS Redis 3.0已暂停售卖,建议使用Redis 4.0/5.0/6.0。
db String Redis数据库。 表6 TargetInstanceBody 参数 参数类型 描述 id String Redis实例ID(target_instance信息中必须填写)。
db String Redis数据库。 表6 TargetInstanceBody 参数 参数类型 描述 id String Redis实例ID(target_instance信息中必须填写)。
由于libmemcached库需要增加sasl认证参数,因此不能直接使用yum命令安装。