memcached是一套分布式高速缓存系统,memcached缺乏认证以及安全管制,代表将memcached服务器放在防火墙之后,由于memcached通常只是当做缓存系统使用,所以使用memcached的应用程序写回较慢系统(像是后端数据库),需要额外的代码更新memcached内的数据
使用单位
Facebook Wikipedia
示例
将纯粹使用数据库查询的代码加上memcached 支持很简单,假设这是原来的代码:
function get_foo(int userid){
result = db_select("sSELECT * FROM users WHERE userid=?",userid);
return result;
}
加上memcached的缓存机制后
function get_foo(int userid){
result = memcached_fetch("userrow"+userid);
if(!result){
result = db_select("SELECT * FROM users WHERE userid=?",userid)
memcached_add("userrow:"+userid,result);
}
}
在memcached内已经有缓存信息时将数据库的数据更新后,上述程序会抓到旧的数据,这属于Cache coherency的问题,其中一种的解决方法是在更新数据库时,同时更新memcached内的数据
function update_foo(int userid,string dbUpdateString){
result = db_execute(dbUpdateString);
if(result){
data = createUserDataFromDBString(dbUpdateString)
memcached_set("userrow:"+userid,data);
}
}