本文分享自华为云社区《Redis现网那些坑:用个缓存,还要为磁盘故障买单?》,作者: GaussDB 数据库 。

近日,网上一些电商用户出现了库存业务查询超时的现象,深究根源,是其使用的Redis云服务底层SSD卡硬件故障,影响了Redis的稳定性,最终导致业务超时。

此时笔者脑中闪过一连串问号:

那么,缓存Redis究竟为啥绕不过磁盘这道坎呢?

从技术角度讲,使用缓存Redis还要配磁盘,一方面是因为开源Redis依赖持久化机制,保证宕机后能取回一部分数据,另一方面这也是主从同步必不可少的。开源Redis提供了两种持久化方案——RDB和AOF,其中:

  1. RDB是通过对内存打快照的方式,将数据备份到磁盘。开源Redis主从之间全量同步就依赖于RDB文件。

  2. AOF是通过日志追加的方式记录数据变化。开源Redis宕机重启可用AOF文件加载“较为完整”的数据。

想到这里,笔者恍然大悟:电商用户的现网问题,原来就在于RDB和AOF机制都要进行磁盘IO,而磁盘故障直接影响了Redis的持久化,进而阻塞了Redis的正常服务!

除此之外,缓存Redis的持久化还有各种缺陷:

  1. AOF写入频率通常只能配置为秒级,在Redis动辄十万QPS的情况下,宕机时仍会有大量数据无法找回;

  2. 数据量越大,重启加载AOF越缓慢;

  3. RDB的生成和AOF重写都会引发fork问题,造成性能抖动。

由此可见,缓存Redis的持久化既不稳定、也不可靠,甚至还会因为磁盘性能、fork问题导致上层业务不稳定。然而出于数据“相对”安全、可靠的需求,缓存Redis还真就跨不过磁盘这道坎。

自建Redis的朋友们难免遇到这种窘境:最开始配了一个普通磁盘,后来遇到各种持久化阻塞服务的问题,不得不对磁盘进行升级。回顾前文的Redis实例故障,我们不难发现:缓存Redis的持久化与磁盘问题似乎永远无法令人放心。

那么,是否有一劳永逸的方案,可以和Redis持久化带来的问题说拜拜呢?

GaussDB(for Redis)作为华为云主推的企业级Redis,有着稳定可靠的天然优势,其基于存算分离、多副本强一致的架构,摒弃了RDB/AOF机制,彻底解决了开源Redis持久化性能不稳定、数据不一致、磁盘不可靠等问题,帮助企业用户真正实现降本增效。

那GaussDB(for Redis)都有哪些“黑科技”呢?

  1. 采用SPDK技术,通过用户态、异步、无锁、轮询的方式驱动磁盘,相比开源Redis内核态驱动,速度大幅提高。

  2. 高性能分布式共享存储池采用RDMA和DPDK技术,极大提高了系统吞吐量,加速数据处理,降低通信延迟。

  3. 采用SCM技术,将接近内存的性能和速度,与类似SSD的容量和成本结合起来,打造强悍底座。

正是如此,GaussDB(for Redis)在保证数据命令级落盘的同时,能够轻松支持百万级QPS的高并发访问,以及亚毫秒级时延。其底层使用高性能分布式共享存储池,不会因磁盘故障而阻塞服务;同时,硬件成本又远低于缓存Redis,且数据量越大性价比越高。

既然Redis离不开持久化、离不开磁盘,那何不选择一款兼具性能与持久化优势的Redis数据库呢?就如上文提到的电商场景,GaussDB(for Redis)凭借独有的强一致、稳定性、ACID事务,不但能轻松搞定“库存”业务,其强大的持久化能力更能够为企业核心数据存储保驾护航。

  • 本文作者:华为云数据库GaussDB(for Redis)团队

  • 更多产品信息,欢迎前往华为云GaussDB(for Redis)官网

  • 杭州/西安/深圳简历投递:yuwenlong4@huawei.com

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

Redis现网那些坑:用个缓存,还要为磁盘故障买单?相关推荐

  1. 雪糕大军纷纷网红出道,“天价”背后是什么让消费者买单?

    今年6月以来,微博.抖音关于"天价雪糕"."雪糕跨界"."雪糕刺客"的话题屡屡上热门,3元以下的雪糕越来越少,冰柜里一些不起眼的小雪糕,一结 ...

  2. redis核心技术与实战(二)缓存应用篇

    1.<旁路缓存:redis 在缓存中工作原理> 1.缓存的两个特征 1.什么是缓存,有什么特征? 磁盘->内存->cpu 之间读写速度差异巨大,为了平衡他们之间的差异,操作系统 ...

  3. 【内存泄漏】一个现网问题告诉你血淋淋的事实:java内存泄漏很严重

    目录 什么是内存泄漏 GC原理 GC Roots对象 java内存模型 现网问题 如何发现和解决 总结,什么情况下会出现内存泄漏 很多同学可能都有一个误解,C++才需要程序员自己管理对象的生命周期,在 ...

  4. 禁止套娃!Redis官网宕机,返回“连接不上Redis”

    点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:Spring Boot + Vue 如此强大?竟然可以开发基于 C/S 架构的应用个人原创+1博客:点击前往,查 ...

  5. 使用Java读取 “Python写入redis” 的数据踩坑记录

    https://my.oschina.net/u/2338224/blog/3061507 使用Java读取 "Python写入redis" 的数据踩坑记录 https://seg ...

  6. asp.net 研发,测试,或现网....非本机环境采用附加进程的方式在本地调试

    1.在本地IIS配置一个站点,或虚拟目录跟 研发,测试,或现网....的url结构一致,IP地址:127.0.0.1,主机头跟要调试的环境一致:如:g0.xx.10086rd.cn 2.hosts配置 ...

  7. 使用准现网的数据,使用本地的样式脚本,本地调试准现网页面(PC适用)

    原理: 本地逻辑,重新渲染 步骤: 1.安装插件:Tampermonkey 度盘:https://pan.baidu.com/s/1bpBVVT9 2.设置: 点击插件-->仪表盘 添加脚本 将 ...

  8. redis和mysql双写一致_缓存与库双写一致,这种“老大难”怎么给它制服?

    日常生产场景中,为了避免大量请求同时打在数据库上导致故障,数据库+缓存的方式已经成了日常标配. 对于读取的部分,大家都很熟悉.但是对于写的部分,到底是先写库还是先写缓存,这点可能困扰着很多人. 旁路缓 ...

  9. 广和通携手中国联通研究院、中科创达现网验证全球首例5G模组端到端多切片方案

    当前5G处于规模发展的关键时期,5G行业模组成熟发展是推进5G规模应用的关键环节.目前5G模组价格仍然较高,行业需求较为碎片化,且5G最具特色的功能5G网络切片尚未在行业模组上探索出成熟端到端解决方案 ...

最新文章

  1. php字符串中删除字符串函数,PHP 实现删除任意区间内字符串函数方法
  2. centos查看是否安装了某个软件
  3. c语言怎么判别输入字母大小,使用C语言判断英文字符大小写的方法
  4. 在Linux中使用matplotlib进行科学画图
  5. 杭电1229 还是A+B
  6. lpop 原子_这个知识孩子掌握了吗?初中化学原子的结构知识梳理
  7. 【HTML CSS JS 蝴蝶飞舞特效 绝美(附完整代码)】
  8. Google Earth Engine APPS(GEE)——使用 AREA2 和 CODED 估算森林砍伐和退化面积(第 1 部分:运行 CODED)
  9. MATLAB并行计算
  10. 中山技术学院计算机学院,计算机科学与技术学院
  11. android service录音,android录音并上传至服务器
  12. Vue对高德地图2.0的封装使用
  13. Python开发【第二章】python入门
  14. 神奇密码锁 bfs
  15. 中望CAD的引线标注格式怎么改_没想到啊,原来CAD命令还可以这样学习
  16. Ubuntu下用C++调用opencv实现点阵字
  17. demo1:番茄时钟
  18. NB-IoT的相关资料整理(基本概念,技术优势,典型案例和当前的进展)
  19. 成都c++语言青少年培训,成都小孩学信息学奥赛的好处-成都童程童美少儿编程培训金沙校区...
  20. 【C语言】!x是什么意思?怎么判断真假?

热门文章

  1. 原型磨刀 开源一样的_晚餐也可以像开源一样
  2. foss测试_FOSS的业务真的是社区软件吗?
  3. (6)<a>标签如何实现点击既不刷新也不跳转的功能
  4. TypeScript 中类型 any,void,unknown,never之间的区别
  5. 深度学习笔记(29) 1×1 卷积
  6. 计算机d盘的权限怎么解决,D盘没权限,不能删除更改任何文件解决方法
  7. Android提权root漏洞,【转】结合init源码剖析android root提权漏洞(CVE
  8. 红旗linux的安装命令,红旗linux安装【处理思路】
  9. mysql 开启binglog
  10. dirname,basename的用法与用途