我们都知道,Redis和Memcached都是内存数据库,它们的访问速度非常之快。但我们在开发过程中,这两个内存数据库,我们到底要如何选择呢?它们的优劣都有哪些?
为什么现在看Redis要比Memcached更火一些?
这篇文章,我们就从各个方面来对比这两个内存数据库的差异,方便你在使用时,做出最符合业务需要的选择。
要分析它们的区别,主要从以下几个方面对比:
-
线程模型
-
数据结构
-
淘汰策略
-
管道与事务
-
持久化
-
高可用
-
集群化
线程模型
要说性能,必须要分析它们的服务模型。
Memcached处理请求采用多线程模型,并且基于IO多路复用技术,主线程接收到请求后,分发给子线程处理。
这样做好的好处是,当某个请求处理比较耗时,不会影响到其他请求的处理。
当然,缺点是CPU的多线程切换必然存在性能损耗,同时,多线程在访问共享资源时必然要加锁,也会在一定程度上降低性能。
Redis同样采用IO多路复用技术,但它处理请求采用是单线程模型,从接收请求到处理数据都在一个线程中完成。
这意味着使用Redis,一旦某个请求处理耗时比较长,那么整个Redis就会阻塞住,直到这个请求处理完成后返回,才能处理下一个请求,使用Redis