若依前后端分离版数据库已经存在的字典添加一条后刷新没作用,必须清除Redis缓存
場(chǎng)景
使用若依的前后端分離版,前端下拉框的使用直接查詢的是字典表中的數(shù)據(jù)。
對(duì)于某個(gè)類型的字典如果之前已經(jīng)添加過(guò)并使用過(guò),后來(lái)想要再添加一條此類型的字典。
在數(shù)據(jù)庫(kù)中添加后,前端刷新下,發(fā)現(xiàn)沒(méi)有獲取到新增的字典數(shù)據(jù)。
注:
博客:
https://blog.csdn.net/badao_liumang_qizhi
關(guān)注公眾號(hào)
霸道的程序猿
獲取編程相關(guān)電子書(shū)、教程推送與免費(fèi)下載。
實(shí)現(xiàn)
這是因?yàn)槿粢赖母鶕?jù)字典類型獲取數(shù)據(jù)的接口使用了Redis的字典緩存機(jī)制。
前端調(diào)用的根據(jù)字典的類型獲取字典的值的接口對(duì)應(yīng)的后臺(tái)方法中
??? @GetMapping(value = "/type/{dictType}")public AjaxResult dictType(@PathVariable String dictType){return AjaxResult.success(dictTypeService.selectDictDataByType(dictType));}對(duì)應(yīng)的service中
??? @Overridepublic List<SysDictData> selectDictDataByType(String dictType){List<SysDictData> dictDatas = DictUtils.getDictCache(dictType);if (StringUtils.isNotNull(dictDatas)){return dictDatas;}dictDatas = dictDataMapper.selectDictDataByType(dictType);if (StringUtils.isNotNull(dictDatas)){DictUtils.setDictCache(dictType, dictDatas);return dictDatas;}return null;}會(huì)根據(jù)傳遞過(guò)來(lái)的字典類型首先從Redis的字典緩存中查詢,如果之前有的話則直接返回,
否則再?gòu)臄?shù)據(jù)庫(kù)中進(jìn)行查詢并且再存到緩存中。
所以為了顯示新增加的之前存在的字典類型是數(shù)據(jù)。
可以新建一個(gè)單元測(cè)試方法,調(diào)用清除字典緩存的數(shù)據(jù)。
那么在進(jìn)行查詢時(shí)就是查詢數(shù)據(jù)了。
@RunWith(SpringJUnit4ClassRunner.class) @SpringBootTest public class TestRedis {@Testpublic void test(){DictUtils.clearDictCache();} }?
總結(jié)
以上是生活随笔為你收集整理的若依前后端分离版数据库已经存在的字典添加一条后刷新没作用,必须清除Redis缓存的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 若依前后端分离版怎样根据数据库生成代码并
- 下一篇: Nacos简介、下载与配置持久化到Mys