技术栈
我们有大约4k的参考数据,这些数据在自动建议查找过程中使用,因此我想知道我应该将这些数据缓存在WebApp上还是应该始终从数据库/第三方API获取。
我知道我可以使用RedisCache解决此问题,但是我想知道Azure WebApp在缓存方面的工作原理,它将带来内存压力吗?什么时候?是的,那么扩大规模是唯一的解决方案吗?
我们正在使用.net Core中的IMemoryCache来存储参考数据,并且该参考数据每天都会过期,或者在Azure WebApp重新启动时会过期(因此,第一个用户将延迟直到将所有数据存储到缓存中为止)。
数据大小在500KB-1MB之间,有时会达到3MB +。
什么是最好的方法?
答案 0 :(得分:1)
在使用WebApp时不建议使用iMemoryCache ,因为它与应用程序实例紧密绑定,因此,如果您尝试扩展应用程序(在一天中负载激增的情况下),则缓存机制将坏了。
如果您打算扩展应用程序(为一个正在运行的实例提供更多的RAM和CPU资源),iMemory缓存可能就可以了。
如果计划扩展(创建应用程序的多个实例),强烈建议所有无状态应用程序使用,那么RedisCache(或任何其他分布式缓存)是您需要缓存机制的一种方法。 / p>
值和密钥的最大大小为512MB,因此在值数据大小方面,您是安全的。
注意
请确保使用官方documentation中建议的连接多路复用器,因为它会在丢失时自动重新建立连接。以前是一个错误,当Redis缓存服务器要进行维护时,您的呼叫将重定向到故障转移实例,但连接失败,因此您需要重新启动应用程序。