LazyCache icon indicating copy to clipboard operation
LazyCache copied to clipboard

Is it possible to set the maximum size limit of the LazyCache as is possible in IMemoryCache by MS?

Open DanielTulpWE opened this issue 2 years ago • 1 comments

In MemoryCache by Microsoft we can do things like

public class MyMemoryCache
{
    public MemoryCache Cache { get; } = new MemoryCache(
        new MemoryCacheOptions
        {
            SizeLimit = 1024
        });
}

or

Action<MemoryCacheOptions> action = options =>
            {
                options.SizeLimit = 1024;
            };
services.AddMemoryCache(action);

Is there a way to limit the total size of the LazyCache?

If not, this should be your next feature to implement in my opinion.

This is why it is important

DanielTulpWE avatar May 01 '23 12:05 DanielTulpWE

I have figured out a way to do it, not entirely sure yet that LazyCache will use this configuration, maybe @alastairtree can confirm this

/// <summary>
/// Our caching implementation
/// </summary>
public class OurLazyCaching : CachingService
{
      /// <summary>
      /// Our custom caching options, configure in appsettings?
      /// </summary>
      private static readonly IOptions<MemoryCacheOptions> _options = new MemoryCacheOptions
      {
          SizeLimit = 1024 // unitless size
      };

      /// <summary>
      /// Constructor that applies our custom caching options
      /// </summary>
      public OurLazyCaching() : 
          base(new Lazy<ICacheProvider>(() =>
                  new MemoryCacheProvider(new MemoryCache(_options))
                  )
              )
      {
      }
}

And than use this in the denpendency injection services.AddSingleton<IAppCache, OurLazyCaching>();

DanielTulpWE avatar May 07 '23 20:05 DanielTulpWE