如何在golang中进行持久缓存?

时间:2016-06-24 10:33:01

标签: caching go

我正在使用go创建一个命令行实用程序,它将向特定服务器请求数据,并将在JSON响应中从服务器获取数据。实用程序可以对多个产品执行多个请求。 我能够以JSON格式正确地执行多个请求并获得每个产品的响应。 现在,我想在缓存或本地文件中本地保存结果。在每个请求中,我将在向服务器发送请求之前检查本地缓存。如果该产品的数据可用,则不会发送任何请求。

我希望将整个json响应保存在缓存或本地文件中,并在每次向服务器请求数据之前保留该数据。

用例: 产品{" A"," B"," C"," D"," E"}它可能是任意数量的产品 测试1:获取A,B,C的数据 检查本地存储是否有数据可用或请求。 保存每个产品的json请求。

因此对于测试1,它将具有如下条目: [{test 1:[{product a:json response},{product b:json response},{product c:json response}]}]

如果测试失败并且两个产品得到结果,它应该保存2个产品的响应,如果我们重新测试它将只得到第3个产品的结果。

2 个答案:

答案 0 :(得分:1)

有一堆Go库可以透明地进行HTTP缓存。

选择您最喜欢的那个并更好地满足您的需求,两者都有自己的README示例,以便您快速入门。

如果由于某种原因你不能或不想使用第三方库,请查看使用https://stackoverflow.com/a/32885209/322221httputil.DumpResponse的答案http.ReadResponse,这两个都在Go的标准库中回答者还提供了一个可以基于您的工作的示例实现。

答案 1 :(得分:0)

您可以将数据存储在Map中并通过Key获取,您可以实施或使用go-cache等插件。
作为替代方案,您可以使用Redis存储数据,here您可以找到Go

的驱动程序