mysql与redis的区别与使用场景

起因

写这篇博客是有一个起因的,来自于我身边一个朋友面试的经历。我朋友跟我讲她面试的经历:面试官问她:什么时候用mysql?什么时候用redis?我朋友可能对这个问题不是很了解,说了句:缓存用redis

在这里插入图片描述
我当时也就打趣的笑过了,当作一个笑料。
聊天记录1
并没有过多的讨论,我以为下来之后她知道了这个问题的答案。但是没隔一会儿,她找来一张图,然后给我说:我靠,居然还是对的
聊天记录2
应该是别人做的总结,上面有一个红色的小箭头,指向了一句话:redis用于缓存。这、、、、、

有些话正着说是对的,反过来说就不对了,“redis用于缓存”这句话没毛病,但是“缓存用redis”这句话就有点欠妥了。因为缓存是一种抽象的概念,而redis是实现缓存的其中一种技术,还有别的实现缓存的技术,缓存是一个范围更大的概念。缓存之于redis就像动物之于猴子,说猴子是动物可以,但是说动物是猴子就不对了。后面介绍了mysql和redis之后再说具体的说一下这个问题。

正文

mysql与redis都属于数据库,用于存储数据的,我们平时在网上冲浪,那么多信息供我们浏览,这些信息就是用数据库进行存储的。数据库经过几十年的发展,形式已经多种多样,就目前而言,主流的类型有两种,关系型数据库和非关系型数据库,而mysql和redis就是这两种数据库的典型代表。

各自介绍

分别介绍mysql和redis,当然,我自己用语肯定不太准确,所以我摘抄了维基百科的描述。

mysql

MySQL(官方发音为/maɪ ˌɛskjuːˈɛl/“My S-Q-L”[5],但也经常被错误读作/maɪ ˈsiːkwəl/“My Sequel”)原本是一个开放源码的关系数据库管理系统,原开发者为瑞典的MySQL AB公司,该公司于2008年被昇阳微系统(Sun Microsystems)收购。2009年,甲骨文公司(Oracle)收购昇阳微系统公司,MySQL成为Oracle旗下产品。

MySQL在过去由于性能高、成本低、可靠性好,已经成为最流行的开源数据库,因此被广泛地应用在Internet上的中小型网站中。随着MySQL的不断成熟,它也逐渐用于更多大规模网站和应用,比如中文维基百科、Google和Facebook等网站。非常流行的开源软件组合LAMP中的“M”指的就是MySQL。

但被甲骨文公司收购后,Oracle大幅调涨MySQL商业版的售价,且甲骨文公司不再支持另一个自由软件项目OpenSolaris的发展,因此导致自由软件社区们对于Oracle是否还会持续支持MySQL社区版(MySQL之中唯一的免费版本)有所隐忧,MySQL的创始人麦克尔·维德纽斯以MySQL为基础,成立分支计划MariaDB。而原先一些使用MySQL的开源软件逐渐转向MariaDB或其它的数据库。例如中文维基百科已于2013年正式宣布将从MySQL迁移到MariaDB数据库[6]。

以上内容摘抄自维基百科,更多内容可点击: MySQL维基百科描述 查看

redis

Redis是一个使用ANSI C编写的开源、支持网络、基于内存、分布式、可选持久性的键值对存储数据库。从2015年6月开始,Redis的开发由Redis Labs赞助,而2013年5月至2015年6月期间,其开发由Pivotal赞助。在2013年5月之前,其开发由VMware赞助。根据月度排行网站DB-Engines.com的数据,Redis是最流行的键值对存储数据库。

以上内容摘抄自维基百科,更多内容可点击: MySQL维基百科描述 查看

相同点

都同为数据库,所以相同点是都是用于存储数据的,emm,暂时就想到想到这点相同

不同点

  1. 存储的位置不同,mysql主要是将数据存储在物理硬盘上的,redis主要是将数据存储在内存中的。因为这点就会产生许多不同。物理硬盘成本更低,断电也仍然存在,更加安全可靠,但是基于硬盘的io操作会更加耗时。而redis将数据存储在内存中,断电就消失,所以相对而言会不安全一些,而且内存的成本比硬盘更高,但是基于内存的读写效率会更高。根据redis官方给出的数据,50个并发执行100000个请求,读的速度是110000次/s,写的速度是81000次/s
  2. 存储数据的形式不同,mysql数据是存储在表中,表中有许多的字段,每条记录里包含多个字段,每个字段有不同的含义。而redis存储数据是以键值对的形式,一个键对应一个值。

使用场景

mysql和redis不是非此即彼的关系,而是相辅相成的关系,通常而言是mysql主redis辅。那么在使用是如何选择呢,其实选择是基于他们的特点的。因为redis的读写效率高、成本高,所以会用在对性能更高的场合,比如秒杀、抢购、实时排行榜等。而mysql可以存储大量的数据,持久化到硬盘,性价比高,在性能要求不是那么高的场合都建议采用mysql。使用mysql+redis时,需要对数据做同步。

结束语

回到我们文章开头的问题:“缓存用redis”这句话,其实不太严谨的。用于回答“什么时候用mysql什么时候用redis”这个问题更是欠妥的。就好像人家问:什么时候用私家车什么时候用滴滴?你回答说:打车用滴滴。滴滴打车是打车的一个具体实现,还有其他的打车,比如美团。redis也是缓存的一种具体实现,还有很多别的缓存技术,比如: memcache、squid、varnish、web cache、 CDN等等,所以用“redis用于缓存”来回答是非常欠妥的,但是如果单独拿这句话来说,也不算错。正确的回答是:分析mysql和redis各自的利弊,然后举例一些具体的使用场景。

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值