在实际开发中,常常会使用NoSQL缓存数据来减少MySQL的读取压力,同样,也可以利用Ngx_Lua的缓存来减少MySQL的压力,本节将介绍缓存和数据库的交互方案。10.5.1 从数据库获取数据从MySQL中获取数据后存放到Ngx_Lua缓存中,有多种实现方案。下面是比较常见的3种方案。A方案,适合在缓存的key较多时使用,流程大致如图10-2所示。图10-2 当key较多时的缓存流程B方案,适合
在8.3节中曾提到过动态添加黑白名单地方案,下面对该内容做一个补充,代码如下:lua_shared_dictwhite_list_ip1m;#声明存放白名单的共享内存server{listen80;server_nametestnginx.com;location/{access_by_lua_block{localngx=require"ngx";localwhite_list_ip=ngx.s
在10.1节和10.2节,介绍的都是全局的缓存系统,那么有没有只针对当前请求设置的缓存呢,即某个数据在请求的每个阶段都有缓存,但请求结束缓存就会消失。举例来说,请求在rewrite阶段生成1个缓存数据,作用是可以让后面的阶段(如content阶段)获取到该缓存数据,但该数据在请求完成后就没有用了,可以在请求结束后清除掉。这种缓存主要针对如下情况使用,在Ngx_Lua中LuaAPI的执行是有阶段限制
上一节讲到了worker进程的共享内存,它利用丰富的指令使数据的缓存操作变得非常简单,但它也存在一些缺点。1.worker进程之间会有锁竞争,在高并发的情况下会增加性能开销。2.只支持Lua布尔值、数字、字符串和nil类型的数据,无法支持table类型的数据。3.在读取数据时有反序列化操作,会增加CPU开销。共享内存在Ngx_Lua中作为缓存工具还是非常出色的。笔者在生产环境中,曾多次使用lua_
先来看一张简单的缓存流程图,如图10-1所示。图10-1 缓存流程图CDN缓存和proxy_cache缓存在前面的章节中已经有过介绍,它们可以提升访问速度,减少回源流量,从而减少后端业务层的压力。在业务层中,也有不少服务有自己的缓存,这些缓存既可以减少服务自身的运算量,也可以减轻后端数据库等服务的压力。常见的业务层缓存工具有Redis、Memcached、Couchbase等。它们可以用来完成大量
对刚接触Ngx_lua的读者来说,可能会存在下面两个困惑。1、Lua在Nginx的哪些阶段可以执行代码?Lua在Nginx的每个阶段可以执行哪些操作?2、只有理解了这两个问题,才能在业务中巧妙地利用Ngx_Lua来完成各项需求。Nginx的11个执行阶段,每个阶段都有自己能够执行的指令,并可以实现不同的功能。Ngx_Lua的功能大部分是基于Nginx这11个执行阶段开发和配置的,Lua代码在这些指
十四、获取Nginx的环境变量通过LuaAPI可以获取Nginx的环境变量,用来提升某些业务处理流程,比如有些定时任务只需要在一个worker进程上执行,不需要执行多次,因此可以获取环境变量中worker的ID,在指定的ID上执行任务即可;或者获取Nginx的worker进程是否正在shutdown,以决定是否对数据进行备份操作。14.1 获取环境所在的模块ngx.config.subsystem
九、控制响应头HTTP响应头需要配置很多重要的信息,例如添加CDN缓存时间、操作set-cookie、标记业务数据类型等。利用Lua的API可以轻松完成这些配置,并且它有丰富的模块可供选择。9.1 获取响应头ngx.resp.get_headers语法:headers=ngx.resp.get_headers(max_headers?,raw?)配置环境:set_by_lua,rewrite_by
本章将会讲解基于LuaJIT的Lua-Nginx-Module,它作为Nginx的第三方开源软件,拥有十分丰富的功能,可以轻松完成高并发的业务需求。注意:本书使用的Lua-Nginx-Module版本是0.10.13。NginxAPIforLua将被简称为LuaAPI,而Lua-Nginx-Module则被简称为Ngx_lua。后面章节中涉及到的LuaAPI大部分是包含参数的,如果参数以?结尾,代
Nginx变量主要用在日志的记录和分析,还有业务逻辑的处理。下面将介绍一些常用变量配置手段,在实际应用中发挥作用
文档时间:2010-6-11 于成都 by:xikder 项目更新主要存在的风险包括,数据丢失,升级失败,业务异常。 数据丢失 定 义: 数据丢失,指因操作不当导致的业务系统数据丢失损坏,使系统无法正常运 营。  
########################################## 测试环境:【Centos 5.7 32位】 准备:epel-release-xx..noarch.rpm 源 http://download.fedora.redhat.com/pub/epel/ 查找对应的系统。 ########################################## #r
Centos系统,使用dvd作为更新源。#mkdir /mnt/cdrom #mount /dev/cdrom /mnt/cdrom #mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.save #mv /etc/yum.repos.d/CentOS-Media.repo /etc/yum.repos.d/
kickstart远程安装自动Centos 5.7 32bit系统,经过几十次重启调试,全自动安装终于做通。难点主要是在ks.cfg 配置文件上。稍有错误,安装过程就变成手动了。测试表明,使用redhat的system-config-kickstart工具生成的配置文件不太给力,中途需要手动,所以还是自己手动改比较好。这样可用加深对配置文件的理解。网上有很多类似文章,但要真正掌握,定制自己想要的,
【基于Centos 5.7 32位 i386】 亲,这里只是虚拟机测试,别直接拿到生产环境上乱动哦。 ext4稳定版本需要内核2.6.28以上,当然网上也有低于这个内核版本的升级方法,但是不建议这么做,因为官方给出了说明,信官方得永生。前面做了内核升级到了2.6.33.20,但是升级系统默认的e2fsprogs却没法使用,官方指出e2fsp
好景不长,笔记本升级失败,今天打开虚拟机也出错了,费解。都出现如下错误。 【基于 Centos 5.7 i386 虚拟512内存】 内核升级,简洁版,亲测成功,网上有很多文章了。就不详细描述了。 上http://www.kernel.org/选择一个稳定版 #安装依赖包 #yum install
利用openssl生成若干随机密码,非常简单,实现如下。 #!/bin/bash #Creat Rand passowd by openssl. echo -n "How many rand passwd do you ne
批量创建连续系统账号
期待Centos 6.0很久了,今天准备安装。结果服务器光驱坏了,移动光驱又被借走。只好尝试pxe安装。网上找了下资料。尝试了很多次终于安装成功。 服务器端:win2003 (win7也可以),iis(ftp也可以),软件tftpd32(点击下载),syslinux(点击下载)。 过程如下: 1、在D:盘新建以下目录 D:linux-inst D:linux-in
ntfs-3g 似乎能安全地进行读写。详情见 ntfs-3g 的网页。
本文介绍基于Centos 5.4系统环境的xfs文件系统部署。 xfs文件系统是SGI开发的高级日志文件系统,xfs极具伸缩性,非常健壮。
环境【centos系】 所需软件:net-snmp net-snmp-utils net-snmp-libs。 所需脚本:check_traffic.sh 见文章下方附件。 1.查看系统是否安装rpm -qa|grep snmp,如没有上传以上包,再上传check_traffic.sh脚本至$nagios/libexec/,并更改traffic脚本权限为
Swap分区tip(摘自Redhat官方文档) Swap should equal 2x physical RAM for up to 2 GB of physical RAM, and then 1x physical RAM for any amount above 2 GB, but never less than 32 MB. Using this formul
Linux系统网络共享,使用NFS(网络文件系统)。 基本思路,liunx 系统之间网络实现共享,测试用两台linux 系统的服务器或pc,一台作为提供共享服务的服务端,一台作为访问共享的客户端。 测试环境: 服务端 CentOS release 5.4 (Final) 客户端 CentOS release 5.2 (Final) 1、NFS服务
Copyright © 2005-2025 51CTO.COM 版权所有 京ICP证060544号