作者/来源:小睿 发布时间:2019-11-15
在互联网项目开发中,缓存的应用是非常普遍了,缓存可以帮助页面提高加载速度,减少服务器或数据源的负载。那么,对于缓存服务器中最常用的技术Memcache、Redis和Varnish是什么?
Memcache
Memcache是老牌的内存缓存技术,对相关领域支持比较丰富,window和linux都可以使用,各种框架(tp/yii等等)都支持使用,session的信息可以非常方便的保存到该Memcache中,每个key保存的数据量最大为1M,支持的数据类型比较单一,就是String类型,不支持持久化。
优点:高性能读写,单一的数据类型,支持客户端式分布式集群,一致性hash多核结构,多线程读写性能高。
缺点:无持久化,节点故障可能出现缓存穿透,分布式需要客户端实现,跨机房数据同步困难,架构扩容复杂度高。
Redis
Redis支持比较多的数据类型(String/list/set/sortset/hash),Redis支持集合计算的(set类型支持),每个key最大数据存储量为1G,Redis是新兴的内存缓存技术,对各方面支持不完善,支持持久化操作。内存中的数据结构存储系统,可用作数据库、缓存和消息中间件。基本配合后端数据库使用,存放的只是用户当前频繁调去的数据。
优点:高性能读写,多数据类型支持,数据持久化,高可用架构,支持自定义虚拟内存,支持分布式分片集群,单线程读写性能极高。
缺点:多线程读写较Mencached慢。
Tair
Tair是一个Key/Value结构数据的解决方案,它默认支持基于内存和文件的两种存储方式,分别与缓存和持久化存储对应。TAIR的功能是get、put、delete以及批量接口,主要针对淘宝应用。。
优点:高性能读写,支持三种存储引擎(ddb/rdb/ldb),支持高可用,支持分布式分片集群,支撑了几乎所有淘宝业务的缓存。
缺点:单机情况下,读写性能较上两种较慢。
Varnish
Varnish是一个开源的反向代理服务器,可用作高性能的代理缓存服务器,Varnish可以有效降低web服务器的负载,提升访问速度。
优点
稳定性很高。在完成高负荷的工作时,Varnish服务器几乎不会发生故障。
访问速度更快。Varnish采用了“Visual PageCache”技术,所有缓存数据都直接从内存读取,访问速度更快。
支持更多的并发连接。因为Varnish的TCP连接释放快,所以在高并发连接情况下可以支持更多的TCP连接。
Varnish可以通过管理端口,使用正则表达式批量清除部分缓存。
缺点
Varnish在高并发状态下CPU、I/O和内存等资源开销高
Varnish进程一旦挂起、崩溃或者重启,缓存数据都会从内存中完全释放,此时所有请求都会被发送到后端服务器,在高并发情况下,这会给后端服务器造成很大压力。
对于这四种,使用最多的是Redis,因为Redis可以集群管理并且支持丰富的数据结构。