我需要在缓存中存储数据列表。
有时我需要完整列表,有时我只需要查询结果并从列表中返回一项。
一项的当前逻辑是这样的:
User result;
var cachedUsers = _cache.Get<List<User>>(Constants.Cache.UsersKey);
if( cachedUsers != null)
{
result = cachedUsers.FirstOrDefault(u => u.UserID == userID);
if (result != null)
return result;
}
result = GetUserFromDb(userID);
if (cachedUsers != null)
{
cachedUsers.Add(result);
_cache.Store(StoreMode.Set, Constants.Cache.UsersKey, cachedUsers);
}
return result;
我可以直接从缓存中访问一个元素而不加载完整的用户列表吗?我还需要在不加载完整列表并覆盖它的情况下将用户添加到缓存中。
编辑:我可以选择将项目与列表分开存储,或者使用不同的方法从头开始编写缓存。
实现此逻辑的最佳方法是什么?