InMemory 1.0.7

A MemoryCache which tries to prevent cache miss for hot entries, by refreshing before expiration.

Requires NuGet 2.8 or higher.

Install-Package InMemory -Version 1.0.7
dotnet add package InMemory --version 1.0.7
<PackageReference Include="InMemory" Version="1.0.7">
  <PrivateAssets>all</PrivateAssets>
  <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add InMemory --version 1.0.7
The NuGet Team does not provide support for this client. Please contact its maintainers for support.

InMemory Cache

Build status
nuget version
Nuget downloads


A MemoryCache which tries to prevent cache miss for hot entries, by refreshing before expiration.

Auto Refreshing Cache example:


// define auto refreshing cache
var cache = new AutoRefreshingCache<string>(expireAfter: 10, refreshAfter: 8, cacheName: "shortTimeCache");

// add key/value data to cache
cache.Inject("key", "value");

// get count of expired cache by key elements
int expiredCacheCount = cache.CountExpiredElements(new[] { "key1", "key2", "key3", "key4" });

// get or update a key in cache, the update operate when occurred that cache was expired, else get old value.
var value = cache.Get("key", () => "new value");

Lifetime Cache example:


// define lifetime cache
var lifetimeCache = new AutoRefreshingCache<object>(cacheName: "lifetimeCache");
lifetimeCache.Inject("test", 123456);
int testValue = lifetimeCache.Get<int>("test");

Rate Limiter example:


// define rate limiter for decide can call a method too more or not?
var rateLimiter = new RateLimiter(maxTries: 100, inPeriod: 120, cacheName: "rateLimiterCache");
bool canProc = rateLimiter.CanProceed("method name or a key");

Request Limiter by IP Filter example:


// use rate limiter in Web API or MVC Controller to limit request count for all actions by IP filtering
[RequestLimiterByIpFilter] // default: maxTries: 2000, inPeriod: 3600, filterName: nameof(RequestLimiterByIpFilterAttribute)
[RequestLimiterByIpFilter(maxTries: 100, inPeriod: 120, filterName: nameof(TestController))] // customized
public class TestController : Controller
{
	public IActionResult GetTest()
	{
		// ...
	}

	.
	.
	.
}

InMemory Cache

Build status
nuget version
Nuget downloads


A MemoryCache which tries to prevent cache miss for hot entries, by refreshing before expiration.

Auto Refreshing Cache example:


// define auto refreshing cache
var cache = new AutoRefreshingCache<string>(expireAfter: 10, refreshAfter: 8, cacheName: "shortTimeCache");

// add key/value data to cache
cache.Inject("key", "value");

// get count of expired cache by key elements
int expiredCacheCount = cache.CountExpiredElements(new[] { "key1", "key2", "key3", "key4" });

// get or update a key in cache, the update operate when occurred that cache was expired, else get old value.
var value = cache.Get("key", () => "new value");

Lifetime Cache example:


// define lifetime cache
var lifetimeCache = new AutoRefreshingCache<object>(cacheName: "lifetimeCache");
lifetimeCache.Inject("test", 123456);
int testValue = lifetimeCache.Get<int>("test");

Rate Limiter example:


// define rate limiter for decide can call a method too more or not?
var rateLimiter = new RateLimiter(maxTries: 100, inPeriod: 120, cacheName: "rateLimiterCache");
bool canProc = rateLimiter.CanProceed("method name or a key");

Request Limiter by IP Filter example:


// use rate limiter in Web API or MVC Controller to limit request count for all actions by IP filtering
[RequestLimiterByIpFilter] // default: maxTries: 2000, inPeriod: 3600, filterName: nameof(RequestLimiterByIpFilterAttribute)
[RequestLimiterByIpFilter(maxTries: 100, inPeriod: 120, filterName: nameof(TestController))] // customized
public class TestController : Controller
{
	public IActionResult GetTest()
	{
		// ...
	}

	.
	.
	.
}

Release Notes

* Add lifetime cache feature

This package is not used by any popular GitHub repositories.

Version History

Version Downloads Last updated
1.0.7 5,876 5/9/2018
1.0.6 4,419 5/9/2018
1.0.5 3,937 5/9/2018
1.0.4 4,128 5/5/2018
1.0.3 3,895 5/1/2018
1.0.2 3,936 4/30/2018
1.0.1 3,943 4/30/2018