轉)淘淘商城系列 在業務邏輯中新增快取

2021-09-07 11:57:18 字數 1324 閱讀 7870

上文我們一起學習了如何使用spring容器來管理redis單機版和集群版實現,本文我們將一起學習如何在業務邏輯中新增快取。 

我們首先應該明了乙個道理,在業務邏輯中新增快取的乙個指導思想就是新增快取不能影響正常業務邏輯。那麼應該怎麼新增快取呢?我們可看看首頁大廣告的展示流程,如下圖所示。 

從上面的流程圖可知,我們應在呼叫服務層的服務查詢首頁內容時新增快取,其實在首頁中我們只實現了首頁大廣告的展示,說得更具體點應是在查詢內容列表時新增快取,新增快取的步驟如下:

查詢資料庫之前先查詢快取。

查詢到結果,直接響應結果。

查詢不到結果,即快取中沒有,那麼需要查詢資料庫。

把查詢結果新增到快取中。

返回結果。

@override

public listgetcontentlist(long cid) {

// 查詢資料庫之前,先查詢快取,並且新增快取不能影響正常業務邏輯

try {

我們可以在以下**處

string json = jedisclient.hget(content_key, cid + "");

打斷點檢視一下第一次訪問首頁大廣告位和第二次訪問首頁大廣告位的情況。 

快取有個問題就是如果資料庫表中的資料做了修改,快取是需要同步的,否則查詢的還是老資料,因此凡是涉及增、刪、改的操作都需要同步快取。我們以新增內容為例,應將contentserviceimpl類中的insertcontent方法修改為:

@override

public taotaoresult insertcontent(tbcontent content) {

// 補全pojo的屬性

為方便大家複製,現將contentserviceimpl類的**貼出。

/**

* 內容管理service

* title: contentserviceimpl

* description:

* company: www.itcast.cn

*@version 1.0

*/@service

下面我們便來新增一條廣告,那麼會先清除快取然後再去查詢資料庫。 

多層架構在業務邏輯層實現IOC

在業務邏輯層實現ioc,可以有效的減少 量,把通用的操作寫在通用的類中,然後在ui層對誰操作就建立誰的例項。具體做法看 service層核心 介面規範 namespace service 實現 namespace servicepublic services region iservices成員pu...

淘淘商城系列 nginx配置虛擬主機

標籤 淘淘 2017年06月12日 19 14 05 1445人閱讀收藏 舉報阿昀的淘淘 系列 101 目錄 通過埠來區分,這也是我們用的比較多的形式,就像我們在一台伺服器上裝多個tomcat,多個tomcat執行在不同的埠一樣。通過網域名稱來區分,如果大家都想用80埠,這時怎麼辦呢?這時就可以通過...

spring事務配置是在業務邏輯層還是dao層?

spring事務配置是在業務邏輯層還是dao層?業務邏輯層和dao層都可以配置事務處理,如果乙個service呼叫多個dao,它們如果是乙個事務,那麼事務應該配置業務邏輯層,否則配置在dao層就可以了。配置到dao層 propagation required propagation required...