< Summary

Information
Class: Intentum.AI.Caching.Redis.IntentumRedisCacheOptions
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: 3
Coverable lines: 3
Total lines: 67
Line coverage: 0%
Branch coverage
N/A
Covered branches: 0
Total branches: 0
Branch coverage: N/A
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

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)
 24    {
 25        var options = new IntentumRedisCacheOptions();
 26        configure?.Invoke(options);
 27
 28        services.AddStackExchangeRedisCache(redisOptions =>
 29        {
 30            redisOptions.Configuration = options.ConnectionString;
 31            redisOptions.InstanceName = options.InstanceName ?? "Intentum:";
 32        });
 33
 34        services.AddSingleton<IEmbeddingCache>(sp =>
 35        {
 36            var cache = sp.GetRequiredService<IDistributedCache>();
 37            var entryOptions = new DistributedCacheEntryOptions
 38            {
 39                AbsoluteExpirationRelativeToNow = options.DefaultExpiration
 40            };
 41            return new RedisEmbeddingCache(cache, entryOptions);
 42        });
 43
 44        return services;
 45    }
 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>
 056    public string ConnectionString { get; set; } = "localhost:6379";
 57
 58    /// <summary>
 59    /// Optional instance name prefix for keys (default "Intentum:").
 60    /// </summary>
 061    public string? InstanceName { get; set; }
 62
 63    /// <summary>
 64    /// Default expiration for cached embeddings (default 24 hours).
 65    /// </summary>
 066    public TimeSpan DefaultExpiration { get; set; } = TimeSpan.FromHours(24);
 67}