说起缓存框架, 我们最常用的缓存框架有 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 还支持了将数据持久化到本地文件, 这样当发生意外时就不需要再从数据库读取一遍数据了, 直接读取本地文件恢复即可.
到底哪一个好?
从两个缓存框架的发展历程来看, 我们可以知道 Redis 是 Memcached 的升级版本, Memcached 具有的功能 Redis 基本上都具备了.
所以很多时候我们都是使用 Redis 作为首选的缓存框架, 当然了 Memcached 也有一些比 Redis 好一些的性能, 比如在存储完全静态的小量 key-value 数据时, Memcached 会比 Redis 快一些.
但只要数据量稍微大一点, 或者数据是动态的, 那么 Memcached 的性能就会直线下降.
所以即使 Memcached 在某些方面有细微的优势, 但总体上 Redis 还是优于 Redis 这个缓存框架的.
来源: https://www.cnblogs.com/chanshuyi/p/the_history_of_database_02.html