Memcached

示例

将纯粹使用数据库查询的代码加上memcached支持是很简单的，假设这是原来的代码：
function get_foo (int userid) {
   result = db_select("SELECT * 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);
    }
    return result;
}
上述的程序会先到memcached检查是否有userrow:userid的数据，如果有则直接传回结果，如果不存在时再去数据库查询，并将结果放到memcached内。
在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);
    }
}