caching - WebApi - Redis 缓存与输出缓存

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

我一直在研究 Redis(完全没有经验 - 只是学习理论),并且在做了一些研究之后,发现它也被用作缓存。例如StackOverfollow 本身。

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

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

有什么好处吗?

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

“基本上,如果您需要您的应用程序在共享相同数据的多个节点上扩展,那么将需要 Redis(或任何其他远程键/值存储)之类的东西。”

最佳答案

I am basically storing kind of key/value (request/response) in server's memory to deliver cached responses.

这意味着在服务器重启后,服务器将不得不重建缓存。 Redis 不会是这种情况。因此,Redis 相对于自制内存解决方案的优势之一是持久性(仅当这对您来说是个问题并且您不打算自己编写持久性时)。

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

if you need your application to scale on several nodes sharing the same data

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

关于caching - WebApi - Redis 缓存与输出缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22605272/

相关文章:

java - 调用@Cacheable注解的方法(org.springframework.cache.annotation.Cacheable)

c# - 在 Controller ApiController 上未找到任何操作

node.js - 找不到模块 'socket.io/node_modules/redis'

asp.net-web-api - Bot Framework 中的自动化部署(Bot + LUIS+ QnA + Table Storage)

c# - 尝试通过来自数据库触发器的 Web 请求执行 "EXECUTE Master.dbo.xp_CmdShell"命令以在本地创建文本文件时发生错误

c# - 在 StackExchange.Redis 中将对象转换为 HashEntry

redis - 在 Redis 中处理多个列表的最佳方式?

php - Symfony:清除 Doctrine 缓存

java - Ehcache 与静态 map 缓存实现

python - Django 缓存查询(我不想这样)