nginx
1 nginx相对Apache优点
- 高并发响应性能非常好,官方 Nginx 处理静态文件并发 5w/s
- 反向代理性能非常强。(可用于负载均衡)
- 内存和 cpu 占用率低。(为 Apache 的 1/5-1/10)
- 对后端服务有健康检查功能。
5) 支持 PHP cgi 方式和 fastcgi 方式。 - 配置代码简洁且容易上手。
2 nginx工作原理
Nginx 由内核和模块组成,其中,内核的设计非常微小和简洁,完成的工作也非常简单,仅仅通过查找配置文件将客户端请求映射到一个 location block(location 是 Nginx配置中的一个指令,用于 URL 匹配),而在这个 location 中所配置的每个指令将会启动不同的模块去完成相应的工作。
Nginx 的模块从结构上分为:
核心模块:HTTP 模块、 EVENT 模块和 MAIL 模块
基础模块: HTTP Access 模块、HTTP FastCGI 模块、HTTP Proxy 模块和 HTTP Rewrite模块,
第三方模块:HTTP Upstream Request Hash 模块、 Notice 模块和 HTTP Access Key模块。
Nginx 的高并发得益于其采用了 epoll 模型,与传统的服务器程序架构不同,epoll 是linux 内核 2.6 以后才出现的。 Nginx 采用 epoll 模型,异步非阻塞,而 Apache 采用的是select 模型
Select 特点:select 选择句柄的时候,是遍历所有句柄,也就是说句柄有事件响应时,
select 需要遍历所有句柄才能获取到哪些句柄有事件通知,因此效率是非常低。
epoll 的特点:epoll 对于句柄事件的选择不是遍历的,是事件响应的,就是句柄上事
件来就马上选择出来,不需要遍历整个句柄链表,因此效率非常高
3 MemCache 概述
MemCache虽然被称为”分布式缓存”,但是MemCache本身完全不具备分布式的功能
Memcache 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高了网站访问的速度。 MemCaChe是一个存储键值对的HashMap,在内存中对任意的数据(比如字符串、对象等)所使用的key-value存储,数据可以来自数据库调用、API调用,或者页面渲染的结果。MemCache设计理念就是小而强大,它简单的设计促进了快速部署、易于开发并解决面对大规模的数据缓存的许多难题,而所开放的API使得MemCache能用于Java、C/C++/C#、Perl、Python、PHP、Ruby等大部分流行的程序语言。
4MemCache 常用命令
-
add
添加数据,将 value(数据值) 存储在指定的 key(键) 中
命令格式
add key flag expiretime bytes value
- key : 给这个值设置一个名字
- flag : 标志,是一个整数
- expiretime : 有效期,以秒为单位,0表示没有延迟
- bytes : 这是一个需要存储在memcached的数据的长度
- value : 是一个需要存储的数据。数据需要将通过在新的一行后输入
范例
# 添加数据 add name 0 1000 8 kangvcar STORED # 如果bytes设置的长度和输入的value长度不符则出现一下错误 add name 0 1000 8 kangvcarrr CLIENT_ERROR bad data chunk
set
为一个新的或现有的键(key)设置一个值
命令格式
set key flag expiretime bytes value
参数含义与 add 命令相同
范例
为已存在的key(name)设置一个新的值tom set name 0 1000 3 tom STORED
replace
替换已存在的 key(键) 的 value(数据值)
命令格式
replace key flag expiretime bytes value
参数含义与 add 命令相同
范例
replace name 0 1000 8 memcache STORED
append
向已存在 key(键) 的 value(数据值) 后面追加数据
命令格式
append key flag expiretime bytes value
参数含义与 add 命令相同
范例
# 添加数据123到现有键name的后面 append name 0 1000 3 123 STORED # 查看键name的值 get name VALUE name 0 11 memcache123 END
prepend
向已存在 key(键) 的 value(数据值) 前面追加数据
命令格式
prepend key flag expiretime bytes value
参数含义与 add 命令相同
范例
prepend name 0 1000 3 456 STORED get name VALUE name 0 14 456memcache123 END
gets / cas
gets
获取带有 CAS 令牌的 value(数据值)cas
执行一个"检查并设置"的操作命令格式
gets key cas key flags exptime bytes unique_cas_token [noreply] value
- unique_cas_token : 通过 gets 命令获取的一个唯一的64位值
范例
# 缺少一个参数 unique_cas_token cas name 0 1000 3 ERROR # unique_cas_token 不正确 cas name 0 1000 3 2 sam NOT_FOUND # 通过 gets 命令获取唯一令牌 ==> 12 gets name VALUE name 0 8 12 kangvcar END # 使用 cas 命令更新数据 cas name 0 1000 3 12 sam STORED # 使用 get 命令查看数据是否更新 get name VALUE name 0 3 sam END
get
获取存储在 key(键) 中的 value(数据值)
命令格式
get key
范例
# 获取存储在键name的值 get name VALUE name 0 14 456memcache123 END
delete
删除已存在的 key(键)
命令格式
delete key
范例
delete age DELETED
incr / decr
incr 与 decr 命令用于对已存在的 key(键) 的数字值进行自增或自减操作
命令格式
incr key increment_value` `decr key increment_value
范例
# 添加数据 add age 0 1000 2 15 STORED # 对已存在的键(age)数字值进行自增 incr age 5 20 # 获取键age的值 get age VALUE age 0 2 20 END # 添加数据 add age 0 1000 2 15 STORED # 对已存在的键(age)数字值进行自减 incr age 5 10 # 获取键age的值 get age VALUE age 0 2 10 END
flush_all
清理缓存中的所有数据
命令格式
flush_all [time]
- time : (可选) 在指定时间后执行清理缓存操作
范例
flush_all OK
stats / stats slabs / stats sizes / stats items
stats
显示统计信息例如 PID(进程号)、版本号、连接数等stats slabs
显示各个slab的信息,包括chunk的大小、数目、使用情况等stats sizes
显示所有item的大小和个数stats items
显示各个 slab 中 item 的数目和存储时长命令格式
stats` `stats slabs` `stats sizes` `stats items
范例
stats STAT pid 19700 STAT uptime 3054540758 STAT time 269361355 STAT version 1.4.4-14-g9c660c0 STAT pointer_size 64 ... stats slabs STAT 1:chunk_size 96 STAT 1:chunks_per_page 10922 STAT 1:total_pages 1 STAT 1:total_chunks 10922 ... stats sizes STAT 96 2 END stats items STAT items:1:number 2 STAT items:1:age 3054540037 STAT items:1:evicted 0 STAT items:1:evicted_nonzero 0 STAT items:1:evicted_time 0 STAT items:1:outofmemory 0 STAT items:1:tailrepairs 0 END
下一篇: Nginx
推荐阅读
-
nginx 配置简单网站项目(linux下)
-
centos 安装 nginx
-
Linux环境下安装Nginx及其使用
-
nginx负载均衡策略有哪些( 解锁nginx负载均衡配置及其策略)
-
在Windows系统上搭建Nginx+Python+MySQL环境的教程
-
Linux系统上Nginx+Python的web.py与Django框架环境
-
APMServ一键快速搭建Apache+PHP+MySQL+Nginx+Memcached+ASP运行平台教程
-
APMServ 5.2.6 Nginx无法启动BUG修正方法
-
Python环境Django+uwsgi+nginx的部署
-
nginx负载均衡策略有哪些( 解锁nginx负载均衡配置及其策略)