检测到您已登录华为云国际站账号,为了您更好的体验,建议您访问国际站服务网站 https://www.huaweicloud.com/intl/zh-cn
不再显示此消息
如果使用关系型数据库,会涉及到按评论时间逆排序,随着评论越来越多,排序效率越来越低,且并发频繁。 解决方案 使用分布式缓存服务(DCS)的Redis缓存,可以从不同的维度,对某个key-value的列表进行降序显示。
确认有数据的数据库编号以及数据库中的key数量。
单机实例主要服务于数据不需要由缓存实例做持久化的业务场景,如数据库前端缓存,用以提升数据读取效率,减轻后端并发压力。当缓存中查询不到数据,可穿透至磁盘数据库中获取,同时,重启服务、缓存实例时,可从磁盘数据库中获取数据进行预热,降低后端服务在启动初期的压力。
db为数据库编号,不传则默认为0。 {target_redis_address} 目标Redis实例地址,格式与from相同。 以下示例表示将本地Redis数据库的第0个DB的数据迁移到192.168.0.153这台Redis数据库中,其中密码以*替代显示。
单机实例主要服务于数据不需要由缓存实例做持久化的业务场景,如数据库前端缓存,用以提升数据读取效率,减轻后端并发压力。当缓存中查询不到数据,可穿透至磁盘数据库中获取,同时,重启服务/缓存实例时,可从磁盘数据库中获取数据进行预热,降低后端服务在启动初期的压力。
订单处理:后端服务器会将订单信息保存到数据库中,并进行异步处理,例如发送消息通知用户订单状态。 缓存更新:后端服务器会更新缓存中的商品库存信息,以便处理下一次秒杀请求。 秒杀过程中多次访问数据库,下单通常是利用行级锁进行访问限制,抢到锁才能查询数据库和下单。
业务应用 使用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中为例,介绍数据迁移的过程。 升级Redis 3.0实例到高版本实例 本章节介绍如何通过数据迁移+交换实例IP的方式升级Redis 3.0实例到高版本。
无法拆分的大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及以上版本。