Memcached 机制的深入了解 及 把SESSION 放入Memcached

来源:互联网 发布:台湾能独立吗 知乎 编辑:程序博客网 时间:2024/06/05 10:17







总结:

1. mem服务的数据不是同步数据是分布的

2. 把什么数据放入到哪个memcached是由客户端的mem对象决定

3. 当执行addServer的时候,并不是立即去连接mem服务,而是通过计算,hash后才去决定连接哪个mem服务,因此当你大量加入服务器到连接池,没有多余开销

u memcache的细节讨论

① 生命周期

从数据放入mem开始计时,直到时间到了,就销毁如果时间为0, 则表示不过期.

memcache的数据被销毁的情况如下:

1. 时间到

2. 重启memcached服务

3. 重启memcached服务所在的机器

4. delete / flush 销毁数据

② 如何把session数据放入到memcached服务中.

步骤:

1. 修改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();

u 思考,如果管理员,不让我们修改 php.ini 文件,我们如何处理sessionmemcached这个功能我们通过一个函数可以去修改 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 文件本身只对本页面生效.

u memcached vs session比较

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

session数据是和绑定的,因此是一种有状态数据.




u memached安全性

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

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



linux 也可以使用防火墙.

setup 配置防火墙

iptables -a input -p tcp -s 127.0.0.1 -dport 11211 -j ACCEPT



原创粉丝点击