.net中用了缓存,如何判断数据库的数据是否有变动,然后更新缓存
也就是第一次加载把数据库的数据存入缓存,当再次访问时,先判断数据库是否变动,如果没有,就直接使用缓存的数据,如果有变动,则更新缓存,那么这个判断数据库是否变动,应该怎么判...
也就是第一次加载把数据库的数据存入缓存,当再次访问时,先判断数据库是否变动,如果没有,就直接使用缓存的数据,如果有变动,则更新缓存,那么这个判断数据库是否变动,应该怎么判断?如果是遍历整个数据和缓存比较的话就没必要答了,那样还不如不做缓存,求高手,答的好加分
展开
6个回答
展开全部
你思路有问题。其实这个问题很好解决。就是一个缓存和数据库同步的问题。有两个方案供你参考,当然具体代码自己去写,我只提供你思路。
一、SQL SERVER2005以上版本的依赖式缓存,这个解决方案就是当数据库的数据有更新的时候会自动更新到缓存里。具体怎么配置,网上查找下,教程很多。
二、自己写数据库和纯如缓存的数据同步代码。当客户端把更新数据库的数据操作的时候同时更新缓存里的数据。毕竟写比读少了很多。但是在写缓存的时候,必须注意一个问题,那就是公共缓存对象并发控制的问题,别出现死答裤改锁,或者脏读,幻读这类的线程锁出错的问题。。。记住一定要在清判写缓存的时候锁住它。。。数据库其实在写的时候也是排它锁的。只不过被数据库系统自身处理掉了。你写数据库数据时感觉不到而已。
一、SQL SERVER2005以上版本的依赖式缓存,这个解决方案就是当数据库的数据有更新的时候会自动更新到缓存里。具体怎么配置,网上查找下,教程很多。
二、自己写数据库和纯如缓存的数据同步代码。当客户端把更新数据库的数据操作的时候同时更新缓存里的数据。毕竟写比读少了很多。但是在写缓存的时候,必须注意一个问题,那就是公共缓存对象并发控制的问题,别出现死答裤改锁,或者脏读,幻读这类的线程锁出错的问题。。。记住一定要在清判写缓存的时候锁住它。。。数据库其实在写的时候也是排它锁的。只不过被数据库系统自身处理掉了。你写数据库数据时感觉不到而已。
今至电子科技有限公司
2024-08-23 广告
2024-08-23 广告
数据库备份是确保数据安全与业务连续性的关键环节。我们上海今至电子科技有限公司高度重视数据保护,定期执行全面的数据库备份策略。这包括使用先进工具和技术,对关键业务数据进行自动化备份,并存储在安全可靠的外部存储介质或云端。通过定期验证备份的完整...
点击进入详情页
本回答由今至电子科技有限公司提供
展开全部
使用缓存场景,首先要保证的时候查询操作比增删改操作的频度要多手胡很多,然后必须保证任何数据库操作不尘贺能越过缓存,应该是先操作数据库,然后更新缓存,而且必须必须这些操作必须在事务以内进行,缓存只能作派薯派为读取的时候使用,不明白再追问吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
要亩启渗看你是哪种变更了,一般数据库有做过操作的话都会在相应的LOG文旁晌件迅脊(****.ldf)进行记录或更新,可以通过判断那个更新的时间:如果更新时间大于缓存中保存数据的时间,即重新读取。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
教你一个清除缓存的方法
第一步,建立一个文本文档
第二步,把下面代枝坦凯码复制进去
@echo off
echo 正猛唤在清除系统垃圾文件,请稍等......
del /f /s /q %systemdrive%\*.tmp
del /f /s /q %systemdrive%\*._mp
del /f /s /q %systemdrive%\*.log
del /f /s /q %systemdrive%\*.gid
del /f /s /q %systemdrive%\*.chk
del /f /s /q %systemdrive%\*.old
del /f /s /q %systemdrive%\recycled\*.*
del /f /s /q %windir%\*.bak
del /f /s /q %windir%\prefetch\*.*
rd /s /q %windir%\temp & md %windir%\temp
del /f /q %userprofile%\cookies\*.*
del /f /q %userprofile%\recent\*.*
del /f /s /q "%userprofile%\Local Settings\Temporary Internet Files\*.*"
del /f /s /q "%userprofile%\Local Settings\Temp\*.*"
del /f /s /q "%userprofile%\recent\*.*"信蔽
echo 清除系统LJ完成!
echo. & pause
第三步,另存为 命名为:清除系统LJ.bat
第四步,保存内型,所有文件
第五步,OK,保存!
记住另存为的地址,最好是另存为桌面,方便操作!
第一步,建立一个文本文档
第二步,把下面代枝坦凯码复制进去
@echo off
echo 正猛唤在清除系统垃圾文件,请稍等......
del /f /s /q %systemdrive%\*.tmp
del /f /s /q %systemdrive%\*._mp
del /f /s /q %systemdrive%\*.log
del /f /s /q %systemdrive%\*.gid
del /f /s /q %systemdrive%\*.chk
del /f /s /q %systemdrive%\*.old
del /f /s /q %systemdrive%\recycled\*.*
del /f /s /q %windir%\*.bak
del /f /s /q %windir%\prefetch\*.*
rd /s /q %windir%\temp & md %windir%\temp
del /f /q %userprofile%\cookies\*.*
del /f /q %userprofile%\recent\*.*
del /f /s /q "%userprofile%\Local Settings\Temporary Internet Files\*.*"
del /f /s /q "%userprofile%\Local Settings\Temp\*.*"
del /f /s /q "%userprofile%\recent\*.*"信蔽
echo 清除系统LJ完成!
echo. & pause
第三步,另存为 命名为:清除系统LJ.bat
第四步,保存内型,所有文件
第五步,OK,保存!
记住另存为的地址,最好是另存为桌面,方便操作!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
缓存一般都是这样使用的
一个是无限时间 适合很少更新,使用频繁
一个是有限时间 (比如1分钟后过期 当你再次访问的孙御大时候又创建缓存) 适合更新频繁 使用频繁
对于你说这个判断, 应该是系统的一个数据库通知 我没有用过不太清楚,但是理论上可以自己实现
变动 这个范围颇大 增加 修改 删除 的每个字段 都是变动 如果没有数据库的主动则竖通知 而用代码去监听 判断 确实更大的增加了 通信拆衡负担
如果加入 有时候只是判断是否 有新数据
可以 开启一个线程 每1秒去查看 数据最大编号是否变化 变化了 就更新一次缓存
一个是无限时间 适合很少更新,使用频繁
一个是有限时间 (比如1分钟后过期 当你再次访问的孙御大时候又创建缓存) 适合更新频繁 使用频繁
对于你说这个判断, 应该是系统的一个数据库通知 我没有用过不太清楚,但是理论上可以自己实现
变动 这个范围颇大 增加 修改 删除 的每个字段 都是变动 如果没有数据库的主动则竖通知 而用代码去监听 判断 确实更大的增加了 通信拆衡负担
如果加入 有时候只是判断是否 有新数据
可以 开启一个线程 每1秒去查看 数据最大编号是否变化 变化了 就更新一次缓存
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询