<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                - 說明:一般redis作為緩存工具使用,例如統計類數據,熱點數據放在redis,因為redis是內存數據庫,讀取速度很可觀,能夠有效減輕mysql壓力; - 注意:需要注意的是緩存穿透和雪崩問題 - 緩存穿透即繞過redis直接讀取mysql,例如熱點數據為空,不保存redis,導致每次請求讀取不到redis時都去查詢MySQL,建議是空數據時也要寫一個空值到redis中,并且設置一個小的過期時間(如幾分鐘等等); - 緩存雪崩是redis突然失效,導致所有請求都去到了mysql,這種情況簡單方法是用互斥鎖,網上還有各種方法自行搜索 <br/> ##### 緩存穿透 ```php if (!($cacheData = $redis->get('key'))) { $data = $mysql->getData(); if (empty($data)) { $redis->set('key', json_encode($data), 60); // 當數據為空時,設置一個小的過期時間,這樣的好處是可以減低數據更新延時率 } else { $redis->set('key', json_encode($data), 7200); // 正常的過期時間為兩個小時 } } ``` ##### 緩存雪崩 (參考:http://huoding.com/2015/09/14/463) ```php $key = 'cache_create_lock'; // 鎖的名稱 $value = sha1(uniqid(getmypid().'_'.mt_rand().'_', true)); // 唯一值,加入唯一值判斷是為了避免刪除到其他操作的鎖(這種情況是發生在生成cache過程很久導致鎖到了過期時間,此時鎖被另一個用戶拿到,而當代碼繼續執行時,會把另一個用戶拿到的鎖誤刪掉) $ttl = 10; // ttl表示超時時間time to live,單位是秒. if ($redis->set($key, $value, array('nx', 'ex' => $ttl))) { // 鎖: nx表示not exists. ex表示expire. $cache->create(); // 加鎖后執行業務邏輯,這里是生成緩存,注意鎖的過期時間必須比create長,否則會出現死鎖 if ($redis->get($key) === $value) { // 認證鎖,防止誤刪 $redis->del($key); } } else { // 拿不到鎖,是sleep幾秒后重新查詢緩存,還是直接返回系統繁忙狀態? // 緩存失效,又拿不到鎖生成緩存,怎么辦?直接返回請求失敗? } ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看