我正在使用C#和.Net Core。
我将第三方REST调用结果存储在本地内存缓存中。我想从缓存中提取数据组并将它们返回给我的客户端。
例如,我为分支信息调用REST服务,并将每个结果存储在内存缓存中,并将分支的唯一ID作为缓存密钥...例如,Branch-101,Branch-400,Branch-321。 (注意,我的缓存中还有很多其他数据,而不仅仅是分支信息)
我现在希望能够在缓存中的每个分支返回客户端。有没有人对我这样做的最好方法有任何想法?
有没有办法让我查询缓存并返回缓存中每个分支的数组或字典?
编辑 - 缓存代码的详细信息
以下是尝试从缓存中提取数据的代码。如果数据不在缓存中,则会调用委托来获取数据。此时缓存是扁平的,但如果以不同的方式构建它会更好,我可以在我刚刚开始项目的时候:
第一行设置我要查找的类型的默认值(通常为null) 下一行根据我要查找的对象类型生成一个键。例如,如果我正在寻找一个Branch对象,那么键将是“branch-”+分支的唯一键
接下来,我尝试将对象从缓存中取出。如果对象不存在,我调用委托并将缓存值设置为调用委托的结果:
// Here is the delegate
public delegate string GetData(int id);
// Here is the code that pulls the data out of cache or
// calls a delegate to get rest data
public T CacheOrCall<T>(int id, string nodename, GetData fn)
{
T o = default(T);
string key = typeof(T).ToString() + "-" + id;
string ret = null;
bool isCached = this.cache.TryGetValue(key, out o);
if (!isCached)
{
ret = fn(id);
o = this.Deserialize<T>(ret, nodename);
this.cache.Set(key, o, this.cacheOptions);
}
return o;
}
答案 0 :(得分:0)
最后,我为所有分支添加了一个条目。该条目是一个字典对象,其键是一个分支标识符,其值是分支对象本身。
Dictionary<int, Branch>