memcache小总结

来源:互联网 发布:docker mysql 数据卷 编辑:程序博客网 时间:2024/06/06 01:10


mem服务的数据不是同步, 数据是分布的
把什么数据放入到哪个memcached是由客户端的mem对象决定
当执行addServer的时候,并不是立即去连接mem服务,而是通过计算,hash后才去决定连接哪个mem服务,因此当你大量加入服务器到连接池,没有多余开销


memcache的细节讨论
生命周期
从数据放入mem开始计时,直到时间到了,就销毁, 如果时间为0, 则表示不过期.
memcache的数据被销毁的情况如下:
时间到
重启memcached服务
重启memcached服务所在的机器
delete / flush 销毁数据
如何把session数据放入到memcached服务中.
步骤:
修改php.ini的配置文件
如下:
;[sesson.save_handler 有user|files|memcache]
session.save_handler = memcache
session.save_path = "tcp://127.0.0.1:11211"
测试一把,重启apache
测试ok 
<?php


//传统的代码
session_start();
$_SESSION['name']='天龙八部300';
$_SESSION['city']='beijing';
class Dog{
public $name;
}


$dog1=new Dog;
$dog1->name='abcde';
$_SESSION['dog']=$dog1;


//如果session数据入mem,那他一定是以session_id为
//key值进行添加

//取出
$name=$_SESSION['name'];
echo "name=$name";
echo "sessionid=".session_id();




思考,如果管理员,不让我们修改 php.ini 文件,我们如何处理session入memcached这个功能, 我们通过一个函数可以去修改 php.ini 的配置.


代码:
<?php


ini_set("session.save_handler","memcache");
ini_set("session.save_path","tcp://127.0.0.1:9999");


同时你也可以通过 ini_set 去动态的修改对php.ini 的其它设置 。但是他不影响其它php页面,也不会去修改php.ini 文件本身, 只对本页面生效.


memcached vs session比较
memcached 主要的目的是提速 ,因此它是一种无状态的数据.即,数据不和用户绑定.
session数据是和绑定的,因此是一种有状态数据.


memached安全性
如何使用memcached 服务才是安全的.


在windows下通过启用防火墙来保护我们的memcached,原理图:




在linux 也可以使用防火墙.
setup 配置防火墙
iptables -a input -p tcp -s 127.0.0.1 -dport 11211 -j ACCEPT




和memcached技术类似是redis (key/value数据库)
原创粉丝点击