最近專案要求分頁展示使用者賬單列表,為提高響應使用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...