【发布时间】:2011-08-19 14:13:20
【问题描述】:
假设我有一组用户。每个用户都有一个User_ID、Username和Tenant_ID。
有时我需要特定 Tenant_ID 的所有用户。
有时我需要基于 User_ID" 的特定用户。
有时我需要一个基于 用户名 的用户。
我将始终将 Tenant_ID 用作查找的一部分。
为这些数据实现缓存层的理想方法是什么?
由于我正在处理多租户系统,我应该考虑哪些因素?
管理所有可能涉及的缓存键的最佳方法是什么?
选项#1:将所有用户一起存储在“Tenant_1_Users”的单个键下
这样做的问题是我将通过网络传输大量不需要的数据。如果我只需要查找特定用户,那么我需要在检索整个集合后使用 LINQ 或其他方式在代码中进行查找。
选项 #2: 在“TenantID_1_UserID_5”和“TenantID_1_Username_Jason”等不同键下复制相同的用户对象。
这里的问题是管理用户对象的所有各种键和位置。特别是如果我需要刷新特定用户,因为它已在数据库中更新。我现在需要知道可以存储它的所有可能位置。还使用更多内存,因为同一个用户可以在不同的键下。
相关:AppFabric Cache 'Design' - Caching Individual Items or Collections?
问题是 Azure AppFabric 缓存不支持区域、标签或通知。
【问题讨论】:
标签: c# caching azure multi-tenant