using Microsoft.Extensions.Caching.Memory;
using Microsoft.Extensions.DependencyInjection;
namespace MemoryCacheDemo
static void Main(string[] args)
var services = new ServiceCollection();
services.AddMemoryCache();
services.AddTransient<MyService>();
var serviceProvider = services.BuildServiceProvider();
var myService = serviceProvider.GetService<MyService>();
myService.Add(1, "test");
var obj = myService.Get(1);
Console.WriteLine(obj.ToString());
private readonly IMemoryCache _memoryCache;
public MyService(IMemoryCache memoryCache)
_memoryCache = memoryCache;
public void Add(int id, object obj)
_memoryCache.Set(id, new {Id = id, Obj = obj}, new MemoryCacheEntryOptions
SlidingExpiration = TimeSpan.FromMinutes(2)
Console.WriteLine($"Added id {id} to cache");
var hasValue = _memoryCache.TryGetValue(id, out _);
Console.WriteLine(hasValue ? $"Found {id} in cache" : $"Id {id} not found");
public object Get(int id)
_memoryCache.TryGetValue(id, out object obj);