我有一些继承的代码仍在 .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 集进行标记的内容?这是要走的路吗?以前有人做过这样的事情吗?