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

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                第一、基于內存輪詢: 即:查(Memecached-Redis 簡稱 MR )狀態,決定…… 例如: 零(0):--(初始化過程): 通過讀取mysql(等持久化數據庫)初始化 MR 的狀態: Persistent database: 持久化磁盤數據(庫) PD01= 一級持久化數據庫; 用PD和MR(不帶任何編號的時候,是個相對概念!) 1、flag_P1D_ishaveNewmember(標志位_注冊用戶被增、刪、改過了) 【1:數據鮮活!用戶沒有被增、刪過,所以不需要刷新MR數據; 【2:用戶被增、刪過了、或改過了,需要,刷新MR中數據; 【3:強制刷新MR中數據,一般用作,第一次初始化!! *:而寫insert + update,此數據庫表的時候,就必須注意: (1)數據庫的標志位: flag_P1D_ishaveNewmember 設置為: 1(簡稱PD標志1) (2)緊接著,把MR的標志位: flag_MR_ishavaNewmembers馬上設置為:1 所以: 寫數據庫表+PD標志1+和MR標志1 此 三個步驟 具有 “原子性質”! 比如:2、flag_MR_ishavaNewmembers(標志位:有新注冊用戶了?) 關鍵狀態:0、1 (鮮活)狀態雷同了,和 2:不鮮活 *[-1:強制從(持久化)數據庫mysql,初始化會員信息; [0:用戶信息在MR中是完整的,不需要初始化,直接用MR中的就好,(避免磁盤讀寫成功)干workerman干的活兒就好……; [1:數據保持鮮活!不管用戶信息在MR中是不是完整的,不需要初始化,暫時直接用MR中的就好; [2:有新用戶信息(用戶注冊了,或用戶信息增、刪了,所以也需要重新更新MR中的用戶信息; [3:MR中的信息只是,不影響workerRun的修改,不需要從mysql等 中初始化 MR_tables ] 注意有關: **使用MR時**, 的一套(新)邏輯: 原則上: 一、總是先查MR中的標志位: redis01_flag_mr_ishavaNewmembers; 1、沒查到?去mysql中查,轉步驟3(或執行程序塊33); 2、在MR中查到了, 判斷(1)不需要更新(如:標志位0==redis01_flag_ms_ishaveNewmembers)(數據鮮活!)太好了! …那么直接用MR中的數據就好; 判斷(2)需要更新(或陳舊了?! 即: 2==redis01_flag_ms_ishaveNewmembers)麻煩了...(程序塊33)老實去PD(mysql)中讀取吧……; 3、您費勁從Mysql中讀取數據,包括: 程序塊33:(Label33): (1)標志位數據:Fflag_mr_ishavaNewmembers=1; (2)標志位數據:去PD中,讀取用戶數據 第二部分、 持久化的新(一套)邏輯: 持久化的機制首要由: MR中的:flag_M1R_isneedPersistence2pd01標志: 0:不需要持久化(或者說數據鮮活,沒有做過任何的增刪改) 1: 一般地:MR中的數據(相較PD而言)只做改就夠了, 真需要增、刪操作時候,應該原子化的: A:(1)增刪PD (2)修改pd中標志位 (3)修改mr中標志位…… 然后由worker 自己更新mr中相應數據……以后,再繼續工作……; B:MR中只做“改”的工作, (1)改MR數據 (2)改MR(redis)的flag_M1R_isneedPersistence2pd01為2(需校正貨品了--注意和退貨有所區別,我們稱為“校貨”!)(3)就不做啥了,(而是等待Worker在適當的時機自動去持久化到PD 注意運行Worker(RunWorker)一般不做:大增(真增)、大刪(真刪)、大改(真改)這樣的持久化該做的工作……持久化由持久化專用模塊(比如PersistenceWorker專門(根據規則)去做! 2:需要持久化,但抽空持久化就OK; 3:需要馬上持久化,不惜阻塞別的進程(不惜阻塞別的Worker工作) 而:flag_P1D_isneedPersistence2pd01是:flag_M1R_isneedPersistence2pd01的初始值(而已) ======================================================================== 一、用戶注冊: 1、寫用戶信息,失敗另說(返回唄);如果 成功,那么: (1)寫Mysql中的標志位:flag_MR_ishavaNewmembers(標志位:有新注冊用戶了)! (2)更新MR中的標志位:redis01_flag_MR_ishavaNewmembers; 一:flag_MR_ishaveNewmembers?(標志位:有新注冊用戶了?) 1、(讀數據庫mysql) 同理: **有關增改刪(查)TimeTable的一套(新)邏輯:** 零(0): 初始化時: 第一次運行初始化: (可檢查)mysql中的,flag_chushihuaAllTimetableData應該等于==1,否則啥也不做(返回)!! 當:1==flag_chushihuaAllTimetableData(即系統可以正常初始化) 則查:flag_HaveAllNewTimetableDatas(有新timetable_datas)==0,沒新timetable_datas信息,還是啥也不做! 當:1==flag_HaveAllNewTimetableDatas: 則進入foreach(遍歷 每個 用戶) 1、單個用戶的( Id== $idnum: 查他(它)的flag_haveNewTimetableData[$idnum] (1)當flag_HaveAllNewTimetableDatas[$idnum] ==1(即此用戶的timetabledata完備,省事了……等著workerman 處理……! (2)而當2==flag_HaveAllNewTimetableDatas[$idnum](即此用戶的timetabledata不完備,麻煩了……老實去Mysql中讀取更新吧; 更新完 (別忘記) 把{flag_HaveAllNewTimetableDatas[$idnum]=1;} 第三部分: workerman們的干活兒(一套)邏輯: 一、 有數據更新嗎? whither_haveWorkerdata 1、0==whither_haveWorkerdata (即啥活兒沒有),休息,啥也不用干(但是好像不能sleep); 2、0!=whither_haveWorkerdata: (1)有用戶更新嗎? (A)0==flag_MR_ishavaNewmembers,沒用戶更新,不太麻煩,去代碼塊 444:查單個用戶的timetableData就可以…… (B)0 !=flag_MR_ishavaNewmembers, 麻煩點, 去 代碼塊: 5555,更新 所有用戶列表; …… (2)有(用戶的)Timetabledatas更新嗎? (A)0==flag_MR_ishaveTimetableDatas,沒 timetableDatas更新,那干脆退出吧…… (B)0!=flag_MR_ishaveTimetableDatas[$idnum](某用戶的)timetable更新了, [代碼塊444:] 更新此用戶的 TimetableData[$idnum], 更新完(別忘記:flag_MR_ishaveTimetableDatas=0
                  <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>

                              哎呀哎呀视频在线观看