客户端向服务端请求php页面的过程当中,服务端是可控的。 可控的才可优化,优化的重点,便是缓存优化。 试想?数据存储在DB中,访问DB就要读取硬盘数据,但若是须要数据的速度>>硬盘最大的读写速度, 就会产生IO瓶颈。 那么,使用内存缓存数据结果集,让用户首先读取缓存,未果则从DB中读取。 如此,就能提升数据响应的速度,也保护了数据源。 php虽开启shmop扩展可管理内存,但所能管理的内存大小是有限的。 才有大为流行的NOSQL: memcache 高性能的分布式内存缓存服务器 (分布式配置:1.有多个memcache服务端;2.开启php相应扩展,经过addServer()便可实现。底层经过对key的hash取余来标识服务器,所以代码实现上,不要改变存取前的服务器的顺序,不然可能出现获取不到值的状况) redis 高性能的内存缓存服务器 (主从配置:master主服务器执行修改操做,多个slave(只读)链接master,在首次全量复制后,增量更新数据到自身。若是slave断了,从新链接master时,会自动全量复制)
value是以字符串的形式保存的:php
php标量数据类型,保存时会隐式转换为字符串; php其余数据类型, 保存时自动序列化,取出时自动反序列化. //该过程是php的memcache扩展开启后,底层实现的
注意事项redis
∧缓存
memcache
与redis
,最大区别在于持久化
(即数据可否保存在硬盘上).redis
因其多样的数据结构,而知足更多的业务需求,但memcache
的读取速度更快些.服务器
∨数据结构
支持丰富的数据结构(在此先不展开该方面的讨论)分布式
经常使用项:string,hash,list,set,sortedset //redis自己就实现了双向列表,list还可模拟出队列,堆栈的数据结构
可持久化:性能
注意事项优化