0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

GaussDB(for Redis) 特性揭秘:大 key 治理

jf_94205927 来源:jf_94205927 作者:jf_94205927 2024-03-28 22:06 次阅读

从 DBA 的视角看,大 Key 无疑是引起 Redis 线上问题的常见原因。为了解决大 Key 隐患,业务首先要遵守合理的开发规范,减少大 Key 的产生和访问依赖。但有时大 Key 是在程序运行过程中悄悄产生的,让人防不胜防。因此,一款可随时在线诊断,且能主动预警,防患于未然的 Redis 服务产品显得尤为重要。

作为由华为云精心打造的企业级 Redis,GaussDB(for Redis)提供了完备的大 Key 解决方案,支持大 Key 在线诊断、监控预警、承载力强等能力,让 DBA 如虎添翼。

GaussDB(for Redis)

支持大 Key 在线诊断

GaussDB(for Redis)采用计算、存储分离的高可靠架构,每个计算节点上都部署有后台任务。GaussDB(for Redis)通过后台任务持续检测分析存储池中的大 key 情况,用户执行命令时直接取结果,不会影响线上业务,跟业界阻塞式全量扫描方式相比,更安全。

wKgZomYFeOCAed07AAI8IiCcEsM153.png

用户执行 bigkeys 命令后,将直接从节点上获取“答案”,不用全库扫描引起不必要的性能影响。

wKgZomYFeOuASaplAARdBFoUhmE077.png

此外,GaussDB(for Redis)支持用户自定义大 key 标准,比如大于 1MB 的 string、大于 10000 个元素的 hash 类型等。该功能一经推出,收获了很多客户和 DBA 小伙伴的认可及点赞。

GaussDB(for Redis)

支持大 key 监控预警

分享两个真实案例:

1、业务周期性执行“lrange 0 -1”获取 list key 的所有元素。但由于程序 bug,业务也同时在长期、缓慢地向这个 key 中持续追加,导致 key 越来越长。直到线上业务出问题,几经波折,才发现了这个危险的大 Key。

2、业务长期稳定运行,有一天有新组件上线,线上业务开始不断超时。几经排查,发现新组件对 Redis 执行 hmset f1 v1 f2 v2……,一条写入命令携带了长达 2 万个参数,严重影响了生产业务。

从 DBA 的角度,这类问题需要一个“大 Key 侦探”时刻盯防,一旦有对大 Key 的高危操作,立刻主动预警。

GaussDB(for Redis)设计了 10+监控指标,提供“大 Key 侦探”的能力,例如:单个请求回包的最大元素个数(识别 lrange 0 -1 操作大 key 引起阻塞的场景)、单个请求携带的最大参数个数(识别 hmset 上万元素批导引起阻塞的场景)……DBA 只需要根据多年经验,将这类指标订阅告警,即可在第一时间“抓住大 Key 案发现场”,将风险扼杀于萌芽状态。

GaussDB(for Redis)

对大 Key 的承载能力更强

即使在大 Key 存在的一些业务场景,GaussDB(for Redis)的表现也是远优于开源 Redis 的。下面将介绍大 Key 经常引起的一些问题:

1、大 key 引发了 CPU 100%,阻塞生产业务

在开源 Redis 中,大 key 容易引起 CPU 占用 100%,使生产业务受损,引起线上问题。这是因为开源 Redis 本身就是单线程,尤其在这种比较脆弱的架构下使用大 key,更容易引起线程阻塞,从而影响整个实例。

GaussDB(for Redis)的多线程架构天然就对大 key 更友好,不会有这个问题困扰。即使单个线程被个别大 Key 影响,整个 GaussDB(for Redis)实例包含数十、上百个线程,整体业务基本都不会受到干扰。

2、大 key 因个别分片带宽高,被 Redis 频繁“流控”

目前市面上有一些开源 Redis 是基于一个大的容器混合部署很多租户的 Redis 进程,但在这种架构下,为了避免一个客户的 Redis 影响其他客户,往往会对客户的 Redis 进程进行流量控制,当某个客户业务中对大 key 有较为频繁的操作时,很容易触发给客户设定的该租户的带宽阈值并触发流控,从而导致线上业务受损。

相比之下,GaussDB(for Redis)的每个分片都是一个独立的容器,是客户的独享资源,更可靠,连接数、带宽等资源不设主动流控,尤其是节点带宽资源的“天花板”非常高。

3、大 key 导致倾斜,分片内存占用不均匀

开源 Redis 集群中,存储大 key 会导致内存空间不均匀、消耗不均衡,大 key 所在分片有 OOM 风险。

wKgaomYFePeAD17CAAK7QGdY_C0279.png

GaussDB(for Redis)采用高性能存储池,不会对某个节点分片造成数据量的倾斜,支持大 key 可靠存储,不会导致分片 OOM。

wKgaomYFeQOAY7nQAAQi8So7m3Q466.png

4、Redis 扩容时要搬迁数据,大 key 总引起问题

开源 Redis 扩容时,由于涉及数据跨片搬迁,扩容过程耗时久,存在访问阻塞的风险。如图所示,因此开源 Redis 在有大 key 的情况下,扩容必须谨慎!

wKgaomYFeSuAOiNMAAQlTIEv-MU291.png

GaussDB(for Redis)支持秒级无感扩容,不论扩容量,还是扩 CPU,都不需要搬迁数据,因此也不受大 Key 影响,运维体验极佳。

wKgZomYFeR2AANsSAATJrsXY5L0225.png

本文介绍了 GaussDB(for Redis)的大 Key 诊断、大 Key 预警特性,以及在大 Key 场景下如何解决开源 Redis 的稳定性痛点,为客户提供了高效可靠的大 Key 解决方案。未来,GaussDB(for Redis)将持续致力于开发更多好用的企业级特性,帮助客户轻松运维,高效开发。

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 开源
    +关注

    关注

    3

    文章

    3323

    浏览量

    42474
  • DBA
    DBA
    +关注

    关注

    0

    文章

    18

    浏览量

    7882
  • Redis
    +关注

    关注

    0

    文章

    374

    浏览量

    10871
收藏 人收藏

    评论

    相关推荐

    Redis缓存与Memcached的比较

    关键特性和差异: 1. 数据存储 Redis: Redis是一个开源的键值存储,支持多种数据结构,如字符串、列表、集合、有序集合、散列、位图、超日志和地理空间索引。 它支持持久化,可以将内存中的数据保存到磁盘,支持RDB(快照)
    的头像 发表于 12-18 09:33 115次阅读

    聊聊缓存击穿的解决方法

    缓存击穿,Redis中的某个热点key不存在或者过期,但是此时有大量的用户访问该key。比如xxx直播间优惠券抢购、xxx商品活动,这时候大量用户会在某个时间点一同访问该热点事件。但是可能
    的头像 发表于 10-23 13:54 170次阅读

    缓存有大key?你得知道的一些手段

          背景: 最近系统内缓存CPU使用率一直报警,超过设置的70%报警阀值,针对此场景,需要对应解决缓存是否有大key使用问题,扫描缓存集群的大key,针对每个key做优化处理。 以下
    的头像 发表于 06-19 09:38 738次阅读
    缓存有大<b class='flag-5'>key</b>?你得知道的一些手段

    Redis 开源协议调整,我们怎么办?

    2 024 年 3 月 20 日, Redis 官方宣布,从 Redis 7.4 版本开始,Redis 将获得源可用许可证 ( RSALv2 ) 和服务器端公共许可证 ( SSPLv1 ) 的双重
    的头像 发表于 05-09 22:59 429次阅读
    <b class='flag-5'>Redis</b> 开源协议调整,我们怎么办?

    华为云 GeminiDB 发布新版本,全面支持 Redis 6.2

    华为云 GeminiDB 是一款兼容 Redis 协议的弹性 KV(Key-Value)数据库,支持远超内存的容量和极致的性能,可支撑用户平滑迁移,在广告、游戏、电商等行业有着广泛的应用。 今年 3
    的头像 发表于 04-08 18:22 1121次阅读
    华为云 GeminiDB 发布新版本,全面支持 <b class='flag-5'>Redis</b> 6.2

    Redis开源版与Redis企业版,怎么选用?

    点击“蓝字”关注我们数以千计的企业和数以百万计的开发人员Redis开源版来构建应用程序。但随着用户数量、数据量和地区性的增加,成本、可扩展性、运营和可用性等问题也随之而来。Redis企业版
    的头像 发表于 04-04 08:04 1052次阅读
    <b class='flag-5'>Redis</b>开源版与<b class='flag-5'>Redis</b>企业版,怎么选用?

    数据安全没保障?GaussDB(for Redis) 为你保驾护航

    未知的 key,实际上可能面临数据库信息丢失和记录篡改的风险。 作为一个重视威廉希尔官方网站 的团队,我们始终将用户信息安全和使用体验放在第一位。对于这次用户使用开源 Redis 遇到的问题,我们盘点了 GaussDB(for
    的头像 发表于 03-28 22:09 673次阅读
    数据安全没保障?<b class='flag-5'>GaussDB</b>(for <b class='flag-5'>Redis</b>) 为你保驾护航

    GaussDB(for Redis) 特性揭秘:多租户管理

    华为云 GaussDB(for Redis)持续完善企业级增强特性,是名副其实的 "Redis Plus" ,其中很经典的企业级特性是 多租
    的头像 发表于 03-28 22:06 743次阅读
    <b class='flag-5'>GaussDB</b>(for <b class='flag-5'>Redis</b>) <b class='flag-5'>特性</b><b class='flag-5'>揭秘</b>:多租户管理

    GaussDB(for Redis) 游戏实践:玩家下线行为上报

    实现以上功能时,感知用户下线行为延迟较大,导致上报时间不准确。华为云 GaussDB(for Redis)作为一款企业级游戏数据库,具备卓越的企业级能力,能及时上报用户下线行为,并被广泛应用于排行榜等多种业务场景。 基于 Redis
    的头像 发表于 03-28 22:03 519次阅读

    新版 Redis 不再“开源”,对使用者都有哪些影响?

    2024 年 3 月 20 日,Redis Labs 宣布从 Redis 7.4 开始,将原先比较宽松的 BSD 源码使用协议修改为 RSAv2和 SSPLv1协议。该变化意味着 Redis
    的头像 发表于 03-27 22:30 488次阅读
    新版 <b class='flag-5'>Redis</b> 不再“开源”,对使用者都有哪些影响?

    Redis官方搜索引擎来了,性能炸裂!

    RediSearch 是一个 Redis 模块,为 Redis 提供查询、二级索引和全文搜索功能。
    的头像 发表于 02-21 10:01 2329次阅读
    <b class='flag-5'>Redis</b>官方搜索引擎来了,性能炸裂!

    MongoDB和Redis的威廉希尔官方网站 特性

    Redis作为一个高性能的内存数据存储系统,能够提供快速的缓存机制,从而帮助应用承受高并发请求,显著提高系统响应速度和吞吐量。这与国内互联网公司推崇的快速迭代和高用户并发量的特点非常契合。
    的头像 发表于 02-01 11:42 501次阅读
    MongoDB和<b class='flag-5'>Redis</b>的威廉希尔官方网站
<b class='flag-5'>特性</b>

    Redis7单线程与多线程详解

    主要是指Redis的网络IO和键值对读写是由一个线程来完成的。
    的头像 发表于 01-16 17:33 1849次阅读
    <b class='flag-5'>Redis</b>7单线程与多线程详解

    一分钟,自动完成Redis数据迁移

    NineData提供了高效、安全的Redis不停机数据迁移方案。与传统迁移方案相比,NineData具备简单易用、强劲性能和高可靠性的优势。通过优化核心威廉希尔官方网站 ,NineData的迁移性能达到了16万个
    的头像 发表于 01-08 11:34 421次阅读
    一分钟,自动完成<b class='flag-5'>Redis</b>数据迁移

    linux下Redis常用命令使用

    redis重启,缓存数据还在,redis清缓存数据
    的头像 发表于 12-27 09:56 6521次阅读
    linux下<b class='flag-5'>Redis</b>常用命令使用