At https://youtu.be/BL5yo_p7x-E you can find the new video about caching in .NET with Memory Cache.
The code is:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Caching;
using System.Text;
using System.Threading.Tasks;
namespace MemoryCacheNet
{
    public static class GlobalData
    {
        static object lockMe = new object();
        public static List<string> CountryList()
        {
            string key = "countries";
            var data = MemoryCache.Default.Get(key) as List<string>;
            if(data == null)
            {
                lock (lockMe)
                {
                    data = MemoryCache.Default.Get(key) as List<string>;
                    if(data != null)
                    {
                        return data ;
                    }
                    data = CountryListFromDatabase();
                    var duration = DateTimeOffset.UtcNow.AddSeconds(5);
                    MemoryCache.Default.AddOrGetExisting(key,data,duration);
                   
                }
            }
            return data;
        }
        static List<string> CountryListFromDatabase()
        {
            Console.WriteLine("obtaining data from database");
            return new List<string>()
            {
                "Romania",
                "India",
                "USA"
                // add your country ;-)
            };
        }
    }
}
and using from Console:
using MemoryCacheNet;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace MemoryCacheDOS
{
    class Program
    {
        static void Main(string[] args)
        {
            var data = GlobalData.CountryList();
            Console.WriteLine(data.Count);
            Console.WriteLine("waiting 1 sec");
            Thread.Sleep(1000);
            data = GlobalData.CountryList();
            Console.WriteLine(data.Count);
            Console.WriteLine("waiting 5 sec");
            Thread.Sleep(5000);
            data = GlobalData.CountryList();
            Console.WriteLine(data.Count);
        }
    }
}
Other tutorials are:
5MinThrowVsThrowEx    
5Min Usefull Attributes     
5MinIValidatableObject     
5MinAsyncException     
5MinAsync     
5Min iMacrosAHK     
5min Zip     
5MinPSR     
5MinParseWebPage     
5MinFileHelpers     
5Min Logging     
5min Send emails and SMTP4Dev     
5Min Memory Profiler ( User Object and/or memory leaks)     
5min SFHB     
5min – .TT files in Visual Studio     
The full list is at https://www.youtube.com/playlist?list=PL4aSKgR4yk4OnmJW6PlBuDOXdYk6zTGps .
Leave a Reply