谁说Redis不能存大key
摘要:推荐使用GaussDB(for Redis)搞定"大key"存储,从根本上解决社区版Redis使用风险。
本文分享自华为云社区《华为云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技术探秘→华为各领域的前沿技术、重磅开源项目、创新的应用实践,站在智能世界的入口,探索未来如何照进现实,干货满满点击了解

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
解锁tRPC高性能密码:网络方案简介!
导语 | 本文介绍了部分高性能网络方案,包括RDMA、HARP、io_uring等。从技术原理、落地可行性等方面,简要地做出分析,希望能对此方面感兴趣的开发者提供一些经验和帮助。 一、背景 业务中经常会有这样的场景: 随着网卡速率的提升(10G/25G/100G),以及部分业务对低延迟的极致追求(1ms/50us),目前的内核协议栈由于协议复杂、流程复杂、设计陈旧等因素,已经逐渐成为业务瓶颈。 业界已经有部分RDMA、DPDK的实践,但是对于大多数开发者而言,依然比较陌生。 那么这些方案各自的场景究竟怎样?是否能够为更多的业务赋能?以下是阶段性简要总结。 二、RDMA (一)原理简介 相对于传统的网络协议栈,RDMA提供的关键特性即为:Kernel Bypass,也即利用专用的NIC(网卡)进行硬件层面的协议传输、编解码(Offload),通过内存映射技术直接与用户态程序交互,从而避免了复杂低效的内核中介。 基于这种设计,随之提供几个额外的重要特性: Zero-Copy:基于DMA操作,通信全程没有额外的CPU介入拷贝,从而降低CPU消耗。 稳定低延迟:由于硬件通路的可靠性,从...
- 下一篇
Android对so体积优化的探索与实践
减小应用安装包的体积,对提升用户体验和下载转化率都大有益处。本文将结合美团平台的实践经验,分享 so 体积优化的思路、收益,以及工程实践中的注意事项。本文将先从 so 文件格式讲起,结合文件格式分析哪些内容可以优化,然后再具体讲解每项优化手段以及注意事项,最后介绍相关的工程实践经验。希望能对从事包体积优化的同学有所帮助或启发。 1. 背景 应用安装包的体积影响着用户的下载时长、安装时长、磁盘占用空间等诸多方面,因此减小安装包的体积对于提升用户体验和下载转化率都大有益处。Android 应用安装包其实是一个 zip 文件,主要由 dex、assets、resource、so 等各类型文件压缩而成。目前业内常见的包体积优化方案大体分为以下几类: 针对 dex 的优化,例如 Proguard、dex 的 DebugItem 删除、字节码优化等; 针对 resource 的优化,例如 AndResGuard、webp 优化等; 针对 assets 的优化,例如压缩、动态下发等; 针对 so 的优化,同 assets,另外还有移除调试符号等。 随着动态化、端智能等技术的广泛应用,在采用上述优化手...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS8编译安装MySQL8.0.19
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Red5直播服务器,属于Java语言的直播服务器
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7