में मेमोरी कैश मैं अपने वेब एपीआई में Caching की तलाश में था जहां मैं बाद में कॉल के लिए एक एपीआई विधि (जो 12hrs में एक बार बदलता है) के आउटपुट का उपयोग कर सकता था और फिर मुझे this solution एसओ पर मिला, लेकिन मुझे कठिनाई हो रही है समझ और नीचे दिए गए कोडवेब एपीआई
private IEnumerable<TEntity> GetFromCache<TEntity>(string key, Func<IEnumerable<TEntity>> valueFactory) where TEntity : class
{
ObjectCache cache = MemoryCache.Default;
var newValue = new Lazy<IEnumerable<TEntity>>(valueFactory);
CacheItemPolicy policy = new CacheItemPolicy { AbsoluteExpiration = DateTimeOffset.Now.AddMinutes(30) };
//The line below returns existing item or adds the new value if it doesn't exist
var value = cache.AddOrGetExisting(key, newValue, policy) as Lazy<IEnumerable<TEntity>>;
return (value ?? newValue).Value; // Lazy<T> handles the locking itself
}
का उपयोग करने में मुझे यकीन है कि कैसे फोन और नीचे संदर्भ में इस विधि का उपयोग करने के लिए नहीं कर रहा हूँ? मैं एक विधि
public IEnumerable<Employee> Get()
{
return repository.GetEmployees().OrderBy(c => c.EmpId);
}
जाओ है और मैं) जाओ और GetEmployeeById (मेरे अन्य तरीकों में उपयोग के उत्पादन में कैश या (खोज)
public Movie GetEmployeeById(int EmpId)
{
//Search Employee in Cached Get
}
public IEnumerable<Employee> GetEmployeeBySearchString(string searchstr)
{
//Search in Cached Get
}
@little यह GetFromCache विधि –
@little आप valueFactory समारोह के अंदर अपने भंडार बुलाना चाहिए के अंदर किया जाता है (यह केवल निष्पादित किया जाएगा यदि वस्तु में नहीं है कैश)। मेरा जवाब देखें, मैं एक भंडार नहीं बुला रहा हूं लेकिन सीधे संदर्भ को संदर्भित करता हूं, इसलिए संदर्भ को प्रतिस्थापन के साथ प्रतिस्थापित करें। –
@little मैंने अपने उदाहरण में GetMovieBySearchParameter विधि अपडेट की है और अब यह एक भंडार का उपयोग कर रहा है। –