如何以JSON格式高效缓存web服务请求-响应对

如何以JSON格式高效缓存web服务请求-响应对,json,nosql,hashtable,Json,Nosql,Hashtable,在使用JSON格式的web服务时,我发现了一个有趣的问题 假设存在web服务。接受多个参数。每个参数都有不同的值集。您可以通过传递不同的请求参数来获得响应 请求是JSON格式的。因为有很多不同的请求参数组合。为了优化性能,我想缓存请求和响应对。并将其存储到本地数据库中。如果有大的哈希表,我可能希望将请求存储为键,将响应存储为值 我认为MongoDB可能是一个解决方案。但我不确定。在这种数据库中,是否可以将请求响应存储为键值对?因此,我可以缓存结果并立即响应用户 谢谢。除非您的代码和数据库的性能非

在使用JSON格式的web服务时,我发现了一个有趣的问题

假设存在web服务。接受多个参数。每个参数都有不同的值集。您可以通过传递不同的请求参数来获得响应

请求是JSON格式的。因为有很多不同的请求参数组合。为了优化性能,我想缓存请求和响应对。并将其存储到本地数据库中。如果有大的哈希表,我可能希望将请求存储为键,将响应存储为值

我认为MongoDB可能是一个解决方案。但我不确定。在这种数据库中,是否可以将请求响应存储为键值对?因此,我可以缓存结果并立即响应用户


谢谢。

除非您的代码和数据库的性能非常差(在这种情况下,您会遇到比设置缓存更大的问题),否则您不会从该级别的缓存中获得任何好处

您可以在任何键/值存储中使用JSON作为键,尽管使用哈希作为缓存键而不是直接使用JSON字符串可能是有意义的,并且使用memcached或redis的非持久内存缓存将比完整的文档数据库(如MongoDB)工作得更好

使用这种方法会遇到很大的问题的地方是管理缓存过期-要获得实时更新,您需要确切地知道哪些缓存对象受到给定对象更改的影响。如果请求是一个简单的get-by-ID,那么这很容易,但在您描述的场景中几乎是不可能的


管理缓存的另一种方法是过期,即在给定时间后从缓存中删除对象。这假设在更新后显示过时数据是可以接受的。缓存通常内置对过期的支持。数据库通常不会。除非您的代码和数据库的性能非常差(在这种情况下,您会遇到比设置缓存更大的问题),否则您不会从该级别的缓存中获得任何好处

您可以在任何键/值存储中使用JSON作为键,尽管使用哈希作为缓存键而不是直接使用JSON字符串可能是有意义的,并且使用memcached或redis的非持久内存缓存将比完整的文档数据库(如MongoDB)工作得更好

使用这种方法会遇到很大的问题的地方是管理缓存过期-要获得实时更新,您需要确切地知道哪些缓存对象受到给定对象更改的影响。如果请求是一个简单的get-by-ID,那么这很容易,但在您描述的场景中几乎是不可能的


管理缓存的另一种方法是过期,即在给定时间后从缓存中删除对象。这假设在更新后显示过时数据是可以接受的。缓存通常内置对过期的支持。数据库通常不会。谢谢您的回答。我正在考虑散列请求json字符串。关于缓存表达式问题,我认为这不是一个大问题。因为我正在考虑运行一些cron作业来刷新数据。使用cron作业来更新缓存与内容更新时过期具有相同的问题-您需要知道哪些缓存项不再有效。除非您的意思是删除整个缓存,否则这将意味着服务器上的大部分负载将在缓存重置后立即发生-这将失去缓存的大部分好处,因为您需要根据峰值而不是平均负载来选择硬件。谢谢您的回答。我正在考虑散列请求json字符串。关于缓存表达式问题,我认为这不是一个大问题。因为我正在考虑运行一些cron作业来刷新数据。使用cron作业来更新缓存与内容更新时过期具有相同的问题-您需要知道哪些缓存项不再有效。除非您的意思是删除整个缓存,否则这将意味着服务器上的大部分负载将在缓存重置后立即发生-失去了缓存的大部分好处,因为您需要根据峰值而不是平均负载来选择硬件。