ObjectCache的异步版本?

时间:2014-04-18 20:59:44

标签: .net caching asynchronous redis memcached

我正在考虑通过ObjectCache类实现一些分布式缓存客户端(Redis& Memcached)。我注意到的一件事是这个抽象类的所有方法都是同步的,这意味着它们都没有返回Tasks。由于在分布式缓存中获取或放置东西的调用将离开本地机器并包含网络旅行,因此我想使用这些操作的异步版本。那么.Net框架中是否有标准的缓存类,比如支持异步模式的CacheObject?

2 个答案:

答案 0 :(得分:2)

使用ParallelExtensionsExtras NuGet包中包含的AsyncCache类:

http://www.nuget.org/packages/MSFT.ParallelExtensionsExtras/1.2.0

答案 1 :(得分:2)

虽然@TrevorBrooks提到的并行扩展包中有一个AsyncCache,但它并没有像我预期的那样工作。我需要使用可以等待的任务从分布式缓存中放入/获取/删除项目。所以我最终创建了以下界面:

public interface IAsyncCache<T>
{
    Task Initialize(Dictionary<string, string> parameters);
    Task Put(string key, T value, TimeSpan lifeSpan);
    Task<T> Get(string key);
    Task Remove(string key);
}

我已经能够针对几个缓存提供程序实现该接口,这些缓存提供程序为其get / put / remove方法提供了Task / Async版本,并且运行良好。

I posted this code on github