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

白衣染霜花
TA貢獻1796條經驗 獲得超10個贊
在這些情況下,有兩種主要方法:
創建充當數據存儲庫的守護程序,服務或后臺應用程序。您可以根據需要將其作為HTTP服務器/ RPC服務器運行。然后,您的CLI應用程序將根據需要與此守護程序進行交互。
實現一種持久性機制,該機制將允許在多個CLI應用程序執行之間寫入和讀取數據。您可以使用普通的文本文件,數據庫,甚至可以使用golang的編碼/對象的實現在二進制文件中讀寫切片(映射可能會更好)。
您可以根據上面選擇的策略/方法,通過顯式刪除條目或在后續執行期間不重寫它們,來對條目進行時間戳記并在它們的ttl過期后簡單地將其刪除。
這樣一個開放式問題的示例范圍和數量太多,無法在單個答案中發布,并且很可能需要多個特定問題。

ABOUTYOU
TA貢獻1812條經驗 獲得超5個贊
使用數據庫并存儲盡可能多的詳細信息(fetched_at,主機,路徑,標題,meta_desc,錨點等)。您以后可以查詢數據,將其以結構化格式使用將很有用。如果您不想處理db依賴關系,則可以嵌入boltdb(pure go)或sqlite(cgo)之類的東西。
- 2 回答
- 0 關注
- 353 瀏覽
添加回答
舉報
0/150
提交
取消