我一直在研究Redis(根本没有经验 - 只是学过理论),经过一些研究后发现它也被用作缓存。例如StackOverfolow it self。
我的问题是,如果我有一个asp.net WebApi服务,并且我在WebApi级别使用输出缓存来缓存响应,我基本上在服务器中存储了一些键/值(请求/响应)内存以提供缓存的响应。
现在redis是一个内存数据库,它如何帮助我用redis缓存替换WebApi的输出缓存?
有什么优势吗?
我试图通过这个答案redis-cache-vs-using-memory-directyly,但我想我在答案中没有得到关键字:
"基本上,如果您需要在共享相同数据的多个节点上扩展应用程序,则需要使用类似Redis(或任何其他远程键/值存储)的内容。 #34;
答案 0 :(得分:4)
我基本上在服务器的内存中存储了一些键/值(请求/响应)以提供缓存的响应。
这意味着服务器重启后,服务器必须重建缓存。 Redis的情况并非如此。因此,Redis相对于自制的内存解决方案的一个优势是持久性(只有这对您来说是一个问题,而您自己并没有计划自己编写持久性)。
然后,您可以使用Redis EXPIRE
或命令 EXPIREAT
,甚至只需指定将api输出字符串放入缓存时的过期时间戳,而不是编写自己的过期机制 SETEX
。
如果您需要应用程序在共享相同数据的多个节点上进行扩展
这意味着如果你有相同api服务器的多个实例,将缓存放入redis将允许这些服务器共享相同的缓存,从而减少例如内存消耗(1个缓存而不是3个 - 内存缓存)等等......