写点什么

谁说 Redis 不能存大 key

  • 2022 年 6 月 09 日
  • 本文字数:1621 字

    阅读完需:约 5 分钟

本文分享自华为云社区《华为云GaussDB(for Redis)揭秘第18期:谁说Redis不能存大key》,作者: 高斯 Redis 官方博客 。

一、社区版 Redis 的大 key 痛点


GaussDB(for Redis)专家小强最近有点忙,因为很多客户经理都来找他咨询社区版 Redis 的大 key 问题,且一个个都求知欲爆表:



小强一拍大腿:你们还真问对人了!


根据现网经验,生产环境因为大 key 导致的 Redis 事故屡见不鲜,其中典型的有扩容失败、请求阻塞、OOM 宕机等等。早期业务规划不充分、消息队列消费不及时、未及时清理无效数据等原因都可能引入大 key 隐患。


社区版 Redis 大 key 隐患常见于以下三大场景


  • 内存消耗不均衡,大 key 所在分片有 OOM 风险

  • 扩容时需要搬迁部分数据,大 key 耗时久,会导致访问阻塞甚至数据丢失

  • 删除或过期大 key 时,业务访问被长时间阻塞,甚至导致主从同步中断


社区版 Redis 架构并不适合可靠存储大 key,业界也只能建议预防、拆分或及时清理大 key。从客户视角出发,其实有些场景是需要大 key 的,例如企业 ERP 系统,海量货币汇率存储等。这时即使适当拆分,也避免不了较大 HASH key 存在。

二、华为云 GaussDB(for Redis)的大 Key 解决方案


小强始终认为,好的产品应当尽量把复杂留给自己,把简单留给用户。因此,小强给每一位来咨询大 key 问题的客户经理都安利了 better 解决方案——


使用华为云企业级 KV 数据库 GaussDB(for Redis)


大 key 场景下,GaussDB(for Redis)究竟比社区版 Redis 优秀在哪?下面从 3 个角度深度分析:

1. 高斯 Redis 支持大 key 存储,不用担心分片 OOM


  • 社区版 Redis 存储大 key 会导致分片内存消耗不均,随着集群整体数据量水位提升,大 key 所在分片随时有 OOM 风险。



  • 高斯 Redis 支持大 key 可靠存储,且不会导致分片 OOM。需要注意的是,虽然高斯 Redis 适合用来可靠存储大 key,但从网络链路角度考虑,业务应避免对大 key 执行诸如 hgetall 等风险命令。


2. 高斯 Redis 在大 key 场景中也支持秒级无损扩容


  • 社区版 Redis 在扩容时,由于要搬迁数据,此时画风是这样的:



图:社区版 Redis 在大 key 场景扩容,风险高


可以总结为:有大 key,开源 Redis 请谨慎扩容!


  • 高斯 Redis 支持秒级扩容,并支持升规格、加节点、加存储容量 3 种手段灵活扩容,运维体验极佳。‍


                                                                       

图:高斯 Redis 在大 key 场景可安全扩容


从上图可以看出,高斯 Redis 采用计算、存储分离架构,扩容时不必搬迁任何数据,因此速度、稳定性都远超社区版 Redis。有大 key,高斯 Redis 可以放心扩容!

3. 高斯 Redis 删除/过期大 key 时,业务 0 阻塞


  • 社区版 Redis 大 key 的删除/过期都会导致访问严重阻塞。实测删除/过期一个大 hash key(包含 1000w 个元素),社区版 Redis 访问阻塞长达整整 14 秒。



图:社区版 Redis 在大 key 删除场景阻塞业务访问


虽然社区版 Redis 提供了“异步”的 unlink 命令能够一定程度上缓解大 key 阻塞问题,但 unlink 并非严格异步,例如对于 zset 类型(skiplist 编码)以及全部 string key 都只能阻塞删除,风险不可控。


  • 高斯 Redis 从根本上解决了大 key 删除/过期操作隐患。在高斯 Redis 中,对任何数据执行删除/过期,都是立刻执行成功且 0 阻塞。这是由于底层采用了真正的“标记删除”,因此完全不影响业务访问。实测删除/过期一个大 hash key(包含 1000w 个元素),高斯 Redis 仅毫秒级


三、总结


根据上述对比评测,可看出相比社区版 Redis 的实际表现,高斯 Redis 更适用于大 key 的可靠存储场景。除了能解决业务大 key 痛点外,高斯 Redis 在稳定性、可靠性、安全性等方面也有全面的提升。


华为伙伴暨开发者大会 2022 火热来袭,重磅内容不容错过!

【精彩活动】

勇往直前·做全能开发者→12 场技术直播前瞻,8 大技术宝典高能输出,还有代码密室、知识竞赛等多轮神秘任务等你来挑战。即刻闯关,开启终极大奖!点击踏上全能开发者晋级之路吧!

【技术专题】

未来已来,2022 技术探秘→华为各领域的前沿技术、重磅开源项目、创新的应用实践,站在智能世界的入口,探索未来如何照进现实,干货满满点击了解


点击关注,第一时间了解华为云新鲜技术~

发布于: 刚刚阅读数: 4
用户头像

提供全面深入的云计算技术干货 2020.07.14 加入

华为云开发者社区,提供全面深入的云计算前景分析、丰富的技术干货、程序样例,分享华为云前沿资讯动态,方便开发者快速成长与发展,欢迎提问、互动,多方位了解云计算! 传送门:https://bbs.huaweicloud.com/

评论

发布
暂无评论
谁说Redis不能存大key_数据库_华为云开发者联盟_InfoQ写作社区