public void InitFromConfig(string cacheName, NameValueCollection parameters) { if (!parameters.AllKeys.Contains("serverList") || parameters["serverList"] == null || parameters["serverList"].Trim().Length <= 0) { throw new ConfigurationErrorsException("Please config the 'serverList' in parameters for cache type '" + typeof(MemcachedCache).AssemblyQualifiedName + "'"); } string pname = string.Format(PARTITION_NAME, cacheName); if (!MemcachedClient.Exists(pname)) { MemcachedClient.Setup(pname, parameters["serverList"].Trim().Split(new char[] { ',', ';' }, StringSplitOptions.RemoveEmptyEntries)); } m_CacheManager = MemcachedClient.GetInstance(pname); m_DistributedKeyStorage = new DistributedKeyStorage(m_CacheManager); if (parameters.AllKeys.Contains("maxPoolSize") && parameters["maxPoolSize"] != null && parameters["maxPoolSize"].Trim().Length > 0) { m_CacheManager.MaxPoolSize = Convert.ToUInt32(parameters["maxPoolSize"].Trim()); } if (parameters.AllKeys.Contains("minPoolSize") && parameters["minPoolSize"] != null && parameters["minPoolSize"].Trim().Length > 0) { m_CacheManager.MinPoolSize = Convert.ToUInt32(parameters["minPoolSize"].Trim()); } if (parameters.AllKeys.Contains("sendReceiveTimeout") && parameters["sendReceiveTimeout"] != null && parameters["sendReceiveTimeout"].Trim().Length > 0) { m_CacheManager.SendReceiveTimeout = (int)(TimeSpan.Parse(parameters["sendReceiveTimeout"].Trim()).TotalMilliseconds); } if (parameters.AllKeys.Contains("socketRecycleAge") && parameters["socketRecycleAge"] != null && parameters["socketRecycleAge"].Trim().Length > 0) { m_CacheManager.SocketRecycleAge = TimeSpan.Parse(parameters["socketRecycleAge"].Trim()); } if (parameters.AllKeys.Contains("keyPrefix") && parameters["keyPrefix"] != null && parameters["keyPrefix"].Trim().Length > 0) { m_CacheManager.KeyPrefix = parameters["keyPrefix"].Trim(); } if (parameters.AllKeys.Contains("connectTimeout") && parameters["connectTimeout"] != null && parameters["connectTimeout"].Trim().Length > 0) { m_CacheManager.ConnectTimeout = (int)(TimeSpan.Parse(parameters["connectTimeout"].Trim()).TotalMilliseconds); } if (parameters.AllKeys.Contains("compressionThreshold") && parameters["compressionThreshold"] != null && parameters["compressionThreshold"].Trim().Length > 0) { m_CacheManager.CompressionThreshold = Convert.ToUInt32(parameters["compressionThreshold"].Trim()); } if (parameters.AllKeys.Contains("localCacheExpiry") && parameters["localCacheExpiry"] != null && parameters["localCacheExpiry"].Trim().Length > 0) { m_LocalCacheExpiry = TimeSpan.Parse(parameters["localCacheExpiry"].Trim()); } if (parameters.AllKeys.Contains("localCacheName") && parameters["localCacheName"] != null && parameters["localCacheName"].Trim().Length > 0) { m_LocalCache = CacheFactory.GetInstance(parameters["localCacheName"].Trim()); } m_Timer = new Timer(new TimerCallback(RealHitSlidingCacheItem), null, 1000, 1000); }