想给model写个数据缓存...放弃了
前台逻辑中有部分object,也有array,而数据库出来的全是object,redis将数组全部存为array,取出array,结果集为了保留原先的输出,很多地方需要转来转去,函数操作性能反而降低了,放弃,先放这儿备忘。 之前一直想用静态数组存的,可是不知道为什么总是更新,而获取一直是空的...静态变量不是存在三界之外吗?回头研究研究
private function dbSetCache($key, $value) { $type = gettype($value); if($type == 'array' && isset($value[0])) $type = is_object($value[0]) ? 'object' : 'array'; if(strpos($key, 'getList') === 0) $type = 'page'; $this->redis->{'DBCache:' . $this->table . ':' . $key} = ['type' => $type, 'val' => $value]; } private function dbGetCache($key) { $result = $this->redis->{'DBCache:' . $this->table . ':' . $key}; $data = false; if($result) { switch($result['type']) { case 'object': $data = arrayToObject($result['val']); break; case 'page': $data = $result['val']; $data['data'] = arrayToObject($data['data']); break; default: $data = $result['val']; break; } } return $data; } private function dbDelCache($key = '') { if(empty($key)) { $keys = $this->redis->keys('DBCache:' . $this->table . ':*'); if(is_arr($keys))foreach($keys as $key) { //处理redis缓存命名空间 $key = explode(':', $key); unset($key[0]); $this->redis->delete(join(':', $key)); } return true; } return $this->redis->delete($key); }