作者pupuliao (pupu)
看板java
標題Re: [問題] 從資料庫查詢出結果後,如何把結果存起來
時間Thu Nov 25 20:29:07 2021
※ 引述《lueichun (= =)》之銘言:
: ※狀況概述:
: 就是現在我的程式裡有查詢資料的功能,跟查詢後使用者可以選擇列印資料的功能,
: 查詢鈕在起始頁面,按下查詢鈕後查詢出結果並在查詢頁面呈顯出來,
: 而查詢頁面同時有列印資料的按鈕,按下去就可列印出剛剛的查詢結果。
: 現在我的做法是查詢跟列印都會到資料庫查詢資料,我想把程式改成查詢時
: 從資料庫撈出資料,在呈顯出來的同時將資料存起來,這樣要做列印時只要把存的資料取出
: 就可列印,就不用浪費資源重複到資料庫撈資料。
: 請問要怎麼做才能把查詢結果存起來,等到要列印的時候呢?
: 程式是用傳統的servlet寫的,那可以用session嗎?或是其他的servlet scope變數?
我上下兩題一起回答
先說明
這類問題,我並沒有用JAVA 完成過,我主要使用php
因為工作需要我常常要做出類似功能
首先,不論是顯示在畫面中 還是 印出來的資料,應該都是你搜尋過後整理的資料
這些資料我會使用json格式組合成一個字串
再把搜尋條件串起來後md5 成一個固定長度的 token
這時你就可以透過單純的key value的方式儲存快取
儲存的方式很簡單
你可以同樣使用資料庫開一個簡單兩個欄位的快取table
甚至可以把結果壓縮成binary格式後後再儲存縮減資料規模
快取的儲存方式 也可以是memcached 或是 Redis 來完成
我自己是實驗過後 繼續用mysql 來完成XD
這樣因為 是以搜尋條件組成token ,所以在下次搜尋時,可以直接把條件傳換成
token 先去檢查是否有快取,並取出快取
這樣可以讓你的快取使用無數次
另外 快取的時效性 你可以是加開timestamp 欄位判斷,或是固定時間清空的方式處理
反正這就是根據需要來做
如果上述方式完成
最終顯示 你是要一口氣顯示出來,還是分頁顯示都沒啥問題
你甚至可以在顯示結果的時候 紀錄token,下次取資料的時候直接用token取
連轉換都省了
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.231.178.130 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/java/M.1637843349.A.DAE.html