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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Golang緩存HTTP GET結果在內存中

Golang緩存HTTP GET結果在內存中

Go
犯罪嫌疑人X 2021-04-09 18:15:52
我正在使用Go中的CLI進行抓取,該CLI會抓取網頁以將頁面上所有鏈接的href屬性收集到一個切片中。我想將此切片存儲在內存中一段時間,以免在每次執行CLI命令時都不調用刮板。理想情況下,只有在緩存過期或用戶提供某種--update標志后才調用刮板。我遇到了庫go-cache和其他類似的庫,但是據我所知,它們僅適用于持續運行的內容,例如服務器。我曾考慮過將鏈接寫入文件,但是在特定的持續時間之后如何使結果過期?在后臺創建一個小型服務器以使用類似的庫go-cache是否會有意義,這會在一段時間后關閉嗎?任何幫助表示贊賞。
查看完整描述

2 回答

?
白衣染霜花

TA貢獻1796條經驗 獲得超10個贊

在這些情況下,有兩種主要方法:

  1. 創建充當數據存儲庫的守護程序,服務或后臺應用程序。您可以根據需要將其作為HTTP服務器/ RPC服務器運行。然后,您的CLI應用程序將根據需要與此守護程序進行交互。

  2. 實現一種持久性機制,該機制將允許在多個CLI應用程序執行之間寫入和讀取數據。您可以使用普通的文本文件,數據庫,甚至可以使用golang的編碼/對象的實現在二進制文件中讀寫切片(映射可能會更好)。

您可以根據上面選擇的策略/方法,通過顯式刪除條目或在后續執行期間不重寫它們,來對條目進行時間戳記并在它們的ttl過期后簡單地將其刪除。

這樣一個開放式問題的示例范圍和數量太多,無法在單個答案中發布,并且很可能需要多個特定問題。


查看完整回答
反對 回復 2021-04-19
?
ABOUTYOU

TA貢獻1812條經驗 獲得超5個贊

使用數據庫并存儲盡可能多的詳細信息(fetched_at,主機,路徑,標題,meta_desc,錨點等)。您以后可以查詢數據,將其以結構化格式使用將很有用。如果您不想處理db依賴關系,則可以嵌入boltdb(pure go)或sqlite(cgo)之類的東西。


查看完整回答
反對 回復 2021-04-19
  • 2 回答
  • 0 關注
  • 353 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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