name的key protected $allKey = 'AreaChinaCache'; protected $notArea = 'notArea';//缓存所有不存在的地区 public function __construct($cacheDb = 'mapping') { $this->cache = Factory::cache($cacheDb); } /** * 缓存所有省 * @param $data * @return ResultWrapper */ public function cacheAllProvince($data) { $result = $this->cache->set($this->allProvince, gzcompress(json_encode($data))); if ($result) { return ResultWrapper::success('success'); } else { return ResultWrapper::fail('error', ErrorCode::$redisWriteError); } } /** * 获取缓存中的所有省 * @return array|mixed */ public function getAllProvince() { $result = $this->cache->get($this->allProvince); if (!$result) { return []; } return json_decode(gzuncompress($result)); } /** * 判断是否有省份的缓存Key * @return boolean */ public function isHaveProvinceKey() { $result = $this->cache->has($this->allProvince); return $result; } /** * 缓存对应省份下城市 * @param $data * @param $code * @return ResultWrapper */ public function cacheCityByCode($data, $code) { $result = $this->cache->set($this->provinceCodeRelationCityKey . '::' . $code, gzcompress(json_encode($data))); if ($result) { return ResultWrapper::success('success'); } else { return ResultWrapper::fail('error', ErrorCode::$redisWriteError); } } /** * 通过省份code-->市 * @param $code * @return array|mixed */ public function getCityByProvinceCode($code) { $result = $this->cache->get($this->provinceCodeRelationCityKey . '::' . $code); if (!$result) { return []; } return json_decode(gzuncompress($result)); } /** * 判断缓存中是否有此key(城市) * @param $code * @return mixed */ public function isHaveCityKeyByProvinceCode($code) { $result = $this->cache->has($this->provinceCodeRelationCityKey . '::' . $code); return $result; } /** * 缓存市下的区 * @param $data * @param $code * @return ResultWrapper */ public function cacheAreaByCode($data, $code) { $result = $this->cache->set($this->cityCodeRelationAreaKey . '::' . $code, gzcompress(json_encode($data))); if ($result) { return ResultWrapper::success('success'); } else { return ResultWrapper::fail('error', ErrorCode::$redisWriteError); } } /** * 通过市Code->区 * @param $code * @return array|mixed */ public function getAreaByCityCode($code) { $result = $this->cache->get($this->cityCodeRelationAreaKey . '::' . $code); if (!$result) { return []; } return json_decode(gzuncompress($result)); } /** * 判断缓存中是否有此key(区) * @param $code * @return mixed */ public function isHaveAreaKeyByCityCode($code) { $result = $this->cache->has($this->cityCodeRelationAreaKey . '::' . $code); return $result; } /** * 缓存 name => code * @param $name * @param $code * @return ResultWrapper */ public function cacheCodeRelationName($name, $code) { $result = $this->cache->zadd($this->codeRelationNameKey, $code, $name); if ($result) { return ResultWrapper::success('success'); } else { return ResultWrapper::fail('error', ErrorCode::$redisWriteError); } } /** * 通过code获取集合中的name * @param $code * @return string */ public function getNameByCode($code) { $result = $this->cache->zrangebyscore($this->codeRelationNameKey, $code, $code); if (!$result) { return ''; } return $result; } /** * 通过name获取code * @param $name * @return int */ public function getCodeByName($name): int { $result = $this->cache->zscore($this->codeRelationNameKey, $name); if (!$result) return 0; return $result; } /********************************************通过地区名称缓存code******************************************/ /** * 保存 * @param $key * @param $value * @return int */ public function setCache($key, $value) { return $this->cache->hset($this->allKey, $key, $value); } /** * Doc: (des="") * User: XMing * Date: 2021/1/20 * Time: 5:25 下午 */ public function setNotArea($field,$value = 0) { return $this->cache->hset($this->notArea, $field, $value); } /** * 获取 * @param $key * @return string */ public function getCache($key) { $result = $this->cache->hget($this->allKey, $key); if(!$result){ return ''; } return $result; } /** * 删除 * @param $key * @return int */ public function delCache($key){ return $this->cache->hdel($this->allKey, $key); } }