Exemplo n.º 1
0
        public IEnumerable <T> GetAll(Func <IEnumerable <T> > cacheMissFunc)
        {
            BuildCache();
            var data = CacheLock.Read(Lock, () => {
                var data1 = primaryCache.GetAll();
                return(data1.Any() ? data1 : secondaryCaches.GetAll());
            });

            if (!data.Any())
            {
                data = cacheMissStrategy.Execute(cacheMissFunc);
                Bust(data);
            }

            return(data);
        }
Exemplo n.º 2
0
        private List <T> GetCachedItems <TU>(IEnumerable <TU> keys)
        {
            var results = new List <T>();

            foreach (var key in keys)
            {
                if (primaryCache.Contains(key))
                {
                    results.Add(CacheLock.Read(Lock, () => primaryCache.GetByKey(key)));
                }
                else
                {
                    results.AddRange(CacheLock.Read(Lock, () => secondaryCaches.Get(key)));
                }
            }
            return(results);
        }