Exemple #1
0
 public void Insert(string key, object value, KeyCacheDependency dependencies, DateTime absoluteExpiration)
 {
     foreach (var cacheProvider in cacheProviders)
     {
         cacheProvider.Insert(key, value, dependencies, absoluteExpiration);
     }
 }
Exemple #2
0
 public void Insert(string key, object value, KeyCacheDependency dependencies)
 {
     foreach (var cacheProvider in cacheProviders)
     {
         cacheProvider.Insert(key, value, dependencies);
     }
 }
        /// <summary>
        /// A method that actually inserts the cache entry.
        /// </summary>
        private void PerformInsert(string key, object value, KeyCacheDependency dependencies,
                                   DateTime?absoluteExpiration)
        {
            InvalidateDependencies(key);

            var entry = new CacheEntry(value, dependencies, absoluteExpiration);

            Client.Insert(key, entry, absoluteExpiration);

            UpdateDependencies(key, dependencies);
        }
        /// <summary>
        /// Updates dependencies for a specified key. Adding a dependency
        /// to a key will remove this key from the cache every time any of
        /// the dependant keys is updated or removed from cache.
        /// </summary>
        private void UpdateDependencies(string key, KeyCacheDependency dependencies)
        {
            if (dependencies == null)
            {
                return;
            }

            foreach (var dependency in dependencies)
            {
                var dependenciesKey = CreateDependenciesKey(dependency);
                var dependants      = Client.Get(dependenciesKey) as HashSet <string>;
                if (dependants == null)
                {
                    dependants = new HashSet <string>();
                }

                // Add the parent key to dependencies of the dependant
                // key so we can efficiently find keys that need to be
                // invalidated when updating cache entries.
                dependants.Add(key);
                Client.Insert(dependenciesKey, dependants, null);
            }
        }
 public void Insert(string key, object value, KeyCacheDependency dependencies,
                    DateTime absoluteExpiration)
 {
     PerformInsert(key, value, dependencies, absoluteExpiration);
 }
 public void Insert(string key, object value, KeyCacheDependency dependencies)
 {
     PerformInsert(key, value, dependencies, null);
 }
Exemple #7
0
 public CacheEntry(object value, KeyCacheDependency dependencies, DateTime?absoluteExpiration)
 {
     Value              = value;
     Dependencies       = dependencies;
     AbsoluteExpiration = absoluteExpiration;
 }