基于Nginx的多级缓存理解:Nginx + Redis缓存

作为站长一直喜欢折腾, 力求完美。

之前基于宝塔面板用Nginx缓存 + Memcached缓存来优化网站,已经可以让网站起飞了。

可以参看之前的文章:同一服务器多站点设置nginx fastcgi_cache缓存

BT(宝塔面板)-WordPress开启Nginx fastcgi_cache缓存加速

后来听说有Redis缓存,但是一直没有去尝试。在用memcached缓存的时候对于自定义页面的缓存更新存在问题,请教了其他站长,也确实有这个问题,所以停用了Memcached缓存。

关于Memcached缓存与Redis缓存的对比,可以参看文章:缓存方式Redis与Memcached区别

听大鸟博客说Redis不存在这个问题,所以才有想法尝试下Redis缓存。在尝试之前要先理清原理,通过了解后才有了下面这张图

多级缓冲 Nginx + Redis缓存

其实我更愿意用到踏雪无痕博客上的这张图,如下图

web服务器Nginx缓存机制

多级缓存架构的工作流程

每次请求过来,优先从nginx本地缓存中提取各种数据,结合页面模板,生成需要的页面;

如果nginx本地缓存过期了,那么就从nginx到redis中去拉取数据,同时将最新的内容更新到nginx本地;

如果redis中也被LRU算法清理掉了,就重新发送请求数据库拉取数据,然后再次redis缓存,并返回数据给nginx,并且nginx将数据缓存到本地

多级缓存架构中每一层的意义

nginx本地缓存,主要是针对热数据的高并发访问,拿商城商品信息来说:

商品的购买总是有热点的,类似于爆款商品、热卖商品。比如每天购买iphone、小米等知名品牌的东西的人总是比较多的,这些热数据由于经常被访问,所以可以被锁定在nginx的本地缓存内,那么对这些热数据的大量访问,就直接走nginx就可以了,不需要走后续的各种网络开销了。

redis缓存,(主要是针对大规模的离散访问)它提供海量的数据支撑、高并发的访问、高可用的服务,由于redis缓存最大量的数据,最完整的数据,因此为后面数据库提供了一层强有力的保护伞。

nginx本地内存有限,也就能缓存部分的热数据,除了各种爆款商品信息热数据,其他相对不那么热的数据,流量会经常走到redis那里。

将Redis当做内存数据库使用,提高读写效率。最终的目的就是尽量减少对数据库的操作,帮助解决因为数据库操作产生的服务器压力,造成的客户端延迟现象。

 

为TA充电
共{{data.count}}人
人已赞赏
宝塔面板

宝塔面板手动搭建baiyue_onekey – VIP视频解析

2019-8-12 11:44:57

宝塔面板

SSL证书到期后通过宝塔面板重新申请证书

2019-8-22 19:41:33

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索