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

Caching 如何在golang中进行持久缓存?,caching,go,Caching,Go,我正在使用go创建一个命令行实用程序,它将请求特定的服务器获取数据,并以JSON响应的形式从服务器获取数据。实用程序可以对多个产品执行多个请求。 我能够执行多个请求,并以JSON格式正确获取每个产品的响应。 现在,我想将结果保存在本地缓存或本地文件中。在向服务器发送请求之前,我将在每次请求时检查本地缓存。如果该产品的数据可用,则不会发送任何请求 我希望将整个json响应保存在缓存或本地文件中,并在每次向服务器请求数据之前保留该数据 用例: 产品{“A”、“B”、“C”、“D”、“E”}可以是任意

我正在使用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}]}]


如果测试在这两个产品之间失败,并得到两个产品的结果,则应保存两个产品的响应,如果我们重新运行测试,则只会得到第三个产品的结果。

您可以将数据存储在
映射中,并通过
键获取数据,您可以实现它或使用插件,例如。

作为另一种选择,您可以使用Redis来存储数据,您可以找到Go的驱动程序,有许多Go库可以透明地进行HTTP缓存

选择一个你最喜欢的并且能更好地满足你的需求的,两个都在他们的自述中有例子让你快速入门


如果出于某种原因,您不能或不想使用第三方库,请查看此答案,该答案使用和,无论是on Go的标准库还是answer都提供了一个示例实现,您可以在此基础上开展工作。

是否可以将结果存储在文件中的键值对中,并在需要时提取和解析它。是的,这是可能的。示例:提供了多个开箱即用的后端,例如diskcache和memcache就提供了这一点。但这是向前迈出的一步,它会自动为您进行缓存。您只需告诉它保存内容的位置,然后执行常规http调用。我们如何使用go cache将缓存保存在文件中,没有保存结果和从中获取缓存的示例file@rohan使用go cache,您只能在内存中存储您的值。如果你想存储在一个文件中,最好的选择是使用Redis,它需要自己的服务器或安装在Go中,对吗?由于它是其他语言的要求,对不起,我是刚来戈兰的新手。因为该工具将是命令行,它将作为单个go文件分发给用户,用户可以在其系统上构建该文件。我试图避免任何额外的安装所需的工具,它将是多么好的地图对象存储在本地文件和读写文件只。如果这个程序有一个明确定义的(同步的)结束状态,即它知道请求1和2成功,请求3失败,那么本地的.json文件是不可能的(可能需要注意的是,请求3在上面给出的实例中失败了)?然后,它可以在另一次运行时将.json文件读回内存,并从先前的执行中了解状态。这还允许您的部署与您所说的相匹配,成为可以独立分发的单go二进制文件。它将生成自己的本地数据存储,并在某种程度上依赖于它,但它不是第二个程序。