使用快取封裝高復用資料

2021-04-18 16:58:55 字數 2103 閱讀 7277

先簡單說下功能:

1,時間段,可針對一周的每天制定時間段

2,乙個qq可分配多個時間段

4,每個組每次僅顯示乙個qq號,具體顯示哪個由針對該組設定的輪顯週期來決定(乙個時間,比如15分鐘顯示下乙個)

5,乙個qq可屬於多個組

6,每個qq有兩種狀態,一種為正常,一種為請假,如果為請假則不顯示該qq,而顯示為該qq設定的替代qq號進行顯示

我這個沒有什麼專案經驗的新手,對處理這些問題還沒有形成乙個定式,只能在黑暗中摸索,可以說,困難重重:

1,資料復用

部分資料,不管在前台還是後台,使用次數都非常頻繁,例如組資訊,還有組與qq的關聯資訊,qq與時間段的關聯資訊,這部分資料

如果每次使用都需要複製資料獲取的**的話,不僅繁瑣,而且對維護會帶來極大的不便,對於將這些資料封裝為物件,也同樣比較麻煩,

對效能也會造成一定影響,而且資料的組織也一樣顯得凌亂不堪(也許是我的封裝方式的原因,我是第一次開始嘗試全站物件導向)

2,效能

對於這個系統來說,效能至關重要,因為在頁面呼叫時是include的前台顯示頁面(儘管我一再強調可以使用iframe包含,但是客戶不同意),如果效能低下,將會對整站的效能

造成乙個很大的拖累,快取前台顯示內容雖然可以部分解決,但是因為快取生命週期非常短暫(要受到qq輪顯週期的限制,且要比輪顯週期低的多才能保證資料更新的及時性),而每次重新獲得資料都需要有大量的資料庫操作,儘管每個表都很小,

但是我還是希望盡力避免

綜上所述,我希望尋找一種更加節省開發時間,更加高效能,復用資料更加簡單,更加利於維護的方案,讓我高興的是,我找到了:使用快取

我這裡說到的快取,並不是原本我認識中單打獨鬥的快取,而是成系統的進行快取,這種快取方案,只適合與那些呼叫頻繁,而又資訊量不多的情況,例如使用者組,欄目等。

也許這種方案很爛,或者已經為人所採用,我仍出板磚一塊,砸到高手一名,能引的那位高手向我仍出一塊美玉,我就賺到了。

先來看一下快取讀取函式的示意**:

複製php內容到剪貼簿

php**:

<?php

function 

read_cache

($cacheid

)    

//這種快取方式不需考慮生命週期

//讀取快取內容的**

$iscache

[$cacheid

] = 

'快取內容'

; return 

$iscache

[$cacheid

]; }

?>

下面看一下快取生成的**

複製php內容到剪貼簿

php**:

<?php

class 

cachemanager

else  }

//使用者組表相關快取生成

private function 

groupcahce

()

//欄目相關快取生成

private function 

classcache

() }

?>

快取的形式是靈活多樣的,拿我上述的那個專案中的qq與組的關聯表來說:

你也許需要這樣的形式:

複製php內容到剪貼簿

php**:

<?php

array(

'qqid' 

=> array(

'組1id'

,'組2id'

), );

//和

array(

'組1id' 

=> array(

'qq1id'

, 'qq2id'

), );

?>

宗旨就是,怎麼簡單方便怎麼來。

我的這套快取方案的優點就是,所有快取的生成集中管理,在呼叫快取資料時,不需要考慮這個快取是如何生成的,直接拿來用就可以。

當然,也有缺點,那就是不適合大資料量的快取,這套方案的適用範圍就是那些在乙個應用中需要頻繁呼叫的那些資料。

以上**,僅僅是示意,具體如何去用,還需要您自己去參詳。

C 使用Json封裝資料和解析資料

編譯出來的庫名 json vc71 libmtd.lib debug json vc71 libmt.lib release 需要包含的標頭檔案 jsoncpp src 對應原始碼 include json 該目錄下所有檔案 呼叫庫方式 include json json.h ifdef debug...

vue使用keep alive實現資料快取不重新整理

到現在,接觸vue也小段時間了,專案進行到了一定程度,然而專案缺少了快取機制,所以每次跳轉頁面都會重新created一下資料,雖說系統的資料請求速度很快,但是這樣做對系統的效能會有很大的壞處的,所以到這裡就要對系統優化下,新增快取了。其實到現在,對於vue還是沒有玩通,每深挖一次,就會發現一次vue...

Python程式設計 使用cachy快取資料

cachy使用pickle對物件進行序列化 支援驅動 file,redis,memcached,database 文件pip install cachyfrom cachy import cachemanager stores cache cachemanager stores 新增 cache.p...