C# Cache 设置缓存时间过期,自动清除
1、Cache有3种过期策略。第一种:没有时间限制。
Cache.Add(key,value)或者Cache.Insert(key,value);
不加任何时间限制,增加的数据是不会过期的。
Add方法重复键值是不会在增加的,Insert数据是会覆盖重复的键值。
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);
}
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);
}
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));
}
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>