使用memcache处理缓存的三种方案
这篇文章主要讨论的问题是:如何为项目设计一个完整而简洁的缓存系统。只讲做法,不讲原理。在我们项目中,使用到了三种方法,来保证了缓存系统的有效简洁。
1) 第一种,最常见的方式 读取数据的主要步骤如下:
1)先从缓存中获取数据(如果在缓存中获取到,则直接返回已获取的数据)
2)如果获取不到,再从数据库里面读取相应的数据
3) 把获取到的数据加入缓存中
注意:这种方式是在Model层,也就是业务处理层加入的。
实例代码如下:
/** * 删除(根据主键) * * @param mixed $pk * @param array $extraWhere 格外的WHERE条件 * @return bool */ public function deleteByPk($pk, array $extraWhere = array()) { $where = $this->_getPkCondition($pk); if ($extraWhere) { $where = array_merge($where, $extraWhere); } if (! $result = $this->where($where)->delete()) { return $result; } // 清理缓存 if ($this->_isCached) { $this->_deleteRowCache($pk); } // 统计Memcache读写次数 Dao('Massive_MemcacheRecord')->mark($this->_dbName, $this->_tableName, __METHOD__, 1); return $result; }