【1】
memcached作者提醒开发人员不要用memcached存储session. 如果用memcached存储session,那么当memcached集群发生故障(比如内存溢出) 或者维护(比如升级/增加或减少服务器)时,用户会无法登录,或者被踢掉线. memcached使用LRU算法的回收机制可能会导致用户无缘无故地掉线. 而最糟糕的是,你很可能甚至都不会注意到它,直至用户开始抱怨.Memcached主要用来做数据库读操作的缓存.比如程序先从Memcached中读数据,不存在时才去读MySQL.比如你有一条SQL语句,你可以把这条SQL语句MD5后作为Memcached的key,这条SQL语句的查询结果作为Memcached的value.http://php.net/manual/zh/memcached.set.php
<?php
$sql = '';
$key = md5($sql);
if( false === ($value = $mc->get($key)) ) {
$value = $db->query($sql)->fetchAll(PDO::FETCH_ASSOC);
$expire = time() + 3600; //过期时间1小时
$mc->set($key, $value, $expire);
return $value;
}
return $value;
【2】
缓存层最大的一个特点就是:临时性,也就是说放在memcached里的数据里临时的,有或者没有并不会有本质的影响。这就是说为什么不能把session放在memcached里,session不是临时的。其实写这段文字的时候想到了一个问题,这句话需要分开理解临时存储数据,和存储临时数据。1.存储临时数据,也就是说我需要一个暂时放一些数据在内存里方便快速存
.........................................................