范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

C中缓存的使用

  简介
  缓存是指可以进行高速数据交换的存储器,它先于内存与CPU交换数据,因此速率很快。由于CPU从内存中读取数据的速度比从磁盘读取快几个数量级,并且存在内存中,减小了数据库访问的压力, 所以缓存几乎每个项目都会用到。一般常用的有MemoryCache、Redis 今天就给大家带来MemoryCache的使用介绍!   类别内存缓存过期时间有4种
  •永不过期•绝对过期时间•相对现在的过期时间•滑动过期时间
  当然也可以通过这三种过期时间衍生出 滑动窗口+绝对过期时间等等   官网地址
  我们也可以查看官方文档 来详细了解MemoryCache 这里就不做过多解读了使用
  回到刚才的问题 我们来介绍怎么设置过期时间!   永不过期
  就是在我程序发布后只要我们不去清理该缓存,该缓存会一直有效!    ///   /// 永不过期时间  ///  static void NeverExpire() {        _cache.Set("NeverExpire", "1"); }绝对过期时间
  用的是绝对时间点 可以理解成"截止日期"   static void AbsoluteExpiration()  {   DateTime time = new DateTime(2022, 04, 01, 23, 59, 59);    _cache.Set("AbsoluteExpiration", "20220401235959", time); }相对现在的过期时间
  相对现在的过期时间,就比如说我们设置缓存后的一分钟内有效,可以参考我们常见的 短信登录,后端随机生成一个验证码并存入redis,并且设置该key的过期时间,然后就是校验了,发送手机号码和验证码到后台, 从redis中取出对应的验证码就行校验,如果正确就把该验证码删掉,防止可以验证多次    static void ExpirationTimeRelativeToThePresent()     {           _cache.Set("AbsoluteExpiration", "123456", new TimeSpan(0, 0, 60));    }滑动过期时间
  缓存在设定的时间内没有被使用,则失效,使用后缓存的过期时间重新被刷新    static void SlidingExpirationTime()  {        _cache.Set("SlidingExpirationTime", "3", new MemoryCacheEntryOptions()        {               SlidingExpiration = new TimeSpan(0, 0, 2),                 AbsoluteExpiration = DateTimeOffset.Now.AddMilliseconds(1000)        });  }我们来看看官网的定义如图所示 !
  然后再来解释第二个参数MemoryCacheEntryOptions, 设置缓存项的绝对到期日期: 是当前缓存设置后的1000分钟。像我们经常玩的英雄联盟手游 ,我们一天不登陆,缓存的token失效, 就要重新登录获取token,我们每天都在玩触发了滑动过期时间,就不需要每次启动app时登录账号,但是 玩了一段时间后,发现我们还是需要重新登录我们的账号这个就是滑动过期时间中绝对过期时间!
  获取缓存值
  ConcurrentDictionary _entries:一个多线程安全的字典类型, 其实缓存的本质就是这个字典,将所有缓存都放入这个字典中,然后通过字典的key(字典的key其实和缓存实体CacheEntry的key值一样)获取CacheEntry实体(CacheEntry实体包含key和value, 也就是我们代码中设置的key和value)。    static void GetCache()  {   //方式一   _cache.Get("NeverExpire").ToString();   //方式二    string value = "";   if (!_cache.TryGetValue("NeverExpire", out value))    {   throw new Exception("不存在该缓存或者已过期");   } }清除缓存值  static void GetCache()    {     string value = "";      if (_cache.TryGetValue("NeverExpire", out value))      {       _cache.Remove("NeverExpire");      } }
  可能大家发现了,我们在移除时根本就不需要value值,再去使用临时变量,是不是有点痛苦!
  其实C#也考虑到了这个问题,那么c#从7.0开始支持弃元,弃元不只是书写和语义上的提升,它还可以减少内存分配。
  将上面代码进行一个简化     static void GetCache()    {      if (_cache.TryGetValue("NeverExpire", out _))       {           _cache.Remove("NeverExpire");      } }完整代码 class Program    {        public static IMemoryCache _cache = new MemoryCache(new MemoryCacheOptions());        static void Main(string[] args)        {            _cache.Get("NeverExpire").ToString();            string value = "";            if (!_cache.TryGetValue("NeverExpire", out value))            {                throw new Exception("不存在该缓存或者已过期");            }            if (_cache.TryGetValue("NeverExpire", out value))            {                _cache.Remove("NeverExpire");            }            if (_cache.TryGetValue("NeverExpire", out _))            {                _cache.Remove("NeverExpire");            }        }         ///         /// 永不过期时间        ///         static void NeverExpire()        {            _cache.Set("NeverExpire", "1");        }        ///         /// 绝对过期时间        ///         static void AbsoluteExpiration()        {            DateTime time = new DateTime(2022, 04, 01, 23, 59, 59);            _cache.Set("AbsoluteExpiration", "20220401235959", time);        }        ///         /// 相对现在的过期时间        ///         ///         static void ExpirationTimeRelativeToThePresent()        {            _cache.Set("AbsoluteExpiration", "123456", new TimeSpan(0, 0, 60));        }        ///         /// 滑动过期时间        ///         static void SlidingExpirationTime()        {            _cache.Set("key3", "3", new MemoryCacheEntryOptions()            {                SlidingExpiration = new TimeSpan(0, 0, 2),                AbsoluteExpiration = DateTimeOffset.Now.AddMilliseconds(1000)            });        }    }
  最后大家如果喜欢我的文章,还麻烦给个关注并点个赞, 希望net生态圈越来越好!
  原创 黑哥聊dotNet

博越全系热销中限时优惠高达1万元福田深圳深意店博越PRO现车限时优惠,可试乘试驾博越PRO现车在店,购车可享多重优惠方案零息方案首付30起2年0息首付45起享3年0息超长期限超低月供方案每天一杯奶茶钱博越PRO贷深圳深意吉利星越优惠高达0。75万元福田吉利深意店星越现车限时优惠,可试乘试驾星越现车在店,购车可享多重优惠方案零息方案30首付起2年0息50首付起3年0息超长期限超低月供方案首付50,每天40元星越带回家附加贷0首深圳深意吉利星越S购车送3000元大礼包星越S给你劲爽礼遇,8月31日前购车1焕新礼6000元置换补贴,2000元增购补贴,至高7000元置换补贴2金融礼至高金融贴息8000元3保养礼4。5年或12万公里免费保养4保值礼帝豪GLPHEV享受补贴还优惠1。3万元深圳深意吉利汽车全系底价促销,恭迎到店品鉴!近期购帝豪GLPHEV优惠政策如下1。现金优享现金优惠13000元,2。金融优享银行贴息4000元,3。置换优享置换补贴7000元,4。深圳深意吉利帝豪优惠高达0。5万元福田深圳深意店帝豪现车限时优惠,可试乘试驾帝豪现车在店,购车可享多重优惠方案零息方案首付20,2年0息首付30,享3年0息超长期限超低月供方案首付50,月供652元起附加贷0首付低小米11青春版和红米k40相比较,该如何选择?如果非要在这两款手机中选择一款手机进行购买,我个人会更加倾向于红米K40这款手机会更多一些,我给到的理由有以下几点,大家不妨参考一下。理由一先说一下大家比较关心的价格问题,在相同内荣耀50Pro和荣耀50相比较,该如何选择?仔细观察这两款手机的各方面配置情况来看,这荣耀50Pro款手机在拍照能力和充电速度方面是会比荣耀50有着略微的提升,是否值得这700大洋的差价呢?大家仁者见仁智者见智了。就小芳个人小米mix4和华为mate40Pro相比较,选择买哪款好?说句实话,小米mix4这款手机并不是非常完美,特别是在自拍能力方面还是存在着一定的缺陷的。不过如果非要在这两款手机中选择一款手机进行购买,小芳我个人还是会更加倾向于小米mix4这款荣耀50SE和荣耀X20同为天玑900该如何选择?如果非要在这两款手机中选择一款手机进行购买,小芳我个人会更加倾向于荣耀50SE这款手机会更多一些。我给到的理由有以下几点,大家不妨参考一下。理由一首先从机身的轻薄程度角度来说,荣耀一加8和红米note10pro相比较,该如何选择?按照目前的市场行情来看,这两款手机的差价有点大,小芳觉得大家完全没有必要进行比较,大家只要根据自身的预算多少进行选择就可以了。不过为了让大家更好的选择出适合自己的手机,小芳还是给大小米mix4和华为P50Pro相比较,买哪款性价比高?说句实话,这两款手机的整体各方面配置情况都是非常不错的,选择哪一款进行购买都是不会亏的。不过如果非要在这两款手机中选择一款手机进行购买,我个人是更加推荐大家购买华为P50Pro这款
美的空调广告说一晚只需一度电,是不是在欺诈消费者?大家好,我是装修第一站的院长,专业解决家居知识问题,装修水深,愿带你乘风破浪!可别说,除了美的外,现在很多品牌都宣传自家的空调是一晚低至一度电。这些空调都是变频空调,而且能效等级为华为与联想齐名,为何马云雷军都与柳传志合影,任正非却被冷落纵观改革开放40年来,如果说近20年是互联网时代,那前20年可谓是联想的时代,当年任正非看柳传志,如同马云雷军等一种互联网大佬仰望搜狐的张朝阳一样。翻开媒体相册也会发现,与柳传志合争夺年轻人,纯电小车全面开花,替代燃油车胜算几何?在燃油车领域,小型车市场已经极度萎缩,但是在电动车领域却枝繁叶茂。纯电动车的启动是从高端市场开始的,毕竟有钱人才有试错(或者说尝鲜)的资本,市场还是偏小众量级不够,难言替代。但是在麒麟芯片耗尽,5G被封,华为能否再战?莫慌,任正非早有两大准备相信大家都知道,无论是华为新发布的P50系列还是上线的多款旧终端,大多都是搭载高通骁龙芯片,仅有P50Pro采用麒麟9000芯片。而近日,又有媒体爆料,华为即将发布的nova9新机任正非搞研发烧掉的1000亿,啥时候还我?徐直军已经2000亿了在华为3位轮值董事长当中,徐直军属于最为调皮的一个,也是任正非最为器重的一个。当年华为研发失败,烧掉了1000亿。任正非在公司走廊里碰到徐直军便问他我的1000亿,你什么时候还给我2021下半年旗舰机怎么选?三款最佳机型推荐,适合才是最好的家里有矿在换新手机上预算不是问题的朋友来说,如何换一款时尚又拉风的手机呢?时尚,那就和今年的新机脱不开关系。拉风,那就和旗舰机脱不掉关联。今天给大家推荐三款又潮流又能打的新款旗舰机iPhone13权威消息确认9月15日发布,售价有太多惊喜根据多方权威消息称,苹果将在2021年9月15日发布全新一代iPhone13系列手机,根据目前消息来看,此次发布的iPhone13系列在售价方面有太多的惊喜。每一代iPhone发布1万块的手机选什么好?想获取更多新鲜实用的数码知识,点击右上角关注,参与微头条抽奖!我们来对比一下售价同为9999的MotoZ2018和8848M3尊享版,看看哪一款是你的菜。首先我们来看一下外观,88所有手机厂商都受影响?德国出狠招手机必须更新七年系统一般我们说某个手机厂商比较厚道,通常都是说这个厂商能给旗下的手机保持较长时间的系统更新。比如说苹果一直以来最低都是让自己旗下的手机可以保持五年的系统更新,现在基本上还延长到了六年。工信部公示329亿元新能源汽车补贴,这些车企将获补贴超10亿日前,工信部发布关于20162020年度新能源汽车推广应用补助资金清算审核初审情况的公示(以下简称公示)。公示显示,此次清算涉及20162020年完成销售上牌的109。74万辆新能搭载骁龙778G,三星防水新机M52已通过蓝牙认证要说新机曝光这件事情,入网认证蓝牙认证等必不可少的认证单位可以说是给我们带来了太多惊喜,而近日,就有一台三星的新机通过蓝牙认证的信息遭到了曝光,这或许也在暗示这款机型即将上市。事实