1

我有一些继承的代码仍在 .net 框架 4.7.2 上运行,它是一个 webapi。这在 Windows 容器中的 aws 中运行。对它的调用是资源密集型的,因此有相当多的缓存使用 HttpRuntime.Cache。

我们目前遇到的问题是缓存是每个实例,理想情况下它应该使用像 redis 这样的分布式缓存。在对 HttpRuntime.Cache.Insert 的调用中,我们有:

public async Task<T> CacheAndGet<T>(string key, Func<Task<T>> cacheFunction, Func<CacheDependency> cacheDependency) where T : class
{
    var result = Get<T>(key);
    if (result == null)
    {
        Log.Warning("cache is empty for for {cacheKey}", key);

        result = await cacheFunction();
        Put(key, result, cacheDependency());
    }

    return result;
}

private static void Put<T>(string key, T value, CacheDependency cacheDependency)
{
    if (EqualityComparer<T>.Default.Equals(value, default(T))) return;

    HttpRuntime.Cache.Insert(key, value, cacheDependency);
}

我正在努力解决的问题是如何使用 redis 复制 cacheDependancy 部分。是否可以使用 redis 复制基于依赖关系的缓存?我确实读过一些关于使用 redis 集进行标记的内容?这是要走的路吗?以前有人做过这样的事情吗?

4

0 回答 0