我正在寻找一种简单的方法来实现可在 Azure .NET 实例上使用的本地内存存储
我一直在研究Azure Co-located Caching,它似乎支持我的所有要求:
同时处理 Web 角色和辅助角色
实现一个简单的 LRU
将缓存对象保存在内存 (RAM) 中
允许我将缓存大小定义为机器总 RAM 的百分比
将缓存保持在 web/worker 角色的同一台机器上(并置模式)
允许我从运行在同一台机器上的多个 AppDomain 访问相同的缓存(Web 角色可能会将我的处理程序拆分为不同的 AppDomain)
Azure Co-located 缓存的唯一问题是不同的实例进行通信并尝试共享它们的缓存——我真的不需要所有这些。
我希望每台机器都有自己独立的内存缓存。当我查询这个缓存时,我不想浪费任何时间向其他实例的缓存发出网络请求。
本地缓存配置?
我在 Azure 缓存中看到了一个启用本地缓存的配置设置——但看起来机器仍然可以相互通信(即在缓存未命中期间)。此配置还需要一个ttlValue
并且objectCount
我希望 TTL 为“永远”并且对象计数为“直到你填满整个缓存”。感觉maxInt
在这两种情况下都指定似乎是错误的。
一个简单的静态变量呢?
当我真正考虑它时,所有这些 Azure 缓存对于我需要的东西来说似乎有点矫枉过正。我基本上只需要应用程序/角色级别的静态变量.. 除非这不适用于要求 #6(不同的 AppDomains)。在这种情况下,要求 #4 也更难实现。
内存缓存
我认为老好人memcached
似乎完全按照我的意愿行事。问题是我将 Azure 用作 PaaS,我真的不想管理自己的 VM。我不认为我可以memcached
在我的角色上安装.. [更新] 似乎可以在我的角色上本地运行 memcached。有没有更优雅的“原生”解决方案而不使用 memcached 本身?