整理下.net core cache的使用

Nuget安装   Microsoft.Extensions.Caching.Memory

using Microsoft.Extensions.Caching.Memory;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks; namespace WebApplication1
{
public class CacheHelperNetCore
{
public static IMemoryCache _memoryCache = new MemoryCache(new MemoryCacheOptions()); /// <summary>
/// 缓存绝对过期时间
/// </summary>
///<param name="key">Cache键值</param>
///<param name="value">给Cache[key]赋的值</param>
///<param name="minute">minute分钟后绝对过期</param>
public static void CacheInsertAddMinutes(string key, object value, int minute)
{
if (value == null) return;
_memoryCache.Set(key, value, new MemoryCacheEntryOptions()
.SetAbsoluteExpiration(TimeSpan.FromMinutes(minute)));
} /// <summary>
/// 缓存相对过期,最后一次访问后minute分钟后过期
/// </summary>
///<param name="key">Cache键值</param>
///<param name="value">给Cache[key]赋的值</param>
///<param name="minute">滑动过期分钟</param>
public static void CacheInsertFromMinutes(string key, object value, int minute)
{
if (value == null) return;
_memoryCache.Set(key, value, new MemoryCacheEntryOptions()
.SetSlidingExpiration(TimeSpan.FromMinutes(minute)));
} /// <summary>
///以key键值,把value赋给Cache[key].如果不主动清空,会一直保存在内存中.
/// </summary>
///<param name="key">Cache键值</param>
///<param name="value">给Cache[key]赋的值</param>
public static void CacheInsert(string key, object value)
{
_memoryCache.Set(key, value);
} /// <summary>
///清除Cache[key]的值
/// </summary>
///<param name="key"></param>
public static void CacheNull(string key)
{
_memoryCache.Remove(key);
} /// <summary>
///根据key值,返回Cache[key]的值
/// </summary>
///<param name="key"></param>
public static object CacheValue(string key)
{
return _memoryCache.Get(key);
} #region 缓存文档
//public IActionResult Index()
//{
// string cacheKey = "key";
// string result;
// if (!_memoryCache.TryGetValue(cacheKey, out result))
// {
// result = $"LineZero{DateTime.Now}";
// _memoryCache.Set(cacheKey, result);
// //设置相对过期时间2分钟
// _memoryCache.Set(cacheKey, result, new MemoryCacheEntryOptions()
// .SetSlidingExpiration(TimeSpan.FromMinutes(2)));
// //设置绝对过期时间2分钟
// _memoryCache.Set(cacheKey, result, new MemoryCacheEntryOptions()
// .SetAbsoluteExpiration(TimeSpan.FromMinutes(2)));
// //移除缓存
// _memoryCache.Remove(cacheKey);
// //缓存优先级 (程序压力大时,会根据优先级自动回收)
// _memoryCache.Set(cacheKey, result, new MemoryCacheEntryOptions()
// .SetPriority(CacheItemPriority.NeverRemove));
// //缓存回调 10秒过期会回调
// _memoryCache.Set(cacheKey, result, new MemoryCacheEntryOptions()
// .SetAbsoluteExpiration(TimeSpan.FromSeconds(10))
// .RegisterPostEvictionCallback((key, value, reason, substate) =>
// {
// Console.WriteLine($"键{key}值{value}改变,因为{reason}");
// }));
// //缓存回调 根据Token过期
// var cts = new CancellationTokenSource();
// _memoryCache.Set(cacheKey, result, new MemoryCacheEntryOptions()
// .AddExpirationToken(new CancellationChangeToken(cts.Token))
// .RegisterPostEvictionCallback((key, value, reason, substate) =>
// {
// Console.WriteLine($"键{key}值{value}改变,因为{reason}");
// }));
// cts.Cancel();
// }
// ViewBag.Cache = result;
// return View();
//}
#endregion
}
}

测试

        public IActionResult Index()
{
//写入
CacheHelperNetCore.CacheInsertAddMinutes("cache","",);
//读取
string value= CacheHelperNetCore.CacheValue("cache").ToString();
//清除
CacheHelperNetCore.CacheNull("cache");
string value1 = CacheHelperNetCore.CacheValue("cache").ToString();
return View();
}

.net core cache使用的更多相关文章

  1. java.lang.ClassCastException: com.sun.proxy.$Proxy32 cannot be cast to com.bkc.bpmp.core.cache.MemcachedManager

    java.lang.ClassCastException: com.sun.proxy.$Proxy32 cannot be cast to com.bkc.bpmp.core.cache.Memca ...

  2. 使用Django.core.cache操作Memcached导致性能不稳定的分析过程

    使用Django.core.cache操作Memcached导致性能不稳定的分析过程 最近测试一项目,用到了Nginx缓存服务,那可真是快啊!2Gb带宽都轻易耗尽. 不过Api接口无法简单使用Ngin ...

  3. ASP.NET CORE CACHE的使用(含MemoryCache,Redis)

    原文:ASP.NET CORE CACHE的使用(含MemoryCache,Redis) 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接 ...

  4. .NET Core Cache [MemoryCache]

    参考资料:long0801的博客.MemoryCache微软官方文档 添加对Microsoft.Extensions.Caching.Memory命名空间的引用,它提供了.NET Core默认实现的M ...

  5. Redis+Django(Session,Cookie、Cache)的用户系统

    转自 http://www.cnblogs.com/BeginMan/p/3890761.html 一.Django authentication django authentication 提供了一 ...

  6. Django学习之十二:Cache 缓存组件

    目录 Django Cache 缓存组件 缓存逻辑伪代码 配置缓存源 可配置参数说明 01. Django的默认缓存 02. 基于Redis的django-redis 03. 自定义cache 04. ...

  7. Django Cache缓存系统学习--数据库缓存

    Django是动态网站,用户每一次请求页面,服务器都会执行以下操作:数据库查询.渲染模版.执行业务逻辑,最后生成用户可查看的页面.当访问量比较大的时候,会消耗掉大量的资源,这时候就会考虑到缓存问题. ...

  8. Django’s cache framework

    小结: 1.缓存存储位置:数据库.文件系统.内存 2.通过缓存前缀实现跨服务器缓存 Django’s cache framework | Django documentation | Django h ...

  9. 使用Asp.Net Core MVC 开发项目实践[第五篇:缓存的使用]

    项目中我们常常会碰到一些数据,需要高频率用到但是又不会频繁变动的这类,我们就可以使用缓存把这些数据缓存起来(比如说本项目的导航数据,帖子频道数据). 我们项目中常用到有Asp.Net Core 本身提 ...

随机推荐

  1. Navicat Premium 12破解补丁

    Navicat Premium 12破解补丁是专门针对Navicat 12制作的一款破解工具,它可以帮助大家成功激活软件,激活后就可以免费使用软件所有功能了,小编亲测可用,有需要的可以下载试试. Na ...

  2. CentOS7下搭建基本LNMP环境,部署WordPress

    系统环境:CentOS Linux release 7.4.1708 (Core) 3.10.0-693.el7.x86_64 软件版本:nginx-1.12.2.tar.gz php 7.1.11 ...

  3. 子类覆写的变量被private隐藏,强制转换方式通过子类访问父类的被覆写变量:

    import static java.lang.System.*; public class SuperParent{ public static void main(String[] args){ ...

  4. Luogu 3959 [NOIP2017] 宝藏- 状压dp

    题解 真的想不到这题状压的做法...听说还有跑的飞快的模拟退火,要是现场做绝对滚粗QAQ. 不考虑深度,先预处理出 $pt_{i, S}$ 表示让一个不属于 集合 $S$ 的 点$i$ 与点集 $S$ ...

  5. Laravel 5.4+Vue.js 初体验:Laravel下配置运行Vue.js

    生产材料PHP:PHP 5.6+Laravel 5.4:https://github.com/laravel/laravel/releases/Composer:http://getcomposer. ...

  6. Jmeter获取不到cookie(备注:前面和后面的几个步骤都可以获取到cookie)

    今天的一个Jmeter脚本,有一个HTTP request始终获取不到cookie,但其前面和后面的几个步骤都可以获取到cookie,报文的请求服务器地址都是照着fiddler上面填的,没有问题,后来 ...

  7. APP自动化测试怎么测?

    一般来说工具还有技术都是千篇一律 测试测到最后还是业务能力...

  8. struts2 的 ServletActionContext 和 actionContext,服务器代码测试, redirect 、dispatcher、chain、redirectAction

    一.ServletActionContext  和 actionContext HttpServletRequest request=ServletActionContext.getRequest() ...

  9. 2、C++

    2.2定义变量 2.2.1命名规则 赋予变量的名称叫做标识符,或者更方便地称之为变量名.变量名可用字母(包括大小写),数字,以及下划线,其他字符不允许.以下划线或者字母开头.在Visual C++20 ...

  10. part1:6-Linux文本编辑器vi

    vi编辑器简介: vi是Linux系统的第一个全屏幕交互式编辑器:vim则是vi的升级版得到广大用户青睐. vim有三种工作模式:命令行模式.插入模式.底行模式 命令行模式常用功能键: yy:复制当前 ...