ServiceStack Redis - 缓存昂贵的查询
ServiceStack Redis - caching expensive queries
我们有许多非常昂贵的查询,其中涉及多个连接,我想使用 Redis(使用最终的 ServiceStack.Redis 框架)对其进行缓存。
在内存成为问题之前,我应该在 Redis 中存储多少 rows/items?
例如,我可以将 10 000 多行存储到 Redis 中而不用担心内存问题(我们的服务器也托管我们的 Web 应用程序,它有 8Gb Ram)。
其次,存储它们的最佳方式是什么(作为 List 还是 Hash?)。
行数取决于行大小。最好的方法是开始保存并查看 Redis 服务器上的内存使用情况。 10k 听起来不是太多数据。
关于如何存储它们,我只会在需要检索特定行时使用哈希,例如,如果我会在 Redis 中进行过滤和排序,这在理论上是可行的。但结果的过滤和排序很可能是在您的应用程序中完成的,因此您可以将所有数据保存在一个键中。我们在我们的应用程序中所做的是序列化 json 中的所有结果,将它们归档在代码中,然后保存到一个简单的 Redis 键中,这使得内存消耗最小。
我们有许多非常昂贵的查询,其中涉及多个连接,我想使用 Redis(使用最终的 ServiceStack.Redis 框架)对其进行缓存。
在内存成为问题之前,我应该在 Redis 中存储多少 rows/items? 例如,我可以将 10 000 多行存储到 Redis 中而不用担心内存问题(我们的服务器也托管我们的 Web 应用程序,它有 8Gb Ram)。
其次,存储它们的最佳方式是什么(作为 List 还是 Hash?)。
行数取决于行大小。最好的方法是开始保存并查看 Redis 服务器上的内存使用情况。 10k 听起来不是太多数据。
关于如何存储它们,我只会在需要检索特定行时使用哈希,例如,如果我会在 Redis 中进行过滤和排序,这在理论上是可行的。但结果的过滤和排序很可能是在您的应用程序中完成的,因此您可以将所有数据保存在一个键中。我们在我们的应用程序中所做的是序列化 json 中的所有结果,将它们归档在代码中,然后保存到一个简单的 Redis 键中,这使得内存消耗最小。