alastairtree / LazyCache

An easy to use thread safe in-memory caching service with a simple developer friendly API for c#
https://nuget.org/packages/LazyCache
MIT License
1.71k stars 159 forks source link

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

Open DanielTulpWE opened 1 year ago

DanielTulpWE commented 1 year ago

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 commented 1 year ago

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>();