Func委托使用

缓存数据首页统计数据

分钟func委托

 public T GetOrSetCache<T>(Func<T> dataFetchFunc, string key)
        {
            if (key.IsNotEmpty())
            {
                var cachedData = GetCacheData<T>(key);
                if (cachedData != null)
                {
                    return cachedData;
                }
            }

            var data = dataFetchFunc();
            if (key.IsNotEmpty())
            {
                SetCacheData(key, data);
            }
            return data;
        }

 /// <summary>
        /// 获取缓存数据
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="key"></param>
        /// <returns></returns>
        private T GetCacheData<T>(string key)
        {
            return CacheProvider.Redis().Get<T>(key);
        }

        /// <summary>
        /// 设置缓存数据
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="key"></param>
        /// <param name="data"></param>
        private void SetCacheData<T>(string key, T data)
        {
            CacheProvider.Redis().Write(key, data, 60 * 10);
        }

使用就是,这个是不带参数的

 var result = GetOrSetCache(() => getdata(model), key);

或者是带参数的

   public delegate TResult Func<in T, out TResult>(T arg);

使用就是,返回的是获取的数据

model => { return getdata(model); }

 

posted @ 2025-05-15 10:48  世人皆萌  阅读(11)  评论(0)    收藏  举报