I am using Microsoft.Extensions.Caching.Memory.MemoryCache and I want to remove the Least Recently Used when the cache reaches the maximum number of entries. Here's my code,
public class MemoryCacheManagement
{
private MemoryCache Cache { get; set; }
public MemoryCacheRepository()
{
Cache = new MemoryCache(new MemoryCacheOptions
{
SizeLimit = 5
});
}
public void SetValue<T>(string key, T value)
{
Cache.Set(key, value, new MemoryCacheEntryOptions()
.SetSize(1)
);
}
}
This is my test
[Test]
public void Test1()
{
var cache = new MemoryCacheManagement();
User[]? users = new User[]
{
new User { Id = 1, Name = "User1", Age = 20 },
new User { Id = 2, Name = "User2", Age = 21 },
new User { Id = 3, Name = "User3", Age = 22 },
new User { Id = 4, Name = "User4", Age = 21 },
new User { Id = 5, Name = "User5", Age = 22 },
new User { Id = 6, Name = "User6", Age = 21 },
new User { Id = 1, Name = "User1", Age = 20 },
new User { Id = 7, Name = "User7", Age = 22 },
new User { Id = 2, Name = "User2", Age = 21 },
new User { Id = 3, Name = "User3", Age = 22 },
new User { Id = 2, Name = "User2", Age = 21 },
new User { Id = 3, Name = "User3", Age = 22 }
};
for (int i = 0; i < users.Length; i++)
{
cache.SetValue(users[i].Id.ToString(), users[i]);
}
}
Is the a way to setup the MemoryCacheEntryOptions
so the least recently used entry to be removed?
Thanks