Memcached是一个高性能的分布式的内存对象缓存系统,目前全世界很多人使用这个缓存项目来构建本身大负载的网站,来分担数据库的压力,经过在内存里维护一个统一的巨大的hash表,它可以用来存储各类格式的数据,包括图像、视频、文件以及数据库检索的结果等。简单的说就是将数据调用到内存中,而后从内存中读取,从而大大提升读取速度。php
大访问量的时候,在咱们使用memcache的时,用户第一次请求的时候,服务器会从数据库中读取数据,并将数据缓存到memcache中,其余用户再次请求的时就会从memcache中读取数据,而再也不连接数据库。mysql
在windows下启动时的指令:linux
-p 监听的端口
-l 链接的IP地址, 默认是本机
-d start 启动memcached服务
-d restart 重起memcached服务
-d stop|shutdown 关闭正在运行的memcached服务
-d install 安装memcached服务
-d uninstall 卸载memcached服务sql
-m 最大内存使用,单位MB。默认64MB数据库
例:memcache –p 11211windows
经过telnet 来进行模拟操做数据:telnet localhost 11211数组
Msyql是将数据存储在磁盘中缓存
memcache是存储在内存中,一旦断点或者重启将会致使数据丢失安全
msyql中数据是以二维表的形式存在的服务器
memcache是以键值对的形式存储在数据库中
一、添加数据:add key(键名) 0(是否压缩) 120(lifetime) 5(值的长度)
在telnet中语句写错后不能修改,值的长度与输入的长度必须一致不能多也不能少
二、获取数据:get key
三、修改数据:replace key 0 lifetime length
注:当字段已经存在的时候将会替换,若是不存在则替换失败
四、设置数据:set key 0 lifetime length
注:当字段已经存在则进行替换,不存在则进行设置
五、删除数据:delete key
六、后追加数据:append key lifetime length
七、前追加数据:prepend key lifetime length
八、加法操做:incr key value
九、减法操做:decr key value
十、删除全部:flush all
十一、查看状态:stats //查看命中率(命中率越高,越有不然须要调内存) get_hits/cmd_get
一、经过时间戳的形式 time()+lifetime 单位:秒
Add name 0 time()+3600*24*7 length
二、经过指定生命周期的形式:lifetime
Add name 0 3600*24*7 length
memcache对于数据的存储都是以字符串的形式进行存储,不管是标量类型仍是非标量,对于数组、对象、null等都是先将其序列化之后再存储,咱们对其调用时的反序列化都是在memcache中进行的,而资源类型是没法存储到数据库的故将资源型转化为0字符
在保存数据的时候,不但保存数据的自己,还保存着数据的类型
a、利于在网络间进行数据传输
b、便于从新读取并回复数据
在同一台服务器上,能够经过不一样的端口来实现虚拟的多态服务器的配置
注意:在添加数据的时候,连接服务器的顺序和数量要和获取数据时的一致
一、memcache自己并无安全机制,只有经过服务器系统层面来设置安全性,如防火墙,selinux;一般memcache是放到私有网络(公司内网),并不会对外公开
二、memcache –p 11211 –l 127.0.0.1
监听的ip地址,只接收该IP所传送的值
一、惰性删除:memcache内部并无监视记录是否过时,而是在get时查看记录的时间戳,检查记录是否过时
二、最少最近原则(LRU):设置的memcache的存储空间为64M,当空间满了,若是再存储数据时,会自动剔除最不活跃的数据
①安全性较差的数据,就算从内存中丢失也没有关系
②查询比较频繁的公有字段
③数据量不要太大,小于1M
④更新比较频繁的字段(如用户的状态)
经过php.ini来进行设置session放入memcache中设置以下:
session.save_handler = memcache
session.save_port = ‘localhost:port’
将session_id做为key值存入memcache中