前言

大家应该都知道,对于传统的.NET Framework项目而言,System.Runtime.Caching命名空间是常用的工具了,其中MemoryCache类则常被用于实现内存缓存。
.NET Core 2.0暂时还不支持System.Runtime.Caching dll,这也就意味着MemoryCache相关代码不再起作用了。
但是好消息是,我们可以使用.NET Core 2.0的新API实现内存缓存功能,简单修改代码,解决不兼容问题。下面话不多说了,来一起看看详细的介绍吧。
解决方案
1.将旧代码导入项目中,如下:
using System;
using System.Runtime.Caching;
namespace TestWebApp.Service
{
public class MemoryCacheService
{
static ObjectCache cache = MemoryCache.Default;
/// <summary>
/// 获取缓存值
/// </summary>
/// <param name="key"></param>
/// <returns></returns>
private object GetCacheValue(string key)
{
if (key != null && cache.Contains(key))
{
return cache[key];
}
return default(object);
}
/// <summary>
/// 添加缓存内容
/// </summary>
/// <param name="key"></param>
/// <param name="value"></param>
public static void SetChacheValue(string key, object value)
{
if (key != null)
{
CacheItemPolicy policy = new CacheItemPolicy
{
SlidingExpiration = TimeSpan.FromHours(1)
};
cache.Set(key, value, policy);
}
}
}
}
导入后你会发现VS会提示无法找到System.Runtime.Caching命名空间,原有的代码无法直接编译使用。
2.添加对Microsoft.Extensions.Caching.Memory命名空间的引用,它提供了.NET Core默认实现的MemoryCache类,以及全新的内存缓存API
using Microsoft.Extensions.Caching.Memory;
3.改写代码,使用新的API实现内存缓存功能
初始化缓存对象方式改写前:
static ObjectCache cache = MemoryCache.Default;
初始化缓存对象方式改写后:
static MemoryCache cache = new MemoryCache(new MemoryCacheOptions());
读取内存缓存值方式变化:
private object GetCacheValue(string key)
{
if (key != null && cache.Contains(key))
{
return cache[key];
}
return default(object);
}
改写后:
private object GetCacheValue(string key)
{
object val = null;
if (key != null && cache.TryGetValue(key, out val))
{
return val;
}
else
{
return default(object);
}
}
设定内存缓存内容方式变化:
public static void SetChacheValue(string key, object value)
{
if (key != null)
{
CacheItemPolicy policy = new CacheItemPolicy
{
SlidingExpiration = TimeSpan.FromHours(1)
};
cache.Set(key, value, policy);
}
}
修改后:
public static void SetChacheValue(string key, object value)
{
if (key != null)
{
cache.Set(key, value, new MemoryCacheEntryOptions
{
SlidingExpiration = TimeSpan.FromHours(1)
});
}
}
结论
在使用了Microsoft.Extensions.Caching.Memory下的新API改写了旧代码后,你会发现原有的各种内存缓存超时策略全都是有对应新API的,包括AbsoluteExpiration, SlidingExpiration等等。
所以我们还是可以很轻松的使用.NET Core新API简单改动下下就能重用现有绝大部分旧代码,将其迁移过来继续起作用。
迁移后的完整代码如下:
using Microsoft.Extensions.Caching.Memory;
using System;
namespace TestMemoryCacheWebApp.Services
{
public class MemoryCacheService
{
static MemoryCache cache = new MemoryCache(new MemoryCacheOptions());
/// <summary>
/// 获取缓存值
/// </summary>
/// <param name="key"></param>
/// <returns></returns>
private object GetCacheValue(string key)
{
object val = null;
if (key != null && cache.TryGetValue(key, out val))
{
return val;
}
else
{
return default(object);
}
}
/// <summary>
/// 添加缓存内容
/// </summary>
/// <param name="key"></param>
/// <param name="value"></param>
public static void SetChacheValue(string key, object value)
{
if (key != null)
{
cache.Set(key, value, new MemoryCacheEntryOptions
{
SlidingExpiration = TimeSpan.FromHours(1)
});
}
}
}
}
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。
# .net
# memorycache
# asp.net
# core
# 迁移
# .NET Core系列之MemoryCache 初识
# 你会发现
# 是有
# 就能
# 说了
# 还不
# 不多
# 将其
# 这也
# 写了
# 可以使用
# 这篇文章
# 谢谢大家
# 不兼容
# 使用了
# 就意味着
# 有疑问
# pre
# class
# brush
# span
相关文章:
如何在IIS中新建站点并解决端口绑定冲突?
单页制作网站有哪些,朋友给我发了一个单页网站,我应该怎么修改才能把他变成自己的呢,请求高手指点迷津?
,南京靠谱的征婚网站?
python的本地网站制作,如何创建本地站点?
非常酷的网站设计制作软件,酷培ai教育官方网站?
如何快速使用云服务器搭建个人网站?
青岛网站设计制作公司,查询青岛招聘信息的网站有哪些?
青岛网站建设如何选择本地服务器?
儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?
C++如何编写函数模板?(泛型编程入门)
如何快速上传自定义模板至建站之星?
如何选择高效响应式自助建站源码系统?
建站三合一如何选?哪家性价比更高?
如何快速搭建响应式可视化网站?
建站之星免费版是否永久可用?
网站制作说明怎么写,简述网页设计的流程并说明原因?
如何快速启动建站代理加盟业务?
洛阳网站制作公司有哪些,洛阳的招聘网站都有哪些?
高端建站三要素:定制模板、企业官网与响应式设计优化
弹幕视频网站制作教程下载,弹幕视频网站是什么意思?
Dapper的Execute方法的返回值是什么意思 Dapper Execute返回值详解
建站之星如何助力网站排名飙升?揭秘高效技巧
如何在景安云服务器上绑定域名并配置虚拟主机?
高端智能建站公司优选:品牌定制与SEO优化一站式服务
建站之家VIP精选网站模板与SEO优化教程整合指南
韩国服务器如何优化跨境访问实现高效连接?
个人网站制作流程图片大全,个人网站如何注销?
高防网站服务器:DDoS防御与BGP线路的AI智能防护方案
如何在服务器上配置二级域名建站?
建站主机选虚拟主机还是云服务器更好?
如何通过NAT技术实现内网高效建站?
如何高效完成自助建站业务培训?
南京做网站制作公司,南京哈发网络有限公司,公司怎么样,做网页美工DIV+CSS待遇怎么样?
建站之星收费标准详解:套餐费用及年费价格表一览
如何快速生成橙子建站落地页链接?
香港服务器建站指南:免备案优势与SEO优化技巧全解析
上海制作企业网站有哪些,上海有哪些网站可以让企业免费发布招聘信息?
江苏网站制作公司有哪些,江苏书法考级官方网站?
英语简历制作免费网站推荐,如何将简历翻译成英文?
网页制作模板网站推荐,网页设计海报之类的素材哪里好?
建站主机如何选?高性价比方案全解析
制作网站的软件免费下载,免费制作app哪个平台好?
已有域名如何免费搭建网站?
潮流网站制作头像软件下载,适合母子的网名有哪些?
php json中文编码为null的解决办法
如何快速搭建高效可靠的建站解决方案?
如何续费美橙建站之星域名及服务?
Python如何创建带属性的XML节点
官网自助建站系统:SEO优化+多语言支持,快速搭建专业网站
小捣蛋自助建站系统:数据分析与安全设置双核驱动网站优化
*请认真填写需求信息,我们会在24小时内与您取得联系。