function select(){
//format sql string
$sql = format($sql);
//a unique key to store this query
$encodeKey = md5($sql);
if( $cacheObj = $memcache->get( $encodeKey ) ){
// cache data exist ,to get it
$result = $cacheObj;
}
else{
//or create a cache data
$query = $this->exec($sql);
$result = mysql_fetch_array( $query );
$memcache->set( $encodeKey, $result );
}
return $result;
}
我使用md5方法将查询字符串存储为memcached键,这是个好办法吗?或者比这更好的东西。
在"format"函数中,从id="5"的表中选择字段,并从id=5的表中选中字段是相同的查询,所以我必须写很多代码来格式化它们。任何更好的设计都将受到赞赏
使用md5生成密钥是可以的,尽管它可能会对性能产生潜在影响。使用该方法的缺点是,如果基础数据发生变化,则更难选择性地使缓存中的数据过期。