< Summary

Information
Class: Intentum.AI.Caching.Redis.RedisCachingExtensions
Assembly: Intentum.AI.Caching.Redis
File(s): /home/runner/work/Intentum/Intentum/src/Intentum.AI.Caching.Redis/RedisCachingExtensions.cs
Line coverage
0%
Covered lines: 0
Uncovered lines: 19
Coverable lines: 19
Total lines: 67
Line coverage: 0%
Branch coverage
0%
Covered branches: 0
Total branches: 4
Branch coverage: 0%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
AddIntentumRedisCache(...)0%440%

File(s)

/home/runner/work/Intentum/Intentum/src/Intentum.AI.Caching.Redis/RedisCachingExtensions.cs

#LineLine coverage
 1using JetBrains.Annotations;
 2using Microsoft.Extensions.Caching.Distributed;
 3using Microsoft.Extensions.DependencyInjection;
 4
 5namespace Intentum.AI.Caching.Redis;
 6
 7/// <summary>
 8/// Extension methods for registering Redis embedding cache with dependency injection.
 9/// </summary>
 10[UsedImplicitly]
 11public static class RedisCachingExtensions
 12{
 13    /// <summary>
 14    /// Adds Redis-backed distributed embedding cache to the service collection.
 15    /// Configures StackExchangeRedisCache and registers RedisEmbeddingCache as IEmbeddingCache.
 16    /// </summary>
 17    /// <param name="services">The service collection.</param>
 18    /// <param name="configure">Action to configure Redis cache options (connection string, instance name, etc.).</param
 19    /// <returns>The service collection for chaining.</returns>
 20    [UsedImplicitly]
 21    public static IServiceCollection AddIntentumRedisCache(
 22        this IServiceCollection services,
 23        Action<IntentumRedisCacheOptions>? configure = null)
 024    {
 025        var options = new IntentumRedisCacheOptions();
 026        configure?.Invoke(options);
 27
 028        services.AddStackExchangeRedisCache(redisOptions =>
 029        {
 030            redisOptions.Configuration = options.ConnectionString;
 031            redisOptions.InstanceName = options.InstanceName ?? "Intentum:";
 032        });
 33
 034        services.AddSingleton<IEmbeddingCache>(sp =>
 035        {
 036            var cache = sp.GetRequiredService<IDistributedCache>();
 037            var entryOptions = new DistributedCacheEntryOptions
 038            {
 039                AbsoluteExpirationRelativeToNow = options.DefaultExpiration
 040            };
 041            return new RedisEmbeddingCache(cache, entryOptions);
 042        });
 43
 044        return services;
 045    }
 46}
 47
 48/// <summary>
 49/// Options for Intentum Redis embedding cache.
 50/// </summary>
 51public sealed class IntentumRedisCacheOptions
 52{
 53    /// <summary>
 54    /// Redis connection string (e.g. "localhost:6379" or "contoso.redis.cache.windows.net:6380,password=...").
 55    /// </summary>
 56    public string ConnectionString { get; set; } = "localhost:6379";
 57
 58    /// <summary>
 59    /// Optional instance name prefix for keys (default "Intentum:").
 60    /// </summary>
 61    public string? InstanceName { get; set; }
 62
 63    /// <summary>
 64    /// Default expiration for cached embeddings (default 24 hours).
 65    /// </summary>
 66    public TimeSpan DefaultExpiration { get; set; } = TimeSpan.FromHours(24);
 67}