<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>

                當系統達到一定流量時,一般都會通過增加緩存來提高系統性能。下面是最典型的緩存原理圖: ![](https://box.kancloud.cn/85ef24cfb01bb90b56d9039dddbb6e09_290x506.png) 根據上圖實現的緩存機制,簡單而實用,而且程序也比較簡單,確實能大幅度提升系統性能。 但是當程序往數據庫里增加或者更新數據時,就要同時更新緩存,如下圖 ![](https://box.kancloud.cn/7e2197f0a43da745413a3455de9a78bf_419x386.png) 當緩存很多,并且如果業務創建緩存的地方分散在各個功能,各個文件里時,很容易導致有些緩存忘記更新,從而導致一些業務上的錯誤,而這些錯誤很難通過測試來發現的。 在實際項目的實踐中,緩存的難度主要是在緩存的更新部分。舉個例子,假如一個簡單用戶表結構如下 ``` CREATE TABLE `wp_user` ( `uid` int(11) NOT NULL AUTO_INCREMENT COMMENT '用戶ID', `nickname` varchar(50) NULL COMMENT '用戶名', `mobile` varchar(30) NULL DEFAULT NULL COMMENT '聯系電話', `login_count` int(10) NULL DEFAULT 0 COMMENT '登錄次數', `in_blacklist` tinyint(2) NULL DEFAULT 0 COMMENT '是否拉黑', PRIMARY KEY (`uid`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 1 ROW_FORMAT = Compact; ``` 系統通過用戶ID創建一個緩存,緩存的內容是ID對應這個用戶的所有信息,即有用戶名,電話,登錄次數,是否拉黑這些信息。 - 假如系統提供一個更新用戶信息的功能,能更新用戶名,聯系電話,那么用戶在提交數據更新到數據庫時,也要更新上面的緩存。 - 假如用戶每次登錄時都把登錄次數加1,那么更新完后也要更新上面的緩存。 - 假如管理員在后臺把這個用戶拉黑,也要更新上面的緩存。 我們看到上面三個功能都要更新同一個緩存,如果這三個功能都寫在一個文件里還好,否則后續要加新的更新操作時就很容易忘了更新。如果是幾個程序員協同開發那更是噩夢。 **有沒有一種方法,讓緩存不用關心這么多業務更新操作?** 有,我們可以通過以下方式實現 ![](https://box.kancloud.cn/1cdff275227c0362774ddc2a3ef57eb1_267x443.jpg) 業務系統只需要直接更新數據庫即可,所有更新緩存的操作都由本終極解決方案自動完成。是不是很清爽,是不是很高大上! **它通過減少更新數據庫后需要執行一堆更新緩存的業務代碼,實現系統代碼指數級精簡**
                  <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>

                              哎呀哎呀视频在线观看