缓存
缓存是大型网站中的重要组件,主要解决高并发,大数据场景下,热点数据访问的性能问题。适用于读多写少的场景。
从我们的使用角度来分,主要有: ①CDN缓存 ②反向代理缓存 ③分布式缓存
CDN缓存
CDN主要解决将数据缓存到离用户最近的位置,一般缓存静态资源文件(页面,脚本,图片,视频,文件等)。
其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。
反向代理缓存
反向代理位于应用服务器机房,处理所有对WEB服务器的请求。
反向代理一般缓存静态资源,动态资源转发到应用服务器处理。常用的缓存应用服务器有Varnish,Ngnix,Squid。
分布式缓存
分布式缓存,主要指缓存用户经常访问数据的缓存,数据源为数据库。一般起到热点数据访问和减轻数据库压力的作用。
Memcache
Redis
Redis 是一个开源(BSD许可)的,基于内存的,多数据结构存储系统。可以用作数据库、缓存和消息中间件。 支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。
集群方案: ①Twemproxy ②Codis ③官方近期推出的Redis Cluster
Memcache与Redis的比较
- 数据结构:Memcache只支持key value存储方式,Redis支持更多的数据类型,比如Key value,hash,list,set,zset;
- 多线程:Memcache支持多线程,redis支持单线程;CPU利用方面Memcache优于redis;
- 持久化:Memcache不支持持久化,Redis支持持久化;
- 内存利用率:memcache高,redis低(采用压缩的情况下比memcache高);
- 过期策略:memcache过期后,不删除缓存,会导致下次取数据数据的问题,Redis有专门线程,清除缓存数据;