把对象缓存到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 @   双健  阅读(316)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类
点击右上角即可分享
微信分享提示