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

浙公网安备 33010602011771号