把对象缓存到HttpRuntime.Cache里,你能安全地使用它吗?
每每勤勤恳恳,思来想去,趁还有激情,先把它记录下来。。。
定义一个Stu的类:
public class Stu
{
public string Name { get; set; }
public int Age { get; set; }
}
使用Stu类创建一个类实例变量stu,并把stu保存到缓存中
if ((Stu)HttpRuntime.Cache["myStu"] == null)
{
Stu stu= new Stu(){Name="yshuangj",Age=20};
HttpRuntime.Cache.Insert("myStu", stu);
}
现在,因业务逻辑的需要,获取缓存中的对象,并且对这个获取的对象进行修改,把Age改正确,由小鲜肉(20)改为老腊肉(30)
Stu temp = (Stu)HttpRuntime.Cache["myStu"];
temp.Age=30;
完了,这一个修改,直接修改了缓存中的stu,其它用户获取的值是更改后的值。 (Stu)HttpRuntime.Cache["myStu"]并不是新生成一个实例变量,只是返回了缓存对象的一个引用!!!
总结,不要把频繁修改的公共数据放入缓存,遵循最基本的缓存原则。