缓存学习总结2(服务器本地缓存)

.Net程序中使用本地缓存,基于System.Web.Caching类。

提供了对缓存数据的新增、查询、清除操作。

有关更多缓存操作参考文章:https://www.cnblogs.com/kissdodog/archive/2013/05/07/3064895.html

新增缓存

实例一:缓存的值为字符串类型

          {
                Cache cache = HttpRuntime.Cache;
                cache.Insert("我是key", "我是缓存的字符串内容");

                var enumerator1 = cache.GetEnumerator();
                while (enumerator1.MoveNext())
                {
                    Console.WriteLine($"key:{enumerator1.Key},value:{enumerator1.Value}");
                }
            }

执行结果:

实例二:缓存的值为对象

         {
                Cache cache = HttpRuntime.Cache;
                Person p = new Person();
                p.Id = 1;
                p.Name = "张三";

                cache.Insert("AA", p);

                var enumerator1 = cache.GetEnumerator();
                while (enumerator1.MoveNext())
                {
                    Console.WriteLine($"key:{enumerator1.Key},value:{(enumerator1.Value as Person).Id} {(enumerator1.Value as Person).Name}");
                }
            }
    public class Person
    {
        public int Id { get; set; }
        public string Name { get; set; }
    }

执行结果:

新增缓存除了Insert方法外,还有Add方法:

实例三:通过Add方法添加缓存

          {
                Cache cache = HttpRuntime.Cache;

                //Add方法需要加载七个参数,一个都不能少
                var obj = cache.Add("BB", "我是通过Add方法添加的缓存数据1", null, Cache.NoAbsoluteExpiration, TimeSpan.FromSeconds(30), CacheItemPriority.High, null);

                var enumerator1 = cache.GetEnumerator();
                while (enumerator1.MoveNext())
                {
                    Console.WriteLine($"key:{enumerator1.Key},value:{enumerator1.Value}");
                }
            }

执行结果:

Insert方法和Add方法新增缓存的比较:

1.Insert方法支持5种重载,使用灵活,而Add方法必须提供7个参数;

2.Add方法可以返回缓存项的数据对象,Insert 返回void;

3.添加重复缓存情况下(Key已存在),Insert会替换该项,而Add方法则不执行任何操作,并返回原来保存的object对象。

执行结果:

执行结果: 

 

查询缓存

使用Get()方法从 Cache 对象检索指定项。

实例四:根据指定key值查询

            {
                Cache cache = HttpRuntime.Cache;
                cache.Insert("BB", "我是被缓存的字符串信息");
                Console.WriteLine(cache.Get("BB").ToString());
            }

执行结果: 

实例五:使用GetEnumerator()方法遍历查询所有缓存信息

          {
                Cache cache = HttpRuntime.Cache;
                cache.Insert("AA", "我是被缓存的字符串信息AA");
                cache.Insert("BB", "我是被缓存的字符串信息BB");

                var enumerator1 = cache.GetEnumerator();
                while (enumerator1.MoveNext())
                {
                    Console.WriteLine($"key:{enumerator1.Key},value:{enumerator1.Value}");
                }
            }

执行结果: 

清除缓存

清除缓存有两种方法,一种是根据key值清除单个缓存信息,另一种是遍历后清除所有缓存信息。


实例六:通过Remove()方法,传入一个Key,清空一个。

          {
                Cache cache = HttpRuntime.Cache;
                cache.Insert("AA", "我是被缓存的字符串信息AA");
                cache.Insert("BB", "我是被缓存的字符串信息BB");

                Console.WriteLine("缓存清除前:");

                var enumerator1 = cache.GetEnumerator();
                while (enumerator1.MoveNext())
                {
                    Console.WriteLine($"key:{enumerator1.Key},value:{enumerator1.Value}");
                }

                cache.Remove("BB");//从cache中移除一项

                Console.WriteLine("缓存清除后:");

                enumerator1 = cache.GetEnumerator();
                while (enumerator1.MoveNext())
                {
                    Console.WriteLine($"key:{enumerator1.Key},value:{enumerator1.Value}");
                }
            }

执行结果: 

如果想清空所有缓存,由于Cache类没有提供RemoveAll()方法,所以可以通过遍历后逐个清除的方法删除所有缓存。GetEnumerator()方法用于获取所有缓存项。MoveNext()用于将位置移动到下一个缓存项。

实例七:通过遍历清除的方法,清空所有缓存。

         {
                Cache cache = HttpRuntime.Cache;
                cache.Insert("AA", "我是被缓存的字符串信息AA");
                cache.Insert("BB", "我是被缓存的字符串信息BB");

                Console.WriteLine("缓存清除前:");

                var enumerator1 = cache.GetEnumerator();
                while (enumerator1.MoveNext())
                {
                    Console.WriteLine($"key:{enumerator1.Key},value:{enumerator1.Value}");
                }

                enumerator1 = cache.GetEnumerator();
                while (enumerator1.MoveNext())
                {
                    cache.Remove(enumerator1.Key.ToString());
                }

                Console.WriteLine("缓存清除后:");
                enumerator1 = cache.GetEnumerator();
                while (enumerator1.MoveNext())
                {
                    Console.WriteLine($"key:{enumerator1.Key},value:{enumerator1.Value}");
                }
            }

执行结果: 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值