之前有寫過資料字典的相關業務是怎麼做的,有朋友留言問如何讀取,其實很簡單,最簡單的方式就是每次讀取資料庫,但是這樣的做法很不好,因為資料字典在資料庫中屬于冷資源,不是經常會變得資料,這樣的資料用緩存來做是最好的,在通路資料庫前就直接攔截了去資料庫的請求,這樣減少資料庫的壓力,畢竟很多頁面對于資料字典的通路還是偏多的
畫張圖簡單了解一下就行:
那怎麼把資料放入redis中呢?主流的兩種做法大緻說一下吧:
在每次進行增删改資料字典的操作後,發送一個消息隊列,進行單獨記錄在redis中的維護(這樣的做法我個人不是很喜歡,因為有時候寫錯了就要重修修改或者删除,這樣的頻繁操作比較多)
在每次進行資料字典的增删改後,最後手動執行重新整理,這樣批量把資料放入緩存中,最後在頁面上就能直接用了
在此小編我用的是第二種做法,如圖:
在之前的頁面上加了重新整理緩存的按鈕,動态ajax到背景,讀取資料庫中的資料字典再重新整理到緩存中去(有人說這樣頻繁的操作會很不好,話是這麼說,但是這樣的操作權限僅限在項目釋出成功後,再執行的操作,一般都是大半夜,毫無影響..--)
先來看一下資料庫的資料
再看一下緩存中的資料
不難看出,都是一一對應的
最後再來看一下自定義标簽,這個主要的目的就是接受jsp上傳來的key和對應的資料字典code,最後把value傳回出來
頁面效果:
題外話,這樣的做法僅限jsp頁面,如果你的資料是由JS render出來的話(比如jqgrid啊等等),那就可以寫一個js類對象,每次傳入code和key調用ajax從緩存中讀取即可。