把对象缓存到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"]并不是新生成一个实例变量,只是返回了缓存对象的一个引用!!!

 

总结,不要把频繁修改的公共数据放入缓存,遵循最基本的缓存原则。

 

posted @ 2017-11-29 15:24  双健  阅读(315)  评论(0编辑  收藏  举报