0

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

Garry A
  • 383
  • 5
  • 19

0 Answers0