提问者:小点点

检查缓存中是否存在数据


在下面的函数中,我想缓存一个数据并将其存储到缓存内存中,从服务中获取数据。

我不知道如何检查数据是否存在于缓存中,如果假设数据存在于缓存中,那么我不想调用webservice只显示存在于缓存内存中的数据。

    public string EmployeeNames
    {
        get
        {
            var employeenames = System.Runtime.Caching.MemoryCache.Default["EmployeeNames"];
            
            // getting data from web service one bye one and storing into employeenames
            employeenames = AccountModel.EmployeeNames(EmployeeInfo);
            
            System.Runtime.Caching.MemoryCache.Default["EmployeeNames"] = employeenames;
            return employeenames.ToString();
        }
    }

共2个答案

匿名用户

您可以使用MemoryCache检查它。包含,用于确定缓存中是否存在缓存项,如果存在,则使用获取方法获取它,该方法将返回缓存中存储的任何值。如果没有得到,它将返回一个空值。

var cache = System.Runtime.Caching.MemoryCache;

if (cache != null && cache.Contains("EmployeeNames"))
{
    var EmployeeNames = cache.Get("EmployeeNames");
}

更多关于MemoryCache的信息。包含-https://docs.microsoft.com/en-us/dotnet/api/system.runtime.caching.memorycache.contains?view=dotnet-平台扩展6.0

匿名用户

你可以打电话

var employeenames = MemoryCache.Default.Get("EmployeeNames");

如果缓存中不存在该项,则返回null。

您可以使用包含查看项目是否存在:

if(MemoryCache.Default.Contains("EmployeeNames"))

但尽管不太可能,但有可能包含将返回"true",但当您检索该项时,该项将不会在缓存中。所以我只是获取它,看看它是否为空,如果你不想检索它,只使用包含它。