redis頁面緩存html,使用redis實現(xiàn)頁面緩存_第1頁
redis頁面緩存html,使用redis實現(xiàn)頁面緩存_第2頁
redis頁面緩存html,使用redis實現(xiàn)頁面緩存_第3頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、redis頁面緩存html,使用redis實現(xiàn)頁面緩存本文是 一書第二章的讀書筆記設計方案第一個域,是zset類型的key是viewed:userSessionid存放的是商品id與用戶查看此商品時的timestamp第二個域,是zset類型的可以是viewed:member是商品id(全局范圍內),score是商品被用戶(全局范圍內)瀏覽的次數(shù)(是負數(shù))第三個域,是hash類型的- key是item:itemld存放的是商品的信息用戶查看了某件商品public void viewitem (Jed is conn, String token, String user, String item

2、)long timestamp = System.currentTimeMillis() / 1000;if (item != null) 用戶user在某時瀏覽了某件商品conn.zadd(viewed: + token, timestamp, item);只記錄用戶最近查看的25件商品conn.zremrangeByRank(viewed: + token, 0, -26);有序set里score的越小排名越靠前conn.zincrbyCviewed:, -1, item);/-15il?)試著緩存這個頁面首先我們要判斷某個url是否能緩存/*如果request不符合規(guī)范就不緩存返回fal

3、se如果商品還沒有被訪問過自然不能緩存返回false如果商品被訪問過但是訪問的排名在10000之后也就不緩存了返回false如果商品被訪問過且訪問的排名在10000之內就說明可以緩存返回trueparam connparam request“returnVpublic boolean canCache(Jedis conn, String request) 這樣的字符串中獲得paramter代碼就不贅述了Map params = getParams(request);if (params = = null)return false;獲得itemX這個信息String itemld = extr

4、actltemld(params);/params.containsKey(_)這個條件只是示例/ffl戶可以加上自己的判別條件if (itemld = null | params.containsKey(_)return false;)“viewed:這個有序集里存放的是商品的訪問次數(shù)Long rank = conn.zrankCviewed:, itemld);/查看這個商品的訪問量是否在前10000內如果rank二二null說明商品還沒有被訪問過return rank != null & rank getMostPopulate(Jedis conn, int page)int star

5、t 二(1) * ARTICLES_PER_PAGE;intend = start + ARTICLES_PER_ 1;Set ids 二 conn.zrevrange(viewed:z start, end);List items = new ArrayList();for (String id : ids)Map itemData = conn.hgetAII(id);itemData.put(idz id);items.add(itemData);)return items;)在viewitem里,我們已經(jīng)記錄了所有商品的瀏覽次數(shù)(負數(shù))conn.zincrby(viewed:; lz

6、item);那么經(jīng)過n天后,這個viewed里的數(shù)據(jù)項就很多了,而且其實也沒有必要一直保存著所有商品的瀏覽次數(shù)所以publicclass RescaleViewedThread implementsRunnable private Jedis conn;private boolean quit;public RescaleViewedThread(int limit)conn = newJedis(-0);conn.auth(dlfl23123);)public void shutDown() quit=true;)Override public void run()while (!quit) try 移除排名20000之后的商品瀏覽信息conn.zremrangeByRankCviewed:, 0, -20001);將所有商品的瀏覽數(shù)量降低一半conn.zinterstore(viewed/viewed:0.5);Thread.sleep(300); catch (InterruptedException e) /TODO Auto-generated catch block e.printStackT race();)系統(tǒng)后動后就一直運行這個線程。那么怎么做呢?怎么集成到我的項目里呢?我的項目

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論