我正在使用 Azure Application Insights 来跟踪请求中的操作。
我实现了redis,将数据存储到 key 中,并将过期时间设置为1天。这是测试方法:
public async Task<IReadOnlyCollection<FoodDescriptionModel>> SearchIngredientAsync(string name)
{
_redisCache.TryGetValue("FoodDescriptionModelCollection", out IReadOnlyCollection<FoodDescriptionModel> cached);
return cached.Where(x => x.LongDescription.Contains(name)).ToList() as IReadOnlyCollection<FoodDescriptionModel>;
}
这肯定是从缓存中获取数据。 问题是 azure 门户中的端到端事务显示对该请求的数据库访问:
为什么?另一方面,当我检查 Redis 的获取量正在增加时:最佳答案
很难判断您使用的是哪种 Redis 客户端,但看起来不像 StackExchange 或 ServiceStack。如果您提供 _redisCache
Application Insights 尚未自动跟踪对 Redis 的调用(使用任何客户端),但您可以手动跟踪它们,以下是 StackExchange.Redis.IDatabase.StringSet
的示例:
private async Task<bool> StringSetTrackedAsync(RedisKey key, string value)
{
var dependency = new DependencyTelemetry()
{
Type = "Redis",
Name = "SetStringAsync"
};
dependency.Properties["key"] = key;
using (telemetryClient.StartOperation(dependency))
{
var result = await cache.StringSetAsync(key, value);
dependency.Success = result;
return result;
}
}
您可以添加 Redis 主机等详细信息,或删除您不希望出现在遥测中的内容。
关于c# - 通过应用程序洞察中的端到端事务跟踪 azure redis,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49925531/