当前位置: 首页 > news >正文

外贸网站ui设计师与前端开发怎么对接

外贸网站,ui设计师与前端开发怎么对接,代做硬件毕业设计网站,金堂县城乡建设局网站内存缓存MemoryCache实现了ICache接口#xff0c;Redis同样实现了ICache接口#xff0c;两者在缓存操作上达到了高度抽象统一。应用设计时一律使用ICache接口#xff0c;开发环境装配为MemoryCache#xff0c;生产环境根据分布式需要可以装配为Redis。如果应用系统没有分布… 内存缓存MemoryCache实现了ICache接口Redis同样实现了ICache接口两者在缓存操作上达到了高度抽象统一。应用设计时一律使用ICache接口开发环境装配为MemoryCache生产环境根据分布式需要可以装配为Redis。如果应用系统没有分布式需求继续使用MemoryCache更好。超高性能MemoryCache核心是并行字典ConcurrentDictionary由于省去了序列化和网络通信使得它具有千万级超高性能普通台式机实测2.87亿tps。MemoryCache支持过期时间默认容量10万个未过期key超过该值后每60秒根据LRU清理溢出部分。常用于进程内千万级以下数据缓存场景。本机测试数据如下I9-10900KTest v1.0.0.1130 Build 2021-01-31 19:33:32 .NETCoreApp,Versionv5.0 Test Memory性能测试[顺序]批大小[0]逻辑处理器 20 个 测试 10,000,000 项 1 线程 赋值 耗时 934ms 速度 10,706,638 ops 读取 耗时 989ms 速度 10,111,223 ops 删除 耗时 310ms 速度 32,258,064 ops 累加 耗时 584ms 速度 17,123,287 ops 测试 20,000,000 项 2 线程 赋值 耗时 927ms 速度 21,574,973 ops 读取 耗时 1,024ms 速度 19,531,250 ops 删除 耗时 319ms 速度 62,695,924 ops 累加 耗时 594ms 速度 33,670,033 ops 测试 40,000,000 项 4 线程 赋值 耗时 1,011ms 速度 39,564,787 ops 读取 耗时 1,039ms 速度 38,498,556 ops 删除 耗时 1,636ms 速度 24,449,877 ops 累加 耗时 608ms 速度 65,789,473 ops 测试 80,000,000 项 8 线程 赋值 耗时 989ms 速度 80,889,787 ops 读取 耗时 1,227ms 速度 65,199,674 ops 删除 耗时 1,858ms 速度 43,057,050 ops 累加 耗时 675ms 速度 118,518,518 ops 测试 200,000,000 项 20 线程 赋值 耗时 1,644ms 速度 121,654,501 ops 读取 耗时 1,807ms 速度 110,680,686 ops 删除 耗时 2,936ms 速度 68,119,891 ops 累加 耗时 1,569ms 速度 127,469,725 ops 测试 200,000,000 项 64 线程 赋值 耗时 1,686ms 速度 118,623,962 ops 读取 耗时 1,877ms 速度 106,553,010 ops 删除 耗时 695ms 速度 287,769,784 ops 累加 耗时 1,585ms 速度 126,182,965 ops 总测试数据2,200,000,042ICache接口ICache是缓存抽象接口主要实现是MemoryCache和Redis/// summary缓存接口/summary public interface ICache {#region 属性/// summary名称/summaryString Name { get; }/// summary默认缓存时间。默认0秒表示不过期/summaryInt32 Expire { get; set; }/// summary获取和设置缓存永不过期/summary/// param namekey/param/// returns/returnsObject this[String key] { get; set; }/// summary缓存个数/summaryInt32 Count { get; }/// summary所有键/summaryICollectionString Keys { get; }#endregion#region 基础操作/// summary是否包含缓存项/summary/// param namekey/param/// returns/returnsBoolean ContainsKey(String key);/// summary设置缓存项/summary/// param namekey键/param/// param namevalue值/param/// param nameexpire过期时间秒。小于0时采用默认缓存时间seealso crefExpire//param/// returns/returnsBoolean SetT(String key, T value, Int32 expire -1);/// summary设置缓存项/summary/// param namekey键/param/// param namevalue值/param/// param nameexpire过期时间/param/// returns/returnsBoolean SetT(String key, T value, TimeSpan expire);/// summary获取缓存项/summary/// param namekey键/param/// returns/returnsT GetT(String key);/// summary批量移除缓存项/summary/// param namekeys键集合/param/// returns/returnsInt32 Remove(params String[] keys);/// summary清空所有缓存项/summaryvoid Clear();/// summary设置缓存项有效期/summary/// param namekey键/param/// param nameexpire过期时间/paramBoolean SetExpire(String key, TimeSpan expire);/// summary获取缓存项有效期/summary/// param namekey键/param/// returns/returnsTimeSpan GetExpire(String key);#endregion#region 集合操作/// summary批量获取缓存项/summary/// typeparam nameT/typeparam/// param namekeys/param/// returns/returnsIDictionaryString, T GetAllT(IEnumerableString keys);/// summary批量设置缓存项/summary/// typeparam nameT/typeparam/// param namevalues/param/// param nameexpire过期时间秒。小于0时采用默认缓存时间seealso crefExpire//paramvoid SetAllT(IDictionaryString, T values, Int32 expire -1);/// summary获取列表/summary/// typeparam nameT元素类型/typeparam/// param namekey键/param/// returns/returnsIListT GetListT(String key);/// summary获取哈希/summary/// typeparam nameT元素类型/typeparam/// param namekey键/param/// returns/returnsIDictionaryString, T GetDictionaryT(String key);/// summary获取队列/summary/// typeparam nameT元素类型/typeparam/// param namekey键/param/// returns/returnsIProducerConsumerT GetQueueT(String key);/// summary获取栈/summary/// typeparam nameT元素类型/typeparam/// param namekey键/param/// returns/returnsIProducerConsumerT GetStackT(String key);/// summary获取Set/summary/// typeparam nameT/typeparam/// param namekey/param/// returns/returnsICollectionT GetSetT(String key);#endregion#region 高级操作/// summary添加已存在时不更新/summary/// typeparam nameT值类型/typeparam/// param namekey键/param/// param namevalue值/param/// param nameexpire过期时间秒。小于0时采用默认缓存时间seealso crefCache.Expire//param/// returns/returnsBoolean AddT(String key, T value, Int32 expire -1);/// summary设置新值并获取旧值原子操作/summary/// remarks/// 常常配合Increment使用用于累加到一定数后重置归零又避免多线程冲突。/// /remarks/// typeparam nameT值类型/typeparam/// param namekey键/param/// param namevalue值/param/// returns/returnsT ReplaceT(String key, T value);/// summary尝试获取指定键返回是否包含值。有可能缓存项刚好是默认值或者只是反序列化失败解决缓存穿透问题/summary/// typeparam nameT值类型/typeparam/// param namekey键/param/// param namevalue值。即使有值也不一定能够返回可能缓存项刚好是默认值或者只是反序列化失败/param/// returns返回是否包含值即使反序列化失败/returnsBoolean TryGetValueT(String key, out T value);/// summary累加原子操作/summary/// param namekey键/param/// param namevalue变化量/param/// returns/returnsInt64 Increment(String key, Int64 value);/// summary累加原子操作/summary/// param namekey键/param/// param namevalue变化量/param/// returns/returnsDouble Increment(String key, Double value);/// summary递减原子操作/summary/// param namekey键/param/// param namevalue变化量/param/// returns/returnsInt64 Decrement(String key, Int64 value);/// summary递减原子操作/summary/// param namekey键/param/// param namevalue变化量/param/// returns/returnsDouble Decrement(String key, Double value);#endregion#region 事务/// summary提交变更。部分提供者需要刷盘/summary/// returns/returnsInt32 Commit();/// summary申请分布式锁/summary/// param namekey要锁定的key/param/// param namemsTimeout/param/// returns/returnsIDisposable AcquireLock(String key, Int32 msTimeout);#endregion#region 性能测试/// summary多线程性能测试/summary/// param namerand随机读写。顺序每个线程多次操作一个key随机每个线程每次操作不同key/param/// param namebatch批量操作。默认0不分批分批仅针对随机读写对顺序读写的单key操作没有意义/paramInt64 Bench(Boolean rand false, Int32 batch 0);#endregion }基本用法添删改查基本功能Get/Set/Count/ContainsKey/Removevar ic new MemoryCache(); var key Name; var key2 Company; ic.Set(key, 大石头); ic.Set(key2, 新生命); Assert.Equal(大石头, ic.GetString(key)); Assert.Equal(新生命, ic.GetString(key2)); var count ic.Count; Assert.True(count 2); // Keys var keys ic.Keys; Assert.True(keys.Contains(key)); // 过期时间 ic.SetExpire(key, TimeSpan.FromSeconds(1)); var ts ic.GetExpire(key); Assert.True(ts.TotalSeconds 0 ts.TotalSeconds 2, 过期时间); var rs ic.Remove(key2); Assert.Equal(1, rs); Assert.False(ic.ContainsKey(key2)); ic.Clear(); Assert.True(ic.Count 0);其中Set的第三个参数支持过期时间单位秒。集合操作SetAll/GetAll 是高吞吐的关键其中SetAll第二参数支持过期时间单位秒var ic new MemoryCache(); var dic new DictionaryString, String {[111] 123,[222] abc,[大石头] 学无先后达者为师 }; ic.SetAll(dic); var dic2 ic.GetAllString(dic.Keys); Assert.Equal(dic.Count, dic2.Count); foreach (var item in dic) {Assert.Equal(item.Value, dic2[item.Key]); }高级操作MemoryCache有几个非常好用的高级操作全部都是线程安全Add。添加已存在时不更新常用于锁争夺。例如可用于判断指定订单是否处理过加上过期时间就是我们经常说的多少小时去重。Replace。设置新值并获取旧值原子操作TryGetValue。尝试获取指定键返回是否包含值。有可能缓存项刚好是默认值Increment。累加Decrement。累减缓存过期策略MemoryCache内置LRU淘汰算法当缓存项超过最大值Capacity默认10万时剔除最久未使用的缓存项以避免内存占用过大。缓存项未达到最大值Capacity时MemoryCache定时检查并剔除过期项。
http://www.yutouwan.com/news/407500/

相关文章:

  • 长沙网站开发流程做网站如何推广买量
  • 专业网站发展趋势孝感建设公司网站
  • 低成本做网站 百知广东石油化工建设集团公司网站
  • 公司网站建设知识做网站如何备案
  • 赣州做网站的公司推广普通话奋进新征程宣传标语
  • 网站代码在哪里看php做网站页面在哪做
  • 网站流量攻击企业网站源码 html5+xml
  • 网站开发在线打开word推广文案大全
  • 建站公司用哪家服务器商标设计网免费
  • 如何用付费音乐做视频网站公司网站的设计与实现
  • 北京网站优化技术网上软文发稿平台
  • 毕业设计可以做哪些简单网站苏州万户网络科技有限公司
  • 南昌网站做鞍山最新消息
  • wordpress 站内信wordpress菜单字体大小
  • dw建网站开源crm系统
  • 辽宁省住房和城乡建设厅官方网站廊坊网站制作
  • 茶叶网站源码抖音app下载
  • 快站wordpress重庆网站建设 最便宜
  • vps怎么添加网站wordpress页面文本
  • 网站制作排名南昌定制网站公司
  • 网站拓扑图怎么做哪个网站可以做印章图案
  • 可以做视频的网站最专业微网站建设价格
  • 住房和城乡建设部网站预售证知名企业网站搭建品牌
  • 0505网页制作与网站建设建设网站北京市
  • 山西响应式网站建设推荐优秀购物网站
  • 企业网站的优化北京seo网络优化招聘网
  • 网站建设知识点怎么建设淘宝联盟的网站
  • 青岛做网站的有哪些南京网络推广
  • 旅游电子商务网站的建设包括哪些步骤?网站建设中有哪些常用技术?seo需求
  • 网站建设产品介绍wordpress调用子目录名称