双11狂欢大促

盲盒赢 定制羽绒服

开启惊喜盲盒,抽取你的专属好礼

— 惊喜奖品抢先看 —

.net通过cache.insert缓存后,后续的操作影响缓存的数据

没来 没来 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
从数据库将数据读取出来后,使用Cache.Insert将其缓存,然后对数据进行操作(比如筛选)并显示结果。请注意:是先缓存,再筛选。第二次读取时,不再读数据库,而是从缓存中返回数据。发现返回的数据是筛选后的数据。这不科学啊!!!求解,谢谢!

Public Shared Function GetStudents () As List (Of Student)
Dim key As String = "AllStudents"
If Not IsNothing (Cache(key)) Then
Return CType(Cache(key), List(Of Student))
End If
Dim lItems As List(Of Student)
'读取数据库,返回值给lItems,此处代码省略
Cache.Insert(key, lItems, Nothing, DateTime.Now.AddSeconds(600), TimeSpan.Zero)
Return lItems
End Function

Public Shared Sub GetStudentsInClass (classId As Integer)
'假设有50名学生,无论后面的筛选如何进行,下面这句的返回值应该是不变的
Dim lItems As List (Of Student)=GetStudents()
If classId > 0 Then
'此处进行筛选.按理不是直接操作缓存的数据,但问题是,这句结束后,缓存的数据就变成了筛选后的数据,而不是全部
lItems.RemoveAll (Function (vStudent) vStudent.ClassId <> classId)
End If
'后面展示结果
End Sub

...全文

相关推荐

页面缓存和清除页面缓存

asp.net,C#页面缓存和清除页面缓存

yym305890519

深入理解 ASP.NET Cache 运行机制与实战避坑指南

ASP.NET Cache 是 .NET Framework 时代基于 System.Web.Caching.Cache 的服务器内存缓存组件,虽被 ASP.NET Core 的 IMemoryCache 取代,但其自动过期、依赖联动、优先级淘汰和回调通知等核心设计思想仍深刻影响现代缓存架构。它并非简单字典,而是具备完整生命周期管理的可控缓存系统,适用于金融、政务等强一致性要求的存量系统优化。理解其与 AppDomain 绑定、内存压力感知、CacheExpiresThread 工作机制及 SqlCache

CodeCzar

提高MySQL导入速度技巧[代码]

本文详细介绍了多种提高MySQL执行SQL导入速度的方法。包括将数据目录放置在内存盘中、使用MyISAM引擎代替InnoDB、导入完成后才创建索引、使用多记录插入方式、分割大文件SQL等硬件和SQL层面的优化技巧。同时提供了性能调优建议,如调整缓冲池大小、优化事务提交频率、设置合适的日志文件大小等。这些方法能显著提升MySQL数据导入效率,适用于需要处理大量数据导入的场景。

devops8pract

ASP.NET中Cache的Insert参数说明

public void Insert( string key, object value, CacheDependency dependencies, DateTime absoluteExpiration, TimeSpan slidingExpiration );

loveselience

ASP.NET中使用Cache类来缓存页面的信息示例代码.zip

ASP.NET中使用Cache类来缓存页面的信息示例代码.;ASP.NET中使用Cache类来缓存页面的信息示例代码.

霸道流氓气质
评论 9
收藏 已收藏
分享
返回顶部
没来
.NET社区 62,274 成员 668,968 内容