WebApi - Redis缓存与输出缓存

时间:2014-03-24 09:21:01

标签: caching asp.net-web-api redis outputcache

我一直在研究Redis(根本没有经验 - 只是学过理论),经过一些研究后发现它也被用作缓存。例如StackOverfolow it self。

我的问题是,如果我有一个asp.net WebApi服务,并且我在WebApi级别使用输出缓存来缓存响应,我基本上在服务器中存储了一些键/值(请求/响应)内存以提供缓存的响应。

现在redis是一个内存数据库,它如何帮助我用redis缓存替换WebApi的输出缓存?

有什么优势吗?

我试图通过这个答案redis-cache-vs-using-memory-directyly,但我想我在答案中没有得到关键字:

"基本上,如果您需要在共享相同数据的多个节点上扩展应用程序,则需要使用类似Redis(或任何其他远程键/值存储)的内容。 #34;

1 个答案:

答案 0 :(得分:4)

  

我基本上在服务器的内存中存储了一些键/值(请求/响应)以提供缓存的响应。

这意味着服务器重启后,服务器必须重建缓存。 Redis的情况并非如此。因此,Redis相对于自制的内存解决方案的一个优势是持久性(只有这对您来说是一个问题,而您自己并没有计划自己编写持久性)。

然后,您可以使用Redis EXPIRE或命令 EXPIREAT ,甚至只需指定将api输出字符串放入缓存时的过期时间戳,而不是编写自己的过期机制 SETEX

  

如果您需要应用程序在共享相同数据的多个节点上进行扩展

这意味着如果你有相同api服务器的多个实例,将缓存放入redis将允许这些服务器共享相同的缓存,从而减少例如内存消耗(1个缓存而不是3个 - 内存缓存)等等......