欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

缓存渗透、缓存渗透、缓存雪崩的区别和解决方案 [php] - 二、缓存渗透

最编程 2024-04-03 08:51:31
...

        缓存击穿是指缓存中没有但数据库中有的数据(一般是缓存时间到期),这时由于并发用户特别多,同时读缓存没读到数据,又同时去数据库去取数据,引起数据库压力瞬间增大,造成过大压力

      解决方案:

  1. 设置热点数据永远不过期。
  2. 加互斥锁,互斥锁参考代码如下:(逻辑代码,不可运行)
    protected function getData()
    {   
    ¦   $ret = $this->getRedis($key);
    ¦   if ($ret == null) {
    ¦   ¦   try {
    ¦   ¦   ¦   if (lock.get) {
    ¦   ¦   ¦   ¦   $ret = $this->getMysql($key);
    ¦   ¦   ¦   ¦   if ($ret != null) {
    ¦   ¦   ¦   ¦   ¦   $this->setRedis($key, $ret);
    ¦   ¦   ¦   ¦   }   
    ¦   ¦   ¦   }   
    ¦   ¦   } catch {
    ¦   ¦   ¦   lock.unlock;
    ¦   ¦   }   
    ¦   }   
    ¦   return $ret;
    }