Redis和Memcached使用场景

Memcahced还是Redis?这个问题,最近总是有人在讨论怎么提高由数据库驱动的Web应用性能问题,缓存通常是首选

3 min read
By myfreax
Redis和Memcached使用场景

Memcahced还是Redis?这个问题,最近总是有人在讨论怎么提高由数据库驱动的Web应用性能问题,缓存通常是首选

这些都是非常闻名的缓存引擎,它们也有相同的地方,但也有不同点,Redis比较新,而且有很多丰富的特性,几乎都是会优先选择,但也有例外的情况

相同点

Mecached和Redis都是内存key-value式存储,NoSQL管理方式,基于key-value数据模型,存储在内存中,在性能方面,两者性能差不多,相对于吞吐量和都延迟表现出几乎相同的指标。

除了内存keu-value数据存储,Memcached和Redis是非常流行的个人项目,Memcached源于2003年Fitzpatrick个人日志站点,从那以后,Memcached就用C进行重写(原来是使用Perl实现)并公开发行,那时候它成为了Web应用的基石,开发者不断优化和添加新特性

Redis是在2009年Salvatore Sanfilippo开发。有时Redis被描述为"Memcache的胆固醇",这也不足为奇,这不足为奇,考虑到Redis汲取了Memcached教训。 Redis比Memcached更为强大,更灵活,但也会变得复杂。

那些场景适用Memcached?

对比之后,相对来说Redis是后来者有更多特性,Redis通常是最好的选择,但在某些场景Memcached会更加合适,第一类就是静态数据, 比如HTML静态页面。Memcached's内置内存管理,而这是Redis没有的,因为Memcached具有常高效和占用低内存的metadata,这也是Memcached唯一支持的数据类型,是理想存储只读数据方式,Memcached使用LRU算法(Least Recently Used)删除不常用的数据来缓存新数据

那些场景适合使用Redis?

Redis的优势在于全面的内存管理,缓存使用回调数据机制删除旧数据来缓存新的数据,和Memcahced使用LRU算法类似。相比之下,Redis还有6种数据类型来细化控制数据,还有更多高级的内存管理方式,比如:用户是否在线状态,session就很适合Redis进行存储,不会因为redis重启而丢失数据,redis可以定时将数据写到磁盘(即数据持久化),还有就是你需要对内存的数据不是简单删除添加的操作,要求有排序,保证唯一性等高级的操作就可以选择Redis

关于跑分

slideshare

总的来说

一般静态的数据使用Memcached即可,高级复杂的对数据进行操作可以选择Redis

Related Articles