我对AppFabric Cache的第一印象是它本质上是一个与memcached同样的分布式哈希表。这种缓存的典型使用模式是无法保证您的数据将在缓存中(旧条目被驱逐以为新缓存腾出空间),但通常会有足够的RAM。
另一方面,MS提供了Web Session State Provider,它将会话数据存储在AppFabric Cache中。这似乎是一种完全不同的使用模式,因为我们现在要求缓存的项目永远不会因内存压力而被逐出。为了实现这一目标,MS提供了一种高可用性模式,可以保留所有数据的冗余副本,而且可以禁用驱逐,这反过来要求我们分配足够的RAM以确保缓存永远不会达到容量。
应用程序似乎可以从使用两种类型/模式的缓存中受益,但据我所知,AppFabric RAM无法在集群或主机中进行,因此Web会话状态在这种情况下,可能(并且通常会)经历记忆压力。我能看到的唯一解决方案是运行两个AppFabric Cache集群,每个模式一个。
以上是对情况的良好表示还是我错过了一些解决这种情况的配置设置?
答案 0 :(得分:1)
在appfabric中存储一个会话并不是一个好主意,在尝试这个时遇到了很多问题(比如由于内存压力数据丢失,多个用户点击缓存以放置数据会导致数据丢失等)并且现在已经启动使用inProc / SqlServer会话状态使用。