使用redis優化操作 和 頁面靜態化

2021-09-22 13:05:33 字數 2203 閱讀 6672

當開始我們寫的商品分類業務層,是前台每次直接訪問資料庫進行資料讀取,這樣的設計在高併發的情況下容易導致資料庫崩潰的傳送,因此我們需要進行優化處理

為什麼使用redis

因為redis的資料存在快取中所有讀取快,壓力相對於直接訪問資料庫小

優化思路:

使用者在第一次訪問的時候,先去拿取redis快取中的資料,判斷為空,然後查詢資料庫存入redis的**快取中,並將資料返回到前台展示給客戶,下次訪問直接從redis的快取中讀取

為什麼要設計**快取

因為如果要使用集群,單將資料存入乙個伺服器中,進行負載均衡時資料不能同步

redis的使用

查詢資料庫的方法

public listgetalldataby_db()
查詢出的資料進行拼裝

private void makestructure(listproducttypes, listproducttypes1) );

for (producttype producttype : producttypes1) else

}} 這裡判斷redis快取中是否有資料,沒有呼叫查詢資料庫的方法,放入快取中

public listgettreedata() catch (exception e)

//判斷是否為null

if (stringutils.isempty(redis))else

//傳入一級分類集合 和 所有的資料 進行選單層級拼

makestructure(producttypes, producttypes1);

return producttypes;

}}

頁面靜態化

使用freemaker,velocity技術進行頁面靜態化

velocity的工具類

我們只需要傳入model(資料) 還有模板路徑 和生成路徑即可

public class velocityutils 

/*** 返回通過模板,將model中的資料替換後的內容

* @param model

* @param templatefilepathandname

* @return

*/public static string getcontentbytemplate(object model, string templatefilepathandname) catch (exception e)

return "";

} /**

* 根據模板,靜態化model到指定的檔案 模板檔案中通過訪問model來訪問設定的內容

* * @param model

* 資料物件

* @param templatefilepathandname

* 模板檔案的物理路徑

* @param targetfilepathandname

* 目標輸出檔案的物理路徑

*/public static void staticbytemplate(object model, string templatefilepathandname, string targetfilepathandname) catch (exception e)

} /**

* 靜態化內容content到指定的檔案

* * @param content

* @param targetfilepathandname

*/public static void staticby******(object content, string targetfilepathandname) ";

velocitycontext context = new velocitycontext();

context.put("content", content);

stringwriter writer = new stringwriter();

ve.evaluate(context, writer, "", template);

try catch (ioexception e)

}

@override

public boolean updatebyid(producttype entity)

Confluence 6 其他頁面操作和頁面大小

在 confluence 的頁面中,你可以對 confluence 進行下面的一些操作 我們建議你不要在頁面或者附件名中使用特殊字串。如果你使用了特殊的字串,頁面或者附件可能不能在 confluence 的搜尋中找到,同時也有可能導致 confluence 的功能損壞。如果你對乙個頁面進行重新命名,...

C map的基本操作和使用

map是c 的乙個標準容器,她提供了很好一對一的關係,在一些程式中建立乙個map可以起到事半功倍的效果,總結了一些map基本簡單實用的操作!1.map最基本的建構函式 mapmapstring mapmapint mapmapstring map char string mapchar mapmap...

C map的基本操作和使用

map是c 的乙個標準容器,她提供了很好一對一的關係,在一些程式中建立乙個map可以起到事半功倍的效果,總結了一些map基本簡單實用的操作!1.map最基本的建構函式 mapmapstring mapmapint mapmapstring map char string mapchar mapmap...