数据库历险记(二) | Redis 和 Mecached 到底哪个好?

文章首发于微信公众号「陈树义」,专注于 Java 技术分享的社区。点击链接扫描二维码,与500位小伙伴一起共同进步。微信公众号二维码 http://p3npq6ecr.bkt.clouddn.com/blog/chenshuyi_gongzhonghao_guide_full.jpg

说起缓存框架,我们最常用的缓存框架有 memcached、Redis 这两个,但它们之间其实是有差异的。

Memcached 的诞生

2003年5月,Brad Fitzpatrick 发布了第一个版本的 Memcached,一开始主要是为了解决 LiveJournal 网站访问缓存问题而诞生的,这个版本的 Memcached 使用 Perl 语言编写。之后 Anatoly Vorobey 使用 C 重写了 Memcached。现在 Memcached 已经被广泛应用于 YouTube、Reddit、Facebook 等网站。

说起 Memcached 的诞生,主要还是因为关系型数据库在存储性能上的瓶颈。因为进入21世纪,随着个人电脑的普及,世界网民数量急剧攀升,网站的访问量也随之攀升。

因为关系型数据库需要将数据持久化,所以会有一些写硬盘IO的过程,因此在写入数据上会有瓶颈。而为了解决硬盘IO速度慢的问题,Memcached 则是将所有数据存储在了内存中,从而能实现快速的数据写入和读取。

也是因为 Memcached 将数据存储在内存中,没有实现持久化,所以当出现一些意外情况,例如:断电重启、机器宕机等情况,Memcached 存储的数据会全部丢失,我们只能重新从数据库中读取一次,再加载到 Memcached 中。

除此之外,Memcached只支持单一的 key-value 存储,所以这里面存储的数据类型单一,无法适应多样化的业务发展。

Redis 的诞生

正是因为以上问题的存储,所以在2009年5月的时候Redis诞生了。Redis创建者看到了Memcached身上存在的许多问题,所以创建了Redis缓存框架。

在Redis缓存框架中,它支持多达 6 种类型的数据存储,并且提供了多个原子命令操作。并且Redis还支持了将数据持久化到本地文件,这样当发生意外时就不需要再从数据库读取一遍数据了,直接读取本地文件恢复即可。

文章首发于微信公众号「陈树义」,专注于 Java 技术分享的社区。点击链接扫描二维码,与500位小伙伴一起共同进步。微信公众号二维码 http://p3npq6ecr.bkt.clouddn.com/blog/chenshuyi_gongzhonghao_guide_full.jpg

到底哪一个好?

从两个缓存框架的发展历程来看,我们可以知道Redis是Memcached的升级版本,Memcached具有的功能Redis基本上都具备了。

所以很多时候我们都是使用Redis作为首选的缓存框架,当然了Memcached也有一些比Redis好一些的性能,比如在存储完全静态的小量 key-value 数据时,Memcached会比Redis快一些。

但只要数据量稍微大一点,或者数据是动态的,那么Memcached的性能就会直线下降。

所以即使Memcached在某些方面有细微的优势,但总体上Redis还是优于Memcached这个缓存框架的。

文章首发于微信公众号「陈树义」,专注于 Java 技术分享的社区。点击链接扫描二维码,与500位小伙伴一起共同进步。微信公众号二维码 http://p3npq6ecr.bkt.clouddn.com/blog/chenshuyi_gongzhonghao_guide_full.jpg

posted @ 2018-05-28 09:36  陈树义  阅读(1648)  评论(7编辑  收藏  举报