ObjectCache的异步版本?

Pau*_*yer 6 .net memcached caching asynchronous redis

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

Pau*_*yer 3

虽然@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);
}
Run Code Online (Sandbox Code Playgroud)

此后,我已经能够针对多个缓存提供程序实现该接口,这些提供程序为其 get/put/remove 方法提供任务/异步版本,并且运行良好。

我在 github 上发布了这段代码