OpenResty是一个基于nginx的web平台,一台OpenResty理论上可承受1万到10万的并发,非常的强大。
总的来说OpenResty就是集成了Nginx、可动态执行lua脚本的一款软件。
那我们直接来点实在的,来一波使用OpenResty实现二级缓存。
缓存能解决什么问题?
加快访问速度,提升网站并发能力,提升用户体验,减少数据库访问压力。
那么那些数据可以使用到缓存呢?比如网站首页的轮播图,广告图片等等等,很多地方都可以使用到缓存。
进入正题:
缓存预热&二级缓存
缓存预热:缓存的预加载。预热即提前将数据库中数据先查询出来存入redis。
一级缓存:使用缓存直接查询redis返回数据。
二级缓存:针对与同一份数据,缓存在两个地方。本地缓存则是进程自己的内存空间,进程结束即数据消失。redis缓存则是保存在redis服务中的内存中。
多级缓存的意义:避免缓存雪崩,缓存穿透等问题
二级缓存流程图:
具体缓存实现方案
预热:Nginx暴露一个接口,实现缓存预热,访问这个接口执行加载缓存的lua脚本查询MySQL数据保存到redis。
这部分具体是使用lua脚本查询数据库,具体lua脚本流程:连接mysql执行sql获取数据,把数据转json存入redis。
这部分主要主要的是lua脚本,需要先与nginx种配置相关接口访问到具体的lua脚本,通过脚本查询数据库,再将缓存存入redis。最终lua脚本(是需要自己写的)会判断本地是否有缓存,如果有则直接访问本地,如果没有则查询redis。
网友评论