• c# 缓存 简单概念


    1)什么是缓存

       如果之前有输入这个数据,可以直接取出 。不用再次输入 如QQ登入。。。。

      2)简单的概念 方便理解

         1  创建一个操作缓存的类

      

    class CacheHelper
        {
    
            /// <summary>
            /// 缓存的操作类
            /// </summary>
            /// 声明一个字典 用于存储数据
            private static Dictionary<string, object> CacheDictionary = new Dictionary<string, object>();
            //添加数据
            public static void Add(string key, object value)
            {
                CacheDictionary.Add(key, value);
    
            }
            //用 Key 查找数据
            public static T Get<T>(string key)
            {
                return (T)CacheDictionary[key];
            }
            //是否存在数据
            public static bool Exsits(string key)
            {
                return CacheDictionary.ContainsKey(key);
            }
            /// <summary>
            /// 缓存的获取的方法
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="key"></param>
            /// <param name="func"></param>
            /// <returns></returns>
            public static T GetCache<T>(string key, Func<T> func)
            {
                T t = default(T);
                if (Exsits(key))
                {
                    //缓存存在,直接获取原数据
                    t =Get<T>(key);
                }
                else
                {
                    //缓存不存在,去生成缓存,并加入容器
                    t = func.Invoke();
                    Add(key, t);
                }
                return t;
            }
        }
    

      

         2创建一个方法模仿数据写入

     class DB
        {
            public static int GetDataDB(int count)
            {
    
                Console.WriteLine("--------GetDataByDB---------");
                int result = 0;
                for (int i = count; i < 999999; i++)
                {
                    result+= i;
                }
                Thread.Sleep(2000);
                return result;
            }
    
    
        }
    

      

         3调用

      class Program
        {
            
            static void Main(string[] args)
            {
                for (int i = 1; i < 6; i++)
                {
                    Console.WriteLine($"------第{i}次请求------");
                    int result = 0;
                    //key的名字一定要确保请求的准确性 DataSource GetDataByDB 666缺一不可
                    string key = "DataSource_GetDataByDB_666";
    
                    //将需要执行的获取数据操作编写成委托传入方法(重点)
                    //Func<int> func = new Func<int>(() => { return DataSource.GetDataByDB(666); });
    
                    result = CacheHelper.GetCache(key, () => DB.GetDataDB(666));
                    Console.WriteLine($"第{i}次请求获得的数据为:{result}");
                }
                Console.ReadLine();
            }
    
    
        }
    

      缓存尽量在数据量小、重复查询量大的情况下使用。因为缓存也是要耗内存的,服务器内存是有限的!

  • 相关阅读:
    不准再问我:最近过的怎么样
    嫌疑人X的献身
    关于生活
    怎么可以这样
    在WPF中动态使用图片和按钮
    MFC 中获取对话框中控件焦点的方法
    MessageBox的常见用法
    拖拽(待完善版)
    Baidu Suggestion 百度搜索(仅功能实现,烂版)
    如何判断一个对象是Element?
  • 原文地址:https://www.cnblogs.com/wbg522963969/p/12568651.html
Copyright © 2020-2023  润新知