其次,memcached缺乏认证以及安全管制,这代表应该将memcached服务器放置在防火墙后。
第三,为了提高性能,memcached中保存的数据都存储在memcached内置的内存存储空间中。由于数据仅存在于内存中,因此重启memcached、重启操作系统会导致全部数据消失。另外,内容容量达到指定值之后,就基于LRU(Least Recently Used)算法自动删除不使用的缓存。memcached本身是为缓存而设计的服务器,因此并没有过多考虑数据的永久性问题。
第四,memcached尽管是“分布式”缓存服务器,但服务器端并没有分布式功能。 各个memcached不会互相通信以共享信息。那么,怎样进行分布式呢? 这完全取决于客户端的实现。

应用场景:
许多Web应用都将数据保存到RDBMS中,应用服务器从中读取数据并在浏览器中显示。 但随着数据量的增大、访问的集中,就会出现RDBMS的负担加重、数据库响应恶化、 网站显示延迟等重大影响。
这时就该memcached大显身手了。通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、 提高可扩展性。 比如,原先的代码是直接访问数据库:
function get_foo(int userid){
result = db_select();
return result;
}
加上memcached的高速缓存机制后,就变成了:
function get_foo(int userid){
result = memcached_fetch(...);
if(!result)
{
result = db_select(...);
memcached_add(...);
return result;
}
}

假设一个有状态的服务,可以理解为web或者socket服务器,每个用户在这个服务器上登录后是有状态的,我们把它的状态连同其他加载到内存的用户数据统称为用户session。由于session数据会实时变化,加上程序访问session频率大,因此,这个session数据并不适合放到远程memcached中去。
136

被折叠的 条评论
为什么被折叠?



