memcached

196 阅读1分钟

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);
    }
}