Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Latest commit

 

History

35 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NuGet version (IL.InMemoryCacheProvider)

InMemory Cache Provider

  • Basic implementation of generic in-memory cache provider, based on Microsoft.Extensions.Caching.Memory.
  • Comes with set of useful thread safe extensions to get objects from cache or add them with factory.
  • Introduces several not supported by default methods, like IEnumerable<string> GetAllKeys() or void DeleteAll().
  • Supports tags on cache entries and eviction by tag.

Concurrency Notes

  • Mutating operations (Add, Delete, EvictByTag, DeleteAll and async variants) are serialized to keep tag indexes consistent under concurrent use.
  • Read operations (Get, HasKey, GetAllKeys and async variants) are lock-free for performance. This means reads may observe transient states during concurrent mutations, which is expected for a non-transactional cache.

Usage sample:

Register in DI with any container of your preference. Microsoft.Extensions.DependencyInjection will be used in this sample.

services.AddSingleton<ICacheProvider, InMemoryCacheProvider>();

class Test(ICacheProvider cacheProvider)
{

  void Foo(CancellationToken cancellationToken = default)
  {
    var cacheKey = "test";
    var cacheTags = ["test1", "test2"];
    var valueFromCache = cacheProvider.GetOrAdd(cacheKey,
                CacheValueFactory,
                tags: cacheTags,
                cacheCreationCondition: s => !string.IsNullOrEmpty(s),
                expirationOptions: new ExpirationOptions
                {
                    AbsoluteExpirationRelativeToNow = TimeSpan.FromMinutes(1),
                    AbsoluteExpiration = DateTimeOffset.Now.AddMinutes(10),
                    SlidingExpiration = TimeSpan.FromSeconds(30)
                },
                cancellationToken: cancellationToken);
  }

  private string CacheValueFactory() => return "test value";

}

Nuget

https://www.nuget.org/packages/IL.InMemoryCacheProvider/

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages