public void Insert(string key, T value, TimeSpan expiration)
 {
     if (randomizeExpiration && expiration != TimeSpan.Zero)
     {
         double percent10 = expiration.TotalSeconds * 0.1D;
         double change    = (percent10 / 2D) - (Util.Consts.Rnd.NextDouble() * percent10);
         expiration = expiration.Add(TimeSpan.FromSeconds(change));
     }
     if (value != null)
     {
         if (expiration == TimeSpan.Zero)
         {
             cache.Insert <T>(fixKey(key), value, TimeSpan.FromDays(365 * 2));
         }
         else
         {
             cache.Insert <T>(fixKey(key), value, expiration);
         }
     }
     else
     {
         BaseCache <T> .Logger.Warning(new Devmasters.Core.Logging.LogMessage()
                                       .SetMessage("CouchbaseCacheProvider> null value")
                                       .SetLevel(Devmasters.Core.Logging.PriorityLevel.Warning)
                                       .SetCustomKeyValue("objectType", typeof(T).ToString())
                                       .SetCustomKeyValue("cache key", key)
                                       );
     }
 }