This function gets existing item form cache, and if the item don't exist in cache, it will fetch item based on the valueFetchFactory function.
public static TValue GetExistingOrAdd<TValue>(string key, double minutesForExpiration, Func<TValue> valueFetchFactory)
{
...