C# Cache 设置缓存时间过期,自动清除

2025-10-23 10:07:27

1、Cache有3种过期策略。第一种:没有时间限制。

Cache.Add(key,value)或者Cache.Insert(key,value);

不加任何时间限制,增加的数据是不会过期的。

Add方法重复键值是不会在增加的,Insert数据是会覆盖重复的键值。

C# Cache 设置缓存时间过期,自动清除

2、第一种情况,间隔后台刷新多次,仍能取到值。C#aspx的后台Pageload方法

给Repeater控件赋值DataTable。DataTable的获取从Cache里面。

3、if (Session["wwewew"] == null || Session["wwewew"].ToString() == "")

        {

            Session["wwewew"] = wwewe;

            if (!string.IsNullOrEmpty(wwewe) && wwewe == "1")

            {

                DataTable ds = new DataTable();

                DataRow deru = ds.NewRow();

                DataColumn qwkop = new DataColumn();

                qwkop.ColumnName = "1";

                ds.Columns.Add(qwkop);

                DataColumn qwkopq = new DataColumn();

                qwkopq.ColumnName = "2";

                ds.Columns.Add(qwkopq);

                DataColumn qwkopr = new DataColumn();

                qwkopr.ColumnName = "3";

                ds.Columns.Add(qwkopr);

                deru[0] = "1";

                deru[1] = "2";

                deru[2] = "3";

                ds.Rows.Add(deru);

                Cache.Insert("Data", ds);

            }

C# Cache 设置缓存时间过期,自动清除

4、第二种情况,隔断时间过期,过10秒后再刷新页面就取不到值了。

            else if (!string.IsNullOrEmpty(wwewe) && wwewe == "2")

            {

                DataTable ds = new DataTable();

                DataRow deru = ds.NewRow();

                DataColumn qwkop = new DataColumn();

                qwkop.ColumnName = "1";

                ds.Columns.Add(qwkop);

                DataColumn qwkopq = new DataColumn();

                qwkopq.ColumnName = "2";

                ds.Columns.Add(qwkopq);

                DataColumn qwkopr = new DataColumn();

                qwkopr.ColumnName = "3";

                ds.Columns.Add(qwkopr);

                deru[0] = "33";

                deru[1] = "45";

                deru[2] = "66";

                ds.Rows.Add(deru);

                Cache.Insert("Data", ds, null, DateTime.Now.AddSeconds(10), TimeSpan.Zero);

            }

C# Cache 设置缓存时间过期,自动清除

C# Cache 设置缓存时间过期,自动清除

5、第三种情况,连续过10秒没有访问这个键值就过期,后台取不到值了。

            else if (!string.IsNullOrEmpty(wwewe) && wwewe == "3")

            {

                DataTable ds = new DataTable();

                DataRow deru = ds.NewRow();

                DataColumn qwkop = new DataColumn();

                qwkop.ColumnName = "1";

                ds.Columns.Add(qwkop);

                DataColumn qwkopq = new DataColumn();

                qwkopq.ColumnName = "2";

                ds.Columns.Add(qwkopq);

                DataColumn qwkopr = new DataColumn();

                qwkopr.ColumnName = "3";

                ds.Columns.Add(qwkopr);

                deru[0] = "7";

                deru[1] = "8";

                deru[2] = "9";

                ds.Rows.Add(deru);

                Cache.Insert("Data", ds, null, DateTime.MaxValue, TimeSpan.FromSeconds(10));

            }

C# Cache 设置缓存时间过期,自动清除

C# Cache 设置缓存时间过期,自动清除

6、前端页面:

<body>

    <form id="form2" runat="server">

        <asp:TextBox ID="TextBox1" runat="server" TextMode="MultiLine"  style="height:300px;width:500px;"></asp:TextBox>

    </form>

    <form id="form1" action="Default.aspx">

        <input type="text" value="" id="qwqwqw" name="qwqwqw" />

        <input type="submit" value="永不过期" />

        <input type="submit" value="绝对时间过期" />

        <input type="submit" value="变化时间过期" />

    </form>

    <div style="margin-top:30px;">输入框中后端会根据数值判断:1-永不过期;2-绝对时间过期;3-变化时间过期</div>

    <table>

        <asp:Repeater ID="Repeater1" runat="server">

            <ItemTemplate>

                <tr>

                    <td><%#Eval("1")%></td>

                    <td><%#Eval("2")%></td>

                    <td><%#Eval("3")%></td>

                </tr>

            </ItemTemplate>

        </asp:Repeater>

    </table>

</body>

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢