C# Cache缓存读取的设置方法
作者:每天进步多一点 发布时间:2022-11-18 05:33:53
标签:c#,缓存读取,Cache
先创建一个CacheHelper.cs类,代码如下:
using System;
using System.Web;
using System.Collections;
using System.Web.Caching;
public class CacheHelper
{
/// <summary>
/// 获取数据缓存
/// </summary>
/// <param name="cacheKey">键</param>
public static object GetCache(string cacheKey)
{
var objCache = HttpRuntime.Cache.Get(cacheKey);
return objCache;
}
/// <summary>
/// 设置数据缓存
/// </summary>
public static void SetCache(string cacheKey, object objObject)
{
var objCache = HttpRuntime.Cache;
objCache.Insert(cacheKey, objObject);
}
/// <summary>
/// 设置数据缓存
/// </summary>
public static void SetCache(string cacheKey, object objObject, int timeout = 7200)
{
try
{
if (objObject == null) return;
var objCache = HttpRuntime.Cache;
//相对过期
//objCache.Insert(cacheKey, objObject, null, DateTime.MaxValue, timeout, CacheItemPriority.NotRemovable, null);
//绝对过期时间
objCache.Insert(cacheKey, objObject, null, DateTime.Now.AddSeconds(timeout), TimeSpan.Zero, CacheItemPriority.High, null);
}
catch (Exception)
{
//throw;
}
}
/// <summary>
/// 移除指定数据缓存
/// </summary>
public static void RemoveAllCache(string cacheKey)
{
var cache = HttpRuntime.Cache;
cache.Remove(cacheKey);
}
/// <summary>
/// 移除全部缓存
/// </summary>
public static void RemoveAllCache()
{
var cache = HttpRuntime.Cache;
var cacheEnum = cache.GetEnumerator();
while (cacheEnum.MoveNext())
{
cache.Remove(cacheEnum.Key.ToString());
}
}
}
然后是调用:
public IEnumerable<CompanyModel> FindCompanys()
{
var cache = CacheHelper.GetCache("commonData_Company");//先读取
if (cache == null)//如果没有该缓存
{
var queryCompany = _base.CompanyModel();//从数据库取出
var enumerable = queryCompany.ToList();
CacheHelper.SetCache("commonData_Company", enumerable);//添加缓存
return enumerable;
}
var result = (List<CompanyModel>)cache;//有就直接返回该缓存
return result;
}
测试结果:
首次加载进来是为null,然后读取数据库,添加进缓存,当前返回前台的是从数据库中取出的数据。
刷新页面,发现缓存中已经有了读出的30条数据,
然后接下来走,返回缓存中的数据:
来源:https://www.cnblogs.com/lgx5/p/10785920.html


猜你喜欢
- 实际开发中订单往往都包含着订单状态,用户每进行一次操作都要切换对应的状态,而每次切换判断当前的状态是必须的,就不可避免的引入一系列判断语句,
- 本文实例讲述了C#实现的XML操作类。分享给大家供大家参考。具体如下:这里讲述了C#写的一个XML操作类,包括读取/插入/修改/删除。usi
- 不讲太多理论知识,官网都有,直接上手。1.测试表DROP TABLE IF EXISTS `user`;CREATE TABLE `user
- 结构是使用 struct 关键字定义的,例如:public struct PostalAddress{ // Fields, propert
- 为帮助开发者更方便、更安全地开发和调试基于微信的网页,微信推出了 web 开发者工具。它是一个桌面应用,通过模拟微信客户端的表现,使得开发者
- 简介平时包括之前的例子大量是基于TouchListener如:onClick这种一类的事件。今天给大家带来的是TouchListener与O
- 今天来学习总结一下,Android 后添加的一些新的组件和UI效果,Material Dialog,SwipeRefreshLayout,L
- 通过GitHub获取Eureka源码进入git bash命令行,自己找个目录,用来存放eureka源码,然后在目录里面,执行git clon
- 1. SpringBoot 配置文件1.1 配置文件的作用配置文件中配置了项目中重要的数据, 例如:数据库的连接信息 (用户名密码)项目的启
- 设计算法,计算两给定基因序列的相似程度。人类基因由4种核苷酸,分别用字母ACTG表示。要求编写一个程序,按以下规则比较两个基因序列并确定它们
- 介绍死信队列:没有被及时消费的消息存放的队列,消息没有被及时消费有以下几点原因:1.有消息被拒绝(basic.reject/ basic.n
- 下面是android SDK中API中的主要java包的功能简介: android.app :提供高层的程序模型、提供基本的运行环
- 一、简述:cmd中,执行java命令与javac命令的区别:javac:是编译命令,将java源文件编译成.class字节码文件。例如:ja
- 本文实例为大家分享了Java实现打字游戏的具体代码,供大家参考,具体内容如下新建一个项目,然后在src里面建一个MyGame.java文件,
- 引言在上一篇文章中# Android进阶宝典 -- KOOM线上APM监控最全剖析,我详细介绍了对于线上App内存监控的方案策略,其实除了内
- android多线程断点下载,带进度条和百分比显示,断点下载的临时数据保存到SD卡的文本文档中,建议可以保存到本地数据库中,这样可以提高存取
- 这周末体验了一下挺火的Docker技术,记录学习笔记。>Docker是干什么的Docker 是一个基于Linux容器(LXC-linu
- 本文实例讲述了Android EditText自定义样式的方法。分享给大家供大家参考,具体如下:1.去掉边框EditText的backgro
- 本文旨在用通俗的语言讲述枯燥的知识定时任务作为一种系统调度工具,在一些需要有定时作业的系统中应用广泛,如每逢某个时间点统计数据、在将来某个时
- import java.util.concurrent.Semaphore;public class ThreeThread {