redis 快取使用者賬單策略

2022-07-24 19:15:13 字數 1603 閱讀 9576

最近專案要求分頁展示使用者賬單列表,為提高響應使用redis做快取,用到的快取策略和大家分享一下。

需求描述:展示使用者賬單基本資訊以時間倒序排序,篩選條件賬單型別(所有,訂單收入、提現、充值...)。

賬單資訊分成兩部分快取:1.使用者賬單id 列表;2.賬單基本資訊。先查找到使用者賬單id 列表,再根據賬單id查詢賬單基本資訊快取

1.1.使用者賬單id 列表(userbillidlistcache)

快取資料型別:list;

key規範:   userbilllist:userid:billtype 

userid:使用者id,billtype:賬單型別(所有,訂單收入、提現、充值...)即有多少個賬單型別就有多收個使用者賬單id 列表快取 + 使用者所有賬單id 列表快取

value:使用者賬單id(時間倒序)

同乙個使用者選擇不同的賬單型別命中不同的賬單id列表快取。

1.2.賬單基本資訊(billcache)

快取資料型別:hash; 

key規範:   bill:billid;

方便維護

在介面中應用:

1.1.分頁查詢使用者賬單列表:

引數:userid,billtype,pageno,pagesize

返回值:returnlist

根據userid,billtype查詢快取userbillidlistcache

if(null==userbillidlistcache){

資料庫查詢 userbilllist  (select  .... bill_db  where userid and billtype  order by createtime desc ;)

快取userbilllist  :userbillidlistcache,billcache

分頁處理 returnlist

else{//userbillidlistcache存在

分頁取 billidlist

通過賬單id取billcache 組裝 returnlist

2.2.新增賬單

根據userid,billtype查詢快取userbillidlistcache 和使用者所有賬單id 列表快取

if(null!=userbillidlistcache){//userbillidlistcache存在

新增新賬單id到userbillidlistcache (lpush userbillidlistcache  billid);

快取賬單基本資訊billcache;   

2.3.修改賬單資訊

根據billid 查詢是否存在快取 billcache 如果存在修改 billcache 內容

if  hexists bill:billid   

hmset bill:billid status 1 statusname 提現成功

ps:對快取操作的方法單獨抽出來,這裡沒有單獨寫,根據具體情況設定快取生命週期。

Redis快取策略

redis快取一般使用cache aside pattern原則。什麼是 cache aside pattern cache aside pattern即為旁路快取方案的經驗實踐,分為讀實踐和寫實踐。那麼運算元據的時候先操作快取還是先運算元據庫?1.讀請求 先從快取中讀取所需資料,如果沒有則從資料庫...

Redis更新快取策略

1 快取 失效 客戶端請求資料先從快取中查詢,如果沒有再查詢資料庫,最後將資料放入快取 2 快取 命中 客戶端從快取中直接取到資料,返回結果 3 快取 更新 客戶端寫入資料到資料庫,成功之後,讓快取失效 下次請求時從快取中拿不到,則查詢資料庫,再放入快取 4 為什麼不採取更新後刪除快取策略?防止併發...

Redis快取逐出策略

把 redis 當做快取使用時,有時你可以方便的讓它在新資料時自動逐出舊資料。這一點大家都比較清楚,因為 memcached 預設也會這麼幹。redis 僅支援 lru 逐出策略。下文主要講述 redis maxmemory 指令,這個指令用於限定記憶體使用量,以及講述了redis 使用到的 lru...