代码之家  ›  专栏  ›  技术社区  ›  Jonas Stensved

Azure缓存中是否有最大对象计数(预览)

  •  0
  • Jonas Stensved  · 技术社区  · 12 年前

    我知道Azure缓存中有最大内存限制,但是否也有最大对象计数?感觉缓存会随着密钥数量的增加而变慢。

    背景:

    我需要在内存中为每个用户保留一些数字(从数据库计算摘要很昂贵,但在内存中快速增加摘要很便宜)。随着并发用户的增长,我担心如果有限制的话,我可能会超出缓存的容量。

    我的预期解决方案:

    比方说我必须保留 Int64 ' value1 '和' value2 '存储在每个用户的内存中。

    将项目缓存为 userN_value1, userN_value2, [...] 然后打电话 DataCache.Increment 以在如下更改时更新每个计数器的值:

    DataCache.Increment("user1_value1", 2500, 0, "someregion");
    

    随着用户数量的增长,这可能导致 很多 个项目。这是我应该担心的事情吗?有没有我没有想过的更好的方法?

    2 回复  |  直到 11 年前
        1
  •  0
  •   DavideB    12 年前

    在实践中,该限制是由为集群选择的VM的实例数量和大小强加的。

    这个 Capacity Planning Guide spreadsheet 非常有趣,我用它来比较共享缓存服务的当前使用情况,以便找到匹配的配置(然后比较成本)。

    如果您调整设置 活动对象的最大数量 平均对象大小(序列化后) 对于您的场景,您可以注意到提议的配置是如何上升的。

    似乎有一个限制:如果您增加要求,您可能会遇到“不支持大于32的群集大小。请考虑拆分为多个群集”。我假设,如果您在集群中需要超过32个节点,每个节点都作为一个超大虚拟机,那么您就达到了极限。

        2
  •  0
  •   user728584    12 年前

    据我所知,没有对象限制,你只受内存的约束,如果你的缓存遇到内存压力,它会驱逐对象以释放它,数据删除过程是异步的,并遵循最近最少使用(LRU)策略