nug Createrun NuGet

Microsoft.Extensions.Caching.Memory

10.0.7 43 download(s)
public

In-memory cache implementation of Microsoft.Extensions.Caching.Memory.IMemoryCache.

PackageReference
<PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="10.0.7" />
.NET CLI
dotnet add package Microsoft.Extensions.Caching.Memory --version 10.0.7

Dependencies

net10.0
Package Version range
Microsoft.Extensions.Caching.Abstractions [10.0.7, )
Microsoft.Extensions.DependencyInjection.Abstractions [10.0.7, )
Microsoft.Extensions.Logging.Abstractions [10.0.7, )
Microsoft.Extensions.Options [10.0.7, )
Microsoft.Extensions.Primitives [10.0.7, )
net462
Package Version range
Microsoft.Extensions.Caching.Abstractions [10.0.7, )
Microsoft.Extensions.DependencyInjection.Abstractions [10.0.7, )
Microsoft.Extensions.Logging.Abstractions [10.0.7, )
Microsoft.Extensions.Options [10.0.7, )
Microsoft.Extensions.Primitives [10.0.7, )
System.ValueTuple [4.6.2, )
net8.0
Package Version range
Microsoft.Extensions.Caching.Abstractions [10.0.7, )
Microsoft.Extensions.DependencyInjection.Abstractions [10.0.7, )
Microsoft.Extensions.Logging.Abstractions [10.0.7, )
Microsoft.Extensions.Options [10.0.7, )
Microsoft.Extensions.Primitives [10.0.7, )
net9.0
Package Version range
Microsoft.Extensions.Caching.Abstractions [10.0.7, )
Microsoft.Extensions.DependencyInjection.Abstractions [10.0.7, )
Microsoft.Extensions.Logging.Abstractions [10.0.7, )
Microsoft.Extensions.Options [10.0.7, )
Microsoft.Extensions.Primitives [10.0.7, )
netstandard2.0
Package Version range
Microsoft.Extensions.Caching.Abstractions [10.0.7, )
Microsoft.Extensions.DependencyInjection.Abstractions [10.0.7, )
Microsoft.Extensions.Logging.Abstractions [10.0.7, )
Microsoft.Extensions.Options [10.0.7, )
Microsoft.Extensions.Primitives [10.0.7, )

Readme

## About

<!-- A description of the package and where one can find more documentation -->

Provides implementations for local and distributed in-memory cache. It stores and retrieves data in a fast and efficient way.

## Key Features

<!-- The key features of this package -->

* A concrete implementation of the IMemoryCache interface, which represents a local in-memory cache that stores and retrieves data in a fast and efficient way
* A distributed cache that supports higher scale-out than local cache
* Expiration and eviction policies for its entries
* Entry prioritization for when the cache size limit is exceeded and needs to be compacted by entry eviction
* Track of cache statictics

## How to Use

<!-- A compelling example on how to use this package with code, as well as any specific guidelines for when to use the package -->

Use Microsoft.Extensions.Caching.Memory over System.Runtime.Caching when working with ASP.NET Core as it provides better integration support. For example, IMemoryCache works natively with ASP.NET Core dependency injection.

Local in-memory serialization:
```csharp
using Microsoft.Extensions.Caching.Memory;

using MemoryCache cache = new(new MemoryCacheOptions());

object valueToCache = new();
string key = "key";

using (ICacheEntry entry = cache.CreateEntry(key))
{
    // Entries are committed after they are disposed therefore it does not exist yet.
    Console.WriteLine($"Exists: {cache.TryGetValue(key, out _)}\n");

    entry.Value = valueToCache;
    entry.SlidingExpiration = TimeSpan.FromSeconds(2);
}

bool exists = cache.TryGetValue(key, out object? cachedValue);
Console.WriteLine($"Exists: {exists}" );
Console.WriteLine($"cachedValue is valueToCache? {object.ReferenceEquals(cachedValue, valueToCache)}\n");

Console.WriteLine("Wait for the sliding expiration...");
Thread.Sleep(TimeSpan.FromSeconds(2));

Console.WriteLine("Exists: " + cache.TryGetValue(key, out _));

// You can also use the acceleration extensions to set and get entries
string key2 = "key2";
object value2 = new();

cache.Set("key2", value2);

object? cachedValue2 = cache.Get(key2);
Console.WriteLine($"cachedValue2 is value2? {object.ReferenceEquals(cachedValue2, value2)}");
```

## Main Types

<!-- The main types provided in this library -->

The main types provided by this library are:

* `Microsoft.Extensions.Caching.Memory.MemoryCache`
* `Microsoft.Extensions.Caching.Memory.MemoryCacheOptions`
* `Microsoft.Extensions.Caching.Distributed.MemoryDistributedCache`
* `Microsoft.Extensions.Caching.Memory.MemoryDistributedCacheOptions`

## Additional Documentation

<!-- Links to further documentation. Remove conceptual documentation if not available for the library. -->

* [Conceptual documentation](https://learn.microsoft.com/dotnet/core/extensions/caching)
* [Cache in-memory in ASP.NET Core](https://learn.microsoft.com/aspnet/core/performance/caching/memory)
* [API documentation](https://learn.microsoft.com/dotnet/api/microsoft.extensions.caching.memory)

## Related Packages

<!-- The related packages associated with this package -->

[Microsoft.Extensions.Caching.Abstractions](https://www.nuget.org/packages/Microsoft.Extensions.Caching.Abstractions)

## Feedback & Contributing

<!-- How to provide feedback on this package and contribute to it -->

Microsoft.Extensions.Caching.Memory is released as open source under the [MIT license](https://licenses.nuget.org/MIT). Bug reports and contributions are welcome at [the GitHub repository](https://github.com/dotnet/runtime).

Target frameworks

net10.0 net462 net8.0 net9.0 netstandard2.0

Metadata

Published
Size
191.9 KB
Authors
Microsoft
License
MIT
Repository
https://github.com/dotnet/dotnet commit b16286c2284fecf303dbc12a0bb152476d662e44
Flags
SemVer 1
SHA512
HT+otGFGndWFNffKCX5ZLjJhD/TwBxj9siuD5yHPl0f8do8+/DEblxKFQ2sAkyNX7uNIrdisqz8JiVl0kcfIAA==

Release notes

https://go.microsoft.com/fwlink/?LinkID=799421