ASP.NET缓存:缓存应用程序数据

本文详细介绍了如何在ASP.NET应用中通过直接指定、使用Insert方法、Add方法等方式添加应用程序缓存项,并讨论了缓存项的依赖、过期策略、优先级设置等关键概念。同时,还阐述了如何通过Cache对象的Insert方法和Add方法添加带有特定依赖项、过期策略和优先级的缓存项,以及如何从缓存中移除缓存项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 添加应用程序缓存项

1、添加应用程序缓存项可以通过直接指定Cache对象的键值、Cache对象的Insert方法、Cache对象的Add方法实现。

2、Cache对象的Insert方法有多个重载方法,通过重载可以指定创建缓存项的依赖,过期时间策略,优先级。

3、如果使用Insert方法向缓存添加项,并且已经存在与现有项同名的项,则缓存中的现有项将被替换。

4、Add方法没有重载方法;Add方法添加缓存项,将返回缓存中的对象;如果使用Add方法,缓存中已经存在与现有项同名的缓存项,则已存在的缓存项不会替换,并且不会引发异常。

 

            /**********通过键和值直接设置项向缓存添加项***********/
            Cache["keyCache1"] = "valueCache1";


            /**********通过使用 Insert 方法将项添加到缓存中***********/
            Cache.Insert("keyCache2", "valueCache2");


            /**********通过指定依赖项向缓存添加项***********/
            string[] dependencies = { "keyCache2" };
            Cache.Insert("keyCache3", "valueCache3",
                new System.Web.Caching.CacheDependency(null, dependencies));


            /**********通过指定依赖项向缓存添加项(依赖指定应用缓存)***********/
            Cache.Insert("keyCache4", "valueCache4",
                new System.Web.Caching.CacheDependency(
                    Server.MapPath("XMLFile.xml")));


            /**********通过指定依赖项向缓存添加项(依赖指定文件组)***********/
            string[] fileNames;
            string fileName1 = Server.MapPath("txtFile.txt");
            string fileName2 = Server.MapPath("xmlFile.xml");
            fileNames = new string[] { fileName1, fileName2 };
            Cache.Insert("keyCache5", "valueCache5",
                new System.Web.Caching.CacheDependency(
                    fileNames));


            /**********通过指定依赖项向缓存添加项(依赖指定键和文件)***********/
            System.Web.Caching.CacheDependency dep1 =
                new System.Web.Caching.CacheDependency(Server.MapPath("xmlFile.xml"));
            string[] keyDependcies2 = { "keyCache1" };
            System.Web.Caching.CacheDependency dep2 =
                new System.Web.Caching.CacheDependency(null, keyDependcies2);
            System.Web.Caching.AggregateCacheDependency manyDep =
                new System.Web.Caching.AggregateCacheDependency();
            manyDep.Add(dep1);
            manyDep.Add(dep2);
            Cache.Insert("keyCache6", "valueCache6", manyDep);


           /**********将设有过期策略的项添加到缓存中(绝对过期时间)***********/
            //设置了绝对过期,则不能设置滑动过期
            Cache.Insert("keyCache7", "valueCache7",
                null, DateTime.Now.AddMinutes(1d),
                System.Web.Caching.Cache.NoSlidingExpiration);


          /**********将设有过期策略的项添加到缓存中(滑动过期时间)***********/
            //如果设置了滑动过期,则不能设置绝对过期
            Cache.Insert("keyCache8", "valueCache8",
                null, System.Web.Caching.Cache.NoAbsoluteExpiration,
                new TimeSpan(0, 10, 0));


          /**********将设有优先级设置的项添加到缓存中***********/
            //AboveNormal 优先级高于Normal
            //BelowNormal 优先级低于Normal
          //Default 默认值为Normal优先级
            //High 在释放内存时,该优先级最不可能从缓存中移除
            //Low 该优先级最低
            //Normal 该优先级高于BelowNormal
          //NotRemovable 该优先级不会自动从缓存中移除,但受绝对时间和调整时间影响
            Cache.Insert("keyCache9", "valueCache9",
                null, System.Web.Caching.Cache.NoAbsoluteExpiration,
                System.Web.Caching.Cache.NoSlidingExpiration,
                System.Web.Caching.CacheItemPriority.High, null);


            /**********使用 Add 方法向缓存添加项***********/
            //Add方法没有重载
            //Add方法将返回该缓存的值
            string valueCache10 = Cache.Add("keyCache10", "valueCache10",
                null, System.Web.Caching.Cache.NoAbsoluteExpiration,
                System.Web.Caching.Cache.NoSlidingExpiration,
System.Web.Caching.CacheItemPriority.Default,
null);
  •  检索应用程序缓存项的值
            string cachedString;
            cachedString = (string)Cache["keyCache1"];
            if (cachedString == null)
            {
                cachedString = "valueCache1";
                Cache.Insert("keyCache1", cachedString);
            }
  •  从缓存中移除缓存项

     Asp.net缓存中的数据易丢失。丢失原因:缓存已满,缓存项过期,依赖项发生改变。

        Cache.Remove("keyCache1");

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值