说我有一个用户集合.每个用户都有User_ID,用户名和Tenant_ID.
有时我需要所有用户使用特定的Tenant_ID.
有时我需要一个基于User_ID的特定用户".
有时我需要一个基于用户名的用户.
我总是可以使用Tenant_ID作为查找的一部分.
为此数据实现缓存层的理想方法是什么?
自从我处理多租户系统以来,我应该考虑哪些因素?
管理所有可能的缓存密钥的最佳方法是什么?
选项#1:将所有用户存储在"Tenant_1_Users"的单个密钥下
这个问题是我将通过网络传输大量不需要的数据.如果我只需要找到一个特定的用户,那么我需要在检索整个集合后使用LINQ或其他东西在代码中进行查找.
选项#2:在"TenantID_1_UserID_5"和"TenantID_1_Username_Jason"等不同键下复制相同的User对象.
这里的问题是管理用户对象的所有各种键和位置.特别是如果我需要刷新特定用户,因为它已在数据库中更新.我现在需要知道它可以存储的所有可能的地方.也使用更多内存,因为相同的用户可以在不同的键下.
相关:AppFabric Cache'Design' - 缓存单个项目或集合?
问题是Azure AppFabric缓存不支持区域,标记或通知.