通过应用程序洞察中的端到端事务跟踪 azure redis

ame*_*els 2 c# azure redis

我正在使用 Azure Application Insights 来跟踪请求中的操作。

我实现了redis,将数据存储到密钥中,并将过期时间设置为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>;
}
Run Code Online (Sandbox Code Playgroud)

这肯定是从缓存中获取数据。问题是天蓝色门户中的端到端事务显示对该请求的数据库访问: 在此输入图像描述

为什么?另一方面,当我检查 Redis 的获取量正在增加时: 在此输入图像描述

小智 5

很难判断您使用的是哪种 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;
    }
}
Run Code Online (Sandbox Code Playgroud)

您可以添加 Redis 主机等详细信息,或删除您不希望出现在遥测中的内容。

这是它在查看器中的样子