nginx缓存构建

一级缓存本地缓存实现

二级缓存redis缓存实现

三级缓存nginx缓存实现(80%请求处理在这一层级)

openresty安装

命令示例:

yum install -y readline-devel pcre-devel openssl-devel gcc
wget http://openresty.org/download/openresty-1.21.4.1.tar.gz
tar -zxvf openresty-1.21.4.1.tar.gz
cd openresty-1.21.4.1
cd bundle
cd LuaJIT-2.1-20220411
make clean && make && make install
ln -sf luajit-2.1.0-beta3 /usr/local/bin/luajit
wget https://github.com/FRiCKLE/ngx_cache_purge/archive/2.3.tar.gz
tar -zxvf 2.3.tar.gz
wget https://github.com/yaoweibin/nginx_upstream_check_module/archive/v0.3.0.tar.gz
tar -zxvf v0.3.0.tar.gz
cd bundle
./configure --prefix=/usr/servers --with-http_realip_module --with-pcre --with-luajit --add-module=./bundle/ngx_cache_purge-2.3/ --add-module=./bundlnginx_upstream_check_module-0.3.0/
make && make install

ngnix+lua 执行lua文件

vim ./lua/test.lua
test.lua文件中插入
ngx.say(" excute lua file successfully! ");
nginx.conf修改
location / {
            #root   html;
            #index  index.html index.htm;
            default_type text/html;
            #content_by_lua_block {
            #    ngx.say("hello, world")
            #}
            content_by_lua_file lua/test.lua;
        }
./sbin/nginx -s reload刷新配置

刷新页面后则显示

excute lua file successfully!

此处可以看到nginx只要请求8080接口返回的就是lua文件了,这里我们可以实现自己的缓存页面已到达nginx缓存目的,将百分之80的请求再此处进行处理,降低服务器压力;

本文转载于网络 如有侵权请联系删除

相关文章

  • 多分支构建的实践与思考原创

    之前配置项都是基于单分支的构建,很多时候,我们更需要配置一个多分支的场景以应对更为多元的工作场景。比如,我希望项目的测试环境以及预发环境都是推送代码之后自动构建的,这个时候,就可以在Jenkins中创建一个多分支pipeline项目,来满足如上场景。首先创建一个新的项目,风格选择多分支pipeline,然后进行简单配置:然后在项目根目录创建Jenkinsfile文件:pipeline{ agentany environment{ remote_dir="/opt/hello" } triggers{ gitlab(triggerOnPush:true, triggerOnMergeRequest:true, branchFilterType:'All', secretToken:"${env.git_token}") } options{ buildDiscarder(logRotator(numToKeepStr:'10')) disableConcurrentBuilds() timeout(time:

  • 报告解读下载 | 墨天轮五月数据库行业报告,百花齐放,开源当先

    编者:本系列文章分析行业动态,关注“数据和云(OraNews)”回复:下载。可以找到文档链接。近日,墨天轮社区发布了《2022年5月中国数据库行业分析报告-百花齐放,开源当先》,该报告对中国数据库市场的发展进行了分析。以下从报告中摘录部分描述作为分享。1.关键摘要-墨天轮数据库流行度排行榜,在分类上采用了模型分类法为主,将NoSQL品类展开与关系型同列,其他分类法如云原生、分布式等,通过属性列呈现;-2022年5月openGauss首次登上榜首,数据库技术的发展经过了三个时代,从商业、到开源,再到云数据库,榜单的前九名恰好反应了三个时代:三个商业数据库品牌:达梦、GBase、金仓;三个开源数据库品牌:openGauss、TiDB、OceanBase;三个云数据库品牌:GaussDB、PolarDB、TDSQL。 - 目前,墨天轮共收录了229个国产数据库品牌,开源数据库有26个占比11%,还远低于DB-Engines的52%。-华为openGauss基于早期PostgreSQL开发,致力于为国内数据库行业构建基础根技术,共建生态、使能伙伴,目前已有包括MogDB在内的6个商业发行版推出

  • 谷歌地球接口Google Maps APIs地图样式设计调整与JSON或URL导出

      本文介绍在谷歌地球API(GoogleMapsAPIs)中,设计地图样式并将设计好的样式通过JSON或URL导出的方法。  首先,进入GoogleMapsAPIs网站:https://mapstyle.withgoogle.com/。在弹出的窗口中我们可以看到,目前还可以基于谷歌云端硬盘进行地图样式设计;但原有的GoogleMapsAPIs其实相对来说也还是很方便、简洁的,本文这里也就暂时先介绍GoogleMapsAPIs。因此,这里我们选择最下方的oldstylewizard即可。  随后,即可进入地图样式修改界面。  其中,左侧栏上半部分三个拉伸条的作用依次分别为修改地图中道路密度、地表要素密度与图例密度。  左侧栏下半部分则为主题选择区域,我们需要在其中选择一个主题作为后续修改的框架;本文就选择“Night”主题。  随后,通过“MOREOPTIONS”选项对地图设计加以更细致的调整。  其中,弹出的界面分为三列,其中第一列为要素类型(包括行政区边界、兴趣点、道路、公共交通路线等),第二列为这一要素类型对应的地图元素(包括点、线、面、图例等),第三列则为这一地图元素的具体属性

  • 设计一个短链接系统

    前言在发送短信和微博等限定字数的场景下,短链接的需求就应运而生了。原理一张图概括了短链接干的事:来源:孤独的烟短链接设计关键在于:短链接生成的算法:如何保证足够短且不冲突。其中常用的算法有1、基于哈希的MurmurHash算法2、十进制转62进制3、自增序列(Snowflake、Mysql自增主键、类uuid、redis)关于短链接的原理研究可以阅读这两位大佬的文章:xbmchina.cn/AAAAAGxbmchina.cn/AAAAAH实践基于上面的理论思想:本文采用十进制转62进制的算法+Redis全局自增的方式实现短链接服务。公众号:爱编码1、十进制转62进制短链接是由a-z、A-Z和0-9共62个字符。我们可以讲十进制的数字id,转换为一个62进制的数,例如20201122就可以转换为WvOi。十进制转62进制工具类如下: publicclassBase62{ privatestaticfinalchar[]toBase62={'A','B','C','D','E','

  • 生鲜O2O迎来快速发展,传统商超将如何布局?

    近年来,生鲜零售成了最受欢迎的零售行业;突发的新冠疫情,更是让这一行业站在了资本的风口之上。从互联网巨头到商超顶流都盯上了生鲜这块“大蛋糕”,无数新玩家纷纷入局,众多老玩家也在持续加码;随着各路玩家的竞相涌入,生鲜行业的竞争也愈加白热化。在我国的零售市场中,水果生鲜品类一直都占据着极大的份额比重。在近几年“新零售”概念兴起后,生鲜行业更是最为火热的领域,诞生了网络菜场、前置仓、无人货柜、跨界超市等生鲜新零售模式,以及盒马鲜生、叮咚买菜、谊品生鲜、美团买菜、超级物种、钱大妈等社区生鲜电商平台、生鲜新零售品牌。受益于非接触经济,生鲜O20迎来发展良机2.1.1.1.疫情期间被动选择线上买菜,疫情后有望养成生鲜到家习惯疫情期间全国各地城市和乡镇都对出行进行限制,而日常生活用品和生鲜必需品的购买是人们居家生活最核心的问题,线上买菜成为大多数城市居民的第一选择。根据QuestMobile的数据显示,疫情期间生鲜电商的用户同比增长超过50%。很多消费者在连续多次使用线上买菜APP后,体会到了线上买菜带来的便捷,逐渐开始接受这一购物方式。甚至对于一部分中老年人,都能熟练掌握线上买菜的全流程,定时线上

  • JavaScript企业级编程规范(1)-文件命名-注释规范-id与class

    作者|随笔川迹ID|suibichuanji前言撰文:川川好的代码是有生命力的,程序是写给人读的,顺便在机器上跑一下当你在阅读别人的代码时,据说评判一个项目的好坏,就是看阅读代码人说脏话程度 无注释,无文档,命名千奇百怪等等,对于后来者,是极其痛苦的,其实个人觉得一个非常好的产品,一手代码非常重要,既是标准,往往又是参照。 工作中,往往令人尊敬的,就是代码的产出,少bug,写得又好又快,毫无疑问是团队中最受欢迎的,而好的命名,代码规范往往可以看出一个程序员的功力 做一个自我要求高一点的工程师,而不止于完成任务。从代码规范做起,什么是好代码,可读性好,可维护性高.易拓展.少bug,高质量,这些硬技能并非一蹴而就.非一日之功. 人人都喜欢和聪明人一起工作,我们无法要求别人怎么样,但可以要求自己. 无论团队人数多少,代码应该同出一门。下面这些规范不是硬性规定,但不妨可以作为参照,向大厂看齐,作为标杆。·正·文·来·啦·01文件夹(项目)命名规范 项目名全部采用小写方式,以中划线分隔。比如:my-project-name,例如:,ant-design-pro,ant-design-colors

  • AkShare-中国宏观-工业品出厂价格指数

    作者寄语新增工业品出厂价格指数数据接口。更新接口"macro_china_ppi"#工业品出厂价格指数工业品出厂价格指数接口:macro_china_ppi目标地址:http://data.eastmoney.com/cjsj/ppi.html描述:获取工业品出厂价格指数,数据区间从200601至今,月度数据限量:单次返回所有历史数据输入参数名称类型必选描述无无无无输出参数名称类型默认显示描述月份strY-当月strY-当月同比增长strY注意单位:%累计strY-接口示例importakshareasak macro_china_ppi_df=ak.macro_china_ppi() print(macro_china_ppi_df) 复制数据示例月份当月当月同比增长累计 02020年07月份97.6-2.40%98.00 12020年06月份97.0-3.00%98.10 22020年05月份96.3-3.70%98.30 32020年04月份96.9-3.10%98.80 42020年03月份98.5-1.50%99.40 .............. 102

  • SAP PP计划订单和生产订单的日期计算

    SAPPP中关于计划订单和生产订单的日期计算,计划单的基本完成日期=上级物料需求日期-物料主数据MRP2视图的收货处理时间天数(全部以工厂日历的工作日计算)计划单的基本开始日期=计划单的基本完成日期-物料主数据。 计划单的基本完成日期=上级物料需求日期-物料主数据MRP2视图的收货处理时间天数(全部以工厂日历的工作日计算)计划单的基本开始日期=计划单的基本完成日期-物料主数据MRP2视图的自制生产天数(全部以工厂日历的工作日计算)生产单的基本开始日期=已计划的下达日+计划边际码的下达期间。特殊说明如果上级物料需求日期比MRP运算日期早或等于则:计划单的基本开始日期=MRP运算日期计划单的基本完成日期=计划单的基本开始日期+物料主数据MRP2视图的自制生产天数;如果上级需求是销售订单则上级物料需求日期=销售订单的计划行的交货日期可用计划的其他日期=计划单的基本完成日期+物料主数据MRP2视图的收货处理时间天数(计划单中的收货用时天数)计划转换日期=计划单的基本开始日期-物料主数据MRP2视图的计划边际码中的未清期间天数展开日期=计划单的基本开始日期采购申请单计划交货日期=采购申请日期+M

  • PCA降维

    概念在机器学习中经常会碰到一些高维的数据集,而在高维数据情形下会出现数据样本稀疏,距离计算等困难,这类问题是所有机器学习方法共同面临的严重问题,称之为“维度灾难”。另外在高维特征中容易出现特征之间的线性相关,这也就意味着有的特征是冗余存在的。基于这些问题,降维思想就出现了。降维方法有很多,而且分为线性降维和非线性降维,本篇文章主要讲解线性降维中的主成分分析法(PCA)降维。顾名思义,就是提取出数据中主要的成分,是一种数据压缩方法,常用于去除噪声、数据预处理,是机器学习中常见的降维方法。PCA的本质就是找一些投影方向,使得数据在这些投影方向上的方差最大,而且这些投影方向是相互正交的。这其实就是找新的正交基的过程,计算原始数据在这些正交基上投影的方差,方差越大,就说明在对应正交基上包含了更多的信息量。可以证明原始数据协方差矩阵的特征值越大,对应的方差越大,在对应的特征向量上投影的信息量就越大。PCA的全部工作简单点说,就是对原始的空间中顺序地找一组相互正交的坐标轴,第一个轴是使得方差最大的,第二个轴是在与第一个轴正交的平面中使得方差最大的,第三个轴是在与第1、2个轴正交的平面中方差最大的,

  • web前端面试中10个关于css高频面试题,你都会吗?

    1.什么是BFC机制BFC(BlockFormattingContext),块级格式化上下文,是一个独立的渲染区域,让处于BFC内部的元素与外部的元素相互隔离,使内外元素的定位不会相互影响。触发条件(以下任意一条)float的值不为noneoverflow的值不为visibledisplay的值为table-cell、tabble-caption和inline-block之一position的值不为static或则releative中的任何一个在IE下,Layout,可通过zoom:1触发BFC布局与普通文档流布局区别: BFC布局规则:浮动的元素会被父级计算高度(父级元素触发了BFC)非浮动元素不会覆盖浮动元素的位置(非浮动元素触发了BFC)margin不会传递给父级(父级触发BFC)属于同一个BFC的两个相邻元素上下margin会重叠普通文档流布局:浮动的元素是不会被父级计算高度非浮动元素会覆盖浮动元素的位置margin会传递给父级元素两个相邻元素上下的margin会重叠开发中的应用阻止margin重叠可以包含浮动元素——清除内部浮动(清除浮动的原理是两个div都位于同一个BFC

  • 微信小程序自动完成文本框

    wxml:部分 <!--index.wxml--> <viewclass="textview"> <textclass="text">Tip:输入内容后,下方自动显示匹配的结果,点击结果项自动完成输入</text> </view> <!--内容填充部分--> <viewclass="position"> <!--用户输入数据部分--> <viewclass="itemviewShow"> <inputclass="textinput"bindinput="bindinput"value="{{inputValue}}"placeholder="请输入内容"/> </view> <!--用户可以选择的数据部分--> <scroll-viewscroll-y="true&qu

  • redis容器化验证

    上篇文章中对redisoperator进行了开发工作,接下来对一些功能点进行验证,文末附上源码地址,欢迎star,顺便点个在看,手动笔芯! 编写一个operator扩展kubernetes能力 本节验证点如下:1、创建3主3从集群;5主5从验证;2、升级3主3从集群;升级5主5从验证;3、主从分配验证(两主不能在一个主机上,一对主从不能在同一主机上)4、operator高可用验证5、operator异常场景验证主从IP分配验证测试要点1、两个master实例尽可能不在同一个主机上;2、一对主从尽可能不在同一个主机上。创建3主3从集群2个节点当6个redispod实例分布到2个节点时,节点分配如下:masterInstanceIPs:[10.168.167.11810.168.250.24310.168.167.119]slaveInstanceIPs:[10.168.250.25010.168.167.12010.168.250.236]前两个master分配到两个不同主机上;3对主从都不在同一主机上。redis实例node.conf节点信息如下,可见形成的redis集群满足要求:77

  • 好用的批量扫米工具DomainMegaBot

    项目地址 https://github.com/Har-Kuun/DomainMegaBot 使用方法wgethttps://github.com/Har-Kuun/DomainMegaBot/archive/master.zip#下载 unzipmaster.zip#解压 cdDomainMegaBot-master#进入目录 gcc-oDomainMegaBotDomainMegaBot.c#编译 ./DomainMegaBot运行复制PLEASESPECIFYTLD-输入查询域名的后缀,如comcc等,注意不要在后缀前加点PLEASESPECIFYDICTIONARYFILE-指定查询的字典,项目目录下放置了两个字典文件,分别是DICT_1000_WORD和DICT_LLL,这里直接输入你的字典文件名即可,如DICT_LLL此外,在下面这个项目中也有词典可以拿来用https://github.com/jekyllcao/BAT_Check_DomainName

  • 由大型物联网僵尸网络驱动的DDoS攻击

    基于物联网设备的僵尸网络随着信息安全技术的不断发展,物联网僵尸网络现在也成为了信息安全领域内最为危险的安全威胁之一。近期,我们检测到了两起由这些物联网基础设施所驱动的网络攻击,而这两次攻击的规模是我们此前从未见到过的。安全研究人员在报告中指出,近期由物联网僵尸网络驱动的DDoS攻击(分布式拒绝服务攻击)用大量恶意HTTP流量对目标网站进行了攻击。在某个特定的时段内,流量峰值曾一度超过了每秒一百万个请求数。据了解,这些基于物联网设备的僵尸网络其背后的始作俑者就是Mirai恶意软件,攻击者可以利用这款恶意软件来扫描网络中存在漏洞的物联网设备。为此,Cloudflare公司的安全研究专家对近期的两起基于物联网僵尸网络的DDoS攻击进行了分析,并且发布了相关的研究报告。这两次攻击可以算得上是DDoS攻击历史上的一个里程碑了,因为攻击者已经不再像往常一样针对网络层来进行攻击了,现在他们发动的是针对HTTP应用层的攻击。恶意流量分析根据该公司透露的信息,他们的自动化DDoS攻击防护系统检测到了这次DDoS攻击。在收集到了相关数据之后,该公司的安全研究人员对攻击进行了详细分析,并且得到了此次攻击中每

  • How to Save an ARIMA Time Series Forecasting Model in Python (如何在Python中保存ARIMA时间序列预测模型)

    HowtoSaveanARIMATimeSeriesForecastingModelinPython原文作者:JasonBrownlee 原文地址:https://machinelearningmastery.com/save-arima-time-series-forecasting-model-python/ 译者微博:@从流域到海域 译者博客:blog.csdn.net/solo95如何在Python中保存ARIMA时间序列预测模型自回归积分滑动平均模型(AutoregressiveIntegratedMovingAverageMode,ARIMA)是一个流行的时间序列分析和预测的线性模型。statsmodels库中提供了Python中所使用ARIMA的实现。ARIMA模型可以保存到一个文件中,以便以后用于对新数据进行预测。statsmodels库的当前版本中有一个bug,会阻止保存的模型被加载。在本教程中,您将了解如何诊断和解决此问题。让我们开始吧。 照片由LesChatfield提供,保留一些权利。日均女性出生数据集首先,我们来看一个标准的时间序列数据集,我们可以用它来理解有

  • 大数据助力教育督导科学化

          “收集数据,把数据融入易懂的形式中,让数据讲故事,并且把故事讲给别人听。”这描述的是当下一种时髦的职业,大数据工程师。  “大数据”,当下当仁不让的“热词”。随着移动互联网、物联网的蓬勃发展,大数据时代的信息风暴席卷各个行业领域,深刻影响着人们的思维、生活和工作方式。与传统数据相比,大数据具有数据体量巨大、数据类型繁多、处理速度快、数据可重复利用、价值回报高等特点,为我们看待世界提供了一种全新的方法,即各种决策和行为将日益基于数据分析做出,而不是像过去更多凭借经验做出。  大数据的运用,为教育改革和发展,尤其是教育督导的开展,提供了更为科学的依据。  通过运用大数据技术,对海量数据的快速收集与挖掘、及时研判与共享,积累过去、分析现在、预测未来,推动督导决策制定更加科学。通过运用大数据思维,从事件问题的个性中找到共性和关联,透过现象找到问题的症结,有针对性、有重点地开展督导,并通过教育督导各类共享平台、公开系统的建立,推动督导工作开展更加高效。通过运用大数据思维,创新教育督导方式,可改变督导手段单一、督导效率低下、对被督导对象造成不必要的负担等现状,推动督导手段更加丰富。通过

  • 腾讯云边缘计算机器数据结构

    Address描述EIP信息 被如下接口引用:DescribeAddresses。 名称 类型 描述 AddressId String EIP的ID,是EIP的唯一标识。 AddressName String EIP名称。 AddressStatus String EIP状态,包含'CREATING'(创建中),'BINDING'(绑定中),'BIND'(已绑定),'UNBINDING'(解绑中),'UNBIND'(已解绑),'OFFLINING'(释放中),'BIND_ENI'(绑定悬空弹性网卡) AddressIp String 外网IP地址 InstanceId String 绑定的资源实例ID。注意:此字段可能返回null,表示取不到有效值。 CreatedTime String 创建时间。ISO8601格式:YYYY-MM-DDTHH:mm:ss.sssZ NetworkInterfaceId String 绑定的弹性网卡ID注意

  • 关于virtio_net网卡命名的小问题

    最近看了一个小问题,涉及到一致性网络设备命名(ConsistentNetworkDeviceNaming),在此记录一下。 系统是4.18.0-240.el8.x86_64,centos8.3 系统上的网卡如下: 1:lo:<LOOPBACK,UP,LOWER_UP>mtu65536qdiscnoqueuestateUNKNOWNgroupdefaultqlen1000 link/loopback00:00:00:00:00:00brd00:00:00:00:00:00 inet127.0.0.1/8scopehostlo valid_lftforeverpreferred_lftforever inet6::1/128scopehost valid_lftforeverpreferred_lftforever 6:eno1:<BROADCAST,MULTICAST,UP,LOWER_UP>mtu1500qdiscmqstateUPgroupdefaultqlen1000 link/etherb4:05:5d:d5:1e:1dbrdff:ff:ff:ff:ff:

  • 15.DC导出CA让Horizon Client CA导入

    客户端安装后提示证书错误   去同域服务器任意一台的mmc-添加证书中找到  右键-所有任务-导出 导出过程       放到桌面         复制去其他客户端     mmc中导入                          导入后的证书    导入后能登录并且为绿色

  • npm WARN config global `--global`, `--local` are deprecated. Use `--location解决方法

    1.打开node安装路径,找到以下两个文件   2.右键点击属性更改文件权限,演示一个    3.打开后将2个文件里面的prefix-g替换为prefix--location=global    4.保存重新打开cmd运行npm-v即可  

  • 分隔链表

    题目链接:分隔链表 /** *Definitionforsingly-linkedlist. *structListNode{ *intval; *ListNode*next; *ListNode(intx):val(x),next(NULL){} *}; */ classSolution{ public: vector<ListNode*>splitListToParts(ListNode*root,intk){ vector<ListNode*>vc; //首先求出链表的长度 intlen=0; ListNode*p,*q,*r,*pre; for(p=root;p!=NULL;p=p->next,len++); intnum=len/k;//每组分配多少个结点 intrem=len%k;//多余多少个结点 ListNode*cur=root; pre=cur; for(inti=0;i<k;i++){ ListNode*head=cur; pre=cur;// for(intj=0;j<num+(i<rem?1:0);j

相关推荐

推荐阅读