背景:

面试官:redis你学过吧,听你的语气我想你redis学的不错吧?
我:…
面试官:那好,我问你一个很简答的问题哈,你说一下redis可以替换MySQL吗?你简单说一下就好。
我:(一般面试官让你简单说,我们绝对不能太简单)

下面是我在网上找到,总结到一起的答案。

因为Redis的性能十分优越,可以支持每秒十几万次的读/写操作,并且它还支持持久化、集群部署、分布式、主从同步等,Redis在高并发的场景下数据的安全和一致性,所以它经常用于这些场景:

经常要被查询,但是CUD操作频率低的数据;比如数据字典,确定了之后很少被修改,是可以放到缓存中的;还有热点数据,查询极为频繁的数据,放到Redis中可以减少MySQL的压力;

经常被查询,但是实时性要求不高数据,比如购物网站的热销排行榜,定时统计一次后把统计结果放到Redis中提供查询(请不要每次都使用select
top 10 from xxxx)。

缓存还可以做数据共享(Session共享),在分布式的架构中,把用户的Session数据放到Redis中。

高并发场景下的计数器,比如秒杀,把商品库存数量放到Redis中(秒杀的场景会比较复杂,Redis只是其中之一,例如如果请求超过某个数量的时候,多余的请求就会被限流);

因为Redis对高并发的支持和单线程机智,它也经常用作分布式锁;

redis是noSql,NoSQL本来就是【Not Only SQL】的意思,显然是跟SQL形成互补关系的应用。
redis可以作为存储的扩展部分,但是不能直接替换掉mysql。
redis对事务的支持还是比较简单的。但是redis的性能和扩展性比较好,使用起来比较方便。 现阶段的 MySQL 和 Redis
各有各的使用场景,在设计上的侧重点不同,谁也不能取代谁。

Redis本身是支持数据持久化的,很多有些程序员都会觉得Redis应该可以替代MySQL,但是我们在
使用一项技术的时候,不是看它能不能,而是要看它适合不适合;而在大部分场景下,Redis是无法替代MySQL的。

MySQL是关系型数据库,数据储存在磁盘上,数据的格式是我们熟知的二维表格的样式。关系型数
据库具有很多强大的功能;大部分都支持SQL语句查询,对事务也有很好的支持。

Redis被称作非关系型数据库,属于内存数据库,数据都储存在内存中(Redis有RDB持久化策略),
Redis支持的数据类型也比较多,比如字符串,HASH,List等。

MySQL和Redis没有竞争的关系,通常当并发访问量比较大的时候,特别是读操作很多,架构中可以引入Redis,帮助提升架构的整体性能,减少Mysql(或其他关系型数据库)的压力;

不是MySQL or Redis;而是MySQL + Redis ;

上面总结的不足以说明我们的问题,评论区有大佬说从关于宕机redis数据丢失的方向思考,作为论证去说明我们要论证的问题,我们看一下是否合适?

首先redis有自己数据集保存操作,当出现一下情况:

用户发送bgsave命令(此时redis会fork一个子进程,子进程负责生成硬盘文件,父进程负责继续接受命令)
用户发送save命令(和bgsave命令不同,发送save命令后,到系统创建快照完成之前系统不会再接收新的命令,换
句话说save命令会阻塞后面的命令,而bgsave不会) 用户在配置文件了配置了类似这样的命令 save 60 1000
这个的意思是说,自从上次快照成功算起,如果满足"60秒内有1000次写入"这个条件,系统就自动调用bgsave,如
果配置文件里有多个save命令,只有满足一个就调用bgsave命令
用户发送shutdown,系统会先执行save命令阻塞客户端,然后关闭服务器
当有主从架构时,从服务器向主服务器发送sync命令来执行复制操作时,只有主服务器当时没有进行bgsave操
作,那么主服务器就会执行bgsave操作。 快照的配置信息

redis会快照内存里的数据
当 Redis 需要保存 dump.rdb 文件时, 服务器执行以下操作: Redis 调用forks. 同时拥有父进程和子进程。

子进程将数据集写入到一个临时 RDB 文件中。

当子进程完成对新 RDB 文件的写入时,Redis 用新 RDB 文件替换原来的 RDB 文件,并删除旧的 RDB 文件。这种工作方式使得 Redis 可以从写时复制(copy-on-write)机制中获益。

快照功能并不是非常耐久(dura ble): 如果 Redis 因为某些原因而造成故障停机, 那么服务器将丢失最近写入、且仍未保存到快照中的那些数据。 从 1.1 版本开始, Redis 增加了一种完全耐久的持久化方式: AOF 持久化。

你可以配置 Redis 多久才将数据 fsync 到磁盘一次。有三种方式:

每次有新命令追加到 AOF 文件时就执行一次 fsync :非常慢,也非常安全
每秒 fsync 一次:足够快(和使用 RDB 持久化差不多),并且在故障时只会丢失 1 秒钟的数据。从不 fsync :将数据交给操作系统来处理。更快,也更不安全的选择。
推荐(并且也是默认)的措施为每秒 fsync 一次, 这种 fsync 策略可以兼顾速度和安全性。

所以从数据丢失的方向去论证这个问题不是特别有说服力,当然顺子上面的论证也不是那么有力,文章仅供参考。

(面试踩坑)redis可以替代MySQL吗?相关推荐

  1. 警惕参数变化,MySQL 8.0 升级避免再次踩坑

    MySQL 8.0新特性专栏目录 <MySQL开发规范>过时了,视图查询性能提升了一万倍 你真的会用EXPLAIN么,SQL性能优化王者晋级之路 索引三剑客之降序索引和不可见索引 千呼万唤 ...

  2. AB测试实战案例讲解及踩坑事项

    Hey,我是小z 今天我们来结合流程,讲讲具体的AB测试案例,以及AB测试中需要注意的问题,还有面试中可能会踩的坑. AB测试案例串讲 大体背景如下: 某社交APP增加了"看一看" ...

  3. “不会MySQL,干啥都不行!”高级开发:工作、面试处处都会踩坑!

    在说起 MySQL,我想每一个开发者都不会陌生,作为一个超 80% 开发者都在使用的数据库,几乎所有一线大厂,都在用! 01 多数人只掌握了一些皮毛 但是在我使用 MySQL 将近 20 年的过程中, ...

  4. 厚积薄发打卡Day55 :[狂神]Redis详细教程(上)<从Nosql 概述到WSL安装Redis踩坑记录>

    视频教程:[狂神说Java]Redis最新超详细版教程通俗易懂 Nosql概述 时代背景: 1.单机数据库时代 90年代:一个基本的网站访问量一般不会太大,单个数据库完全足够! 那个时候,更多的去使用 ...

  5. storm mysql spout_storm kafkaSpout 踩坑问题记录! offset问题!

    整合kafka和storm例子网上很多,自行查找 问题描述: kafka是之前早就搭建好的,新建的storm集群要消费kafka的主题,由于kafka中已经记录了很多消息,storm消费时从最开始消费 ...

  6. 数据库周刊28│开发者最喜爱的数据库是什么?阿里云脱口秀聊程序员转型;MySQL update误操作;PG流复制踩坑;PG异机归档;MySQL架构选型;Oracle技能表……

    文章来源:墨天轮社区 https://www.modb.pro/db/26343 摘要:墨天轮数据库周刊第28期发布啦,每周1次推送本周数据库相关热门资讯.精选文章.干货文档.本周分享 开发者最喜爱的 ...

  7. 15个必知的Mysql索引失效场景,别再踩坑了

    背景 无论你是技术大佬,还是刚入行的小白,时不时都会踩到Mysql数据库不走索引的坑.常见的现象就是:明明在字段上添加了索引,但却并未生效. 前些天就遇到一个稍微特殊的场景,同一条SQL语句,在某些参 ...

  8. 秋招面试总结:Java+并发+Spring+MySQL+分布式+Redis+算法+JVM等

    轰轰烈烈的秋招季已经开始,有人欢喜有人愁,不管你是喜是忧,学习总归是好的.这不,小编特地整理了一下秋招面试知识点+答案(JAVA岗),一起分享出来给大家看看~ 需要完整版的 知识点+答案 的朋友可以  ...

  9. 最新金九银十JAVA面试总结:Java+并发+Spring+MySQL+分布式+Redis+算法+JVM等

    ** 金九银十的面试旺季即将到来,大家准备的怎么样了?** 今年的处境大家都挺难的,但是也不要因此而堕落,太闲了,就多刷题.坚持学习总归是对自己有好处的. 在此,整理了下金九银十的面试知识点(附答案) ...

最新文章

  1. ubuntu18.04安装CUDA10.0
  2. 鱼眼相机标定_鱼眼相机模型(二)
  3. 用javascript实现的纵版飞行射击游戏—《天机》
  4. 编译原理视角下的 c c 语言左值教学,西安交通大学18年3月课程考试《编译原理》作业考核试题...
  5. Qt 学习之路 2(79):QML 组件
  6. Jquery中使用select2插件实现ajax实时请求数据
  7. 路径前缀是什么意思_Trie 树是什么样的数据结构?有哪些应用场景?
  8. 团队冲刺第一阶段第五天
  9. window ftp open命令打不开_Centos7上搭建ftp
  10. 阿里、美团、滴滴产品经理共述:产品经理的“乐”与“伤”
  11. std::sort使用
  12. JVM监控及诊断工具GUI篇之Arthas(二):jvm相关指令
  13. stm32实验报告心得体会_stm32实验报告心得体会
  14. 机器学习——sklearn实现决策树(隐形眼镜预测和鸢尾花分类)
  15. 网页版python编辑器-史上超强 Python 编辑器,竟然是张网页?!
  16. 720实训——智慧消防案例分析
  17. Python实现遗传算法求函数最值
  18. ios不行安卓可以 微信签名_微信支付-支付验证签名失败(iOS)
  19. 模式窗口window.showModalDialog()的用法
  20. Leetcode_49_Anagrams

热门文章

  1. 大学计算机基础课程 研究,【计算机基础论文】大学计算机基础课程改革研究(共2493字)...
  2. 正能量的句子 人生感悟 努力工作
  3. 给数学的孩子们推荐的十部经典电影~
  4. 【Unity3D日常开发】自动寻路系统Navigation实现人物上楼梯、走斜坡、攀爬、跳跃
  5. 支持android11的画质修改器,pubgtool安卓11专用版
  6. 计算机论文审题,计算机毕业论文写作指导
  7. 最新ESI各高校学科数统计出炉!附前1‱和1‰学科名单
  8. 关于MSE与MAE的比较。文章链接
  9. astar pathfinding 缝隙阻挡方案
  10. 改进电子白板客户端程序