亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

mapper二級緩存和分頁插件的問題

mapper層二級緩存和分頁里多租戶解析器的問題,

A租戶第一次執行了一個語句,還沒有緩存,通過分頁插件動態加了租戶條件,取出并緩存了數據Adata,但是緩存的key是不帶租戶條件的。

B租戶執行了和A租戶相同的語句,命中了Adata的緩存(緩存key同樣不帶租戶條件),直接取出了Adata的數據,導致數據不對

講道理的話,A和B如果都是先經過分頁插件加上了租戶過濾條件,再判斷緩存的話,就不會命中錯誤的緩存。

二級緩存也和分頁查詢總數有沖突,列表查詢的時候,命中的緩存,就不會再去查詢總數,導致返回的total是0

不知道是否是使用方式不對,如何解決,查很久的資料了,求指導一下

正在回答

3 回答

如果你可以考慮關閉mapper層二級緩存,將緩存放到service層的話。那么修改后再試試,看是否依然還存在問題,如果還有問題,可以再反饋給我。

1 回復 有任何疑惑可以回復我~
#1

慕仙7039684 提問者

首先感謝回復。 系統并沒有較復雜的數據需要處理,一般返回的結果就是mapper層直接出來的結果,所以想用mapper二級緩存比較方便。 翻遍個官方文檔,只找到了如下說明:“我們建議緩存放到 service 層,你可以自定義自己的 BaseServiceImpl 重寫注解父類方法,繼承自己的實現。 當然如果你是一個極端分子,請使用 CachePaginationInterceptor 替換默認分頁,這樣支持分頁緩存。”;
2019-08-27 回復 有任何疑惑可以回復我~
#2

慕仙7039684 提問者

但是,在3點多的版本里,已經沒有CachePaginationInterceptor這個插件了(雖然3點多的使用文檔還是這么寫的),查找了更新日志,也沒找到CachePaginationInterceptor變動的說明,實在沒招,確實要使用mapper二級緩存的話,能解決嗎
2019-08-27 回復 有任何疑惑可以回復我~
#3

老猿 回復 慕仙7039684 提問者

我也查看了官方文檔,在MP3.x中沒有找到CachePaginationInterceptor,目前我也解決不了這個問題。你如果著急,可以在github上的MP項目中提交issue,描述清楚你所遇到的問題,相信官方會答復的。我這邊最近工作比較忙,如果你不著急,過些日子,我照著你說的看能否復現問題,然后由我向MP官方反饋。
2019-08-28 回復 有任何疑惑可以回復我~
#4

慕仙7039684 提問者 回復 老猿

不著急,目前暫時使用AOP在mapper層方法執行之前,對租戶字段的值進行設置,可以滿足使用,但感覺不太合適。您這邊有空的時候,還請幫忙測試并反饋一下
2019-09-06 回復 有任何疑惑可以回復我~
#5

老猿 回復 慕仙7039684 提問者

你好,你說的這個問題,我沒復現出來,我在mapper接口的xml文件中加入<cache></cache>開啟二級緩存。我在yml中也設置了cache-enabled: true。用非分頁查詢和查詢,模擬兩個租戶的信息都正常,分頁查詢取得的總記錄數也正常,我使用的mp版本是3.1.2。你那邊是怎么設置的,要方便的話,你提供給我源代碼或者貼出部分源代碼。
2019-09-23 回復 有任何疑惑可以回復我~
#6

老猿 回復 慕仙7039684 提問者

你說的問題我用mp自帶的方法沒有復現出來,用自定義的方法復現出來了,并且提了issue,6樓和7樓就是issues的地址,不知道為啥網站把我的話截斷了,只顯示出鏈接后的字,所以發了兩遍。
2019-09-23 回復 有任何疑惑可以回復我~
#7

慕仙7039684 提問者 回復 老猿

最近比較忙,忘了這茬,現在抽空上來學習才看到您的回復,抱歉。 在您提交的issue里,看到了另一個人貼的issue鏈接和青苗的回復,看似已經修復了這個問題。 非常感謝您的反饋
2019-10-29 回復 有任何疑惑可以回復我~
#8

老猿 回復 慕仙7039684 提問者

呵呵,沒有關系,不用抱歉,青苗是MP所屬開發組織的負責人,我想下一版本應該能解決這個問題。
2019-11-01 回復 有任何疑惑可以回復我~
查看7條回復

MP的作者建議緩存放到 service 層,你可以自定義自己的 BaseServiceImpl 重寫注解父類方法,繼承自己的實現。

0 回復 有任何疑惑可以回復我~

哥, 這個問題怎么解決啊

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

mapper二級緩存和分頁插件的問題

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號