.net 之缓存

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using DBHelper;
using System.Data;
using MySql.Data.MySqlClient;
using System.Web.Caching;
 
public partial class 缓存过期 : System.Web.UI.Page
{
    static bool itemremove = false;
    static CacheItemRemovedReason reson;
    CacheItemRemovedCallback onremove = null;
 
    public void removeCallback(string k, object v, CacheItemRemovedReason r) {
 
        itemremove = true;
        reson = r;
    }
    protected void Page_Load(object sender, EventArgs e)
    {
        DataSet ds = (DataSet)Cache["students"];
        if (ds == null) {
            ds = GetStudent();
            onremove=new CacheItemRemovedCallback(this.removeCallback);
            CacheDependency cd=new CacheDependency(Server.MapPath("web.config"));
            Cache.Insert("students", ds, cd, Cache.NoAbsoluteExpiration, TimeSpan.FromHours(1), CacheItemPriority.High, onremove);
         
        }
        GridView1.DataSource = ds;
        GridView1.DataBind();
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        if (Cache["students"] != null) {
            Cache.Remove("students");
         
        }
        if (itemremove)
        {
 
            Label1.Text += "REmove触发";
            Label1.Text += "<br>";
            Label1.Text += reson.ToString();
        }
        else {
            Label1.Text += Server.HtmlEncode(Cache["students"] as string);
         
        }
    }
 
    public static void SetCache(string CacheKey, object objObject, System.Web.Caching.CacheDependency dep)
    {
        System.Web.Caching.Cache objCache = HttpRuntime.Cache;
        objCache.Insert(
            CacheKey,
            objObject,
            dep,
            System.Web.Caching.Cache.NoAbsoluteExpiration, //从不过期
            System.Web.Caching.Cache.NoSlidingExpiration, //禁用可调过期
            System.Web.Caching.CacheItemPriority.Default,
            null);
    }
 
    public static object GetCache(string CacheKey)
    {
        System.Web.Caching.Cache objCache = HttpRuntime.Cache;
        return objCache[CacheKey];
    }
 
    public DataSet GetStudent()
    {
        string sql = "select * from t_student";
        return SqlHelper.ExecuteDataSetText(sql);
    }
 
 
}

  

posted @   尘梦  阅读(163)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示
主题色彩