利用MSSQL对不经常使用的表进行依赖缓存
2013-12-10 09:56
246 查看
缓存是我们开发应用系统的一把利刃,如果用的不好,会导致数据不准确等一系列问题。
所以在如何选择缓存的时候,我们要慎之又慎。所以在对系统中一些 不经常变化的表,我们可以采用SqlCacheDenpendency进行帮我进行缓存
只要在数据库中的数据不更新,那么数据永远在缓存。
但要实现sql 依赖缓存,需要数据库服务器支持。所以我们前期得进行数据库配置:
1.启用 Service Broker。可以通过下边语句查看是否启用。
切记,如果半天不执行,立马重启数据库服务器,重启好 立马执行就可以了。
2. 给您的数据库访问帐号授予权限(对不起,不支持sa)
好了,配置数据库就这么多动作。
剩下就是贴代码了:
1.webconfig 配置:
2.程序执行代码:
好了,到此为止,大家可以测试下,删除数据会不会有变化
所以在如何选择缓存的时候,我们要慎之又慎。所以在对系统中一些 不经常变化的表,我们可以采用SqlCacheDenpendency进行帮我进行缓存
只要在数据库中的数据不更新,那么数据永远在缓存。
但要实现sql 依赖缓存,需要数据库服务器支持。所以我们前期得进行数据库配置:
1.启用 Service Broker。可以通过下边语句查看是否启用。
select DatabasePropertyex('Northwind','IsBrokerEnabled') --返回1表示true,返加0表示false
use master Alter Database Northwind set enable_broker
切记,如果半天不执行,立马重启数据库服务器,重启好 立马执行就可以了。
2. 给您的数据库访问帐号授予权限(对不起,不支持sa)
GRANT SUBSCRIBE QUERY NOTIFICATIONS TO User(自己建立的帐号)
好了,配置数据库就这么多动作。
剩下就是贴代码了:
1.webconfig 配置:
<?xml version="1.0" encoding="utf-8" ?> <configuration> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> </startup> <system.web> <caching> <sqlCacheDependency enabled="true" pollTime="10000"> <databases> <add name="Northwind" connectionStringName="SQL2000"/> </databases> </sqlCacheDependency> </caching> </system.web> </configuration>
2.程序执行代码:
namespace StudySqlDenpendency { internal class Program { private static void Main(string[] args) { // SleepGetCache(); //SqlDependency.Stop("server=10.1.0.103;database=DHCustomerPotal;uid=customerUser;pwd=123"); //开启依赖缓存 Console.ReadKey(); } public static object GetCache(string KeyName) { string CacheKey = KeyName; var objCache = HttpRuntime.Cache; var objModel = objCache[CacheKey]; if (objModel != null) { Console.WriteLine("已经取到缓存!"); return objModel; } else { SqlDependency.Start("server=10.1.0.103;database=DHCustomerPotal;uid=customerUser;pwd=123"); //开启依赖缓存 using (SqlConnection cn = new SqlConnection("server=10.1.0.103;database=DHCustomerPotal;uid=customerUser;pwd=123")) { using (SqlCommand cmd = cn.CreateCommand()) { cn.Open(); cmd.CommandText = "select fid from dbo.T_PDM_ProductInfo"; SqlCacheDependency dep = new SqlCacheDependency(cmd); DataTable dt = new DataTable(); using (SqlDataAdapter adapter = new SqlDataAdapter()) //查询数据 { adapter.SelectCommand = cmd; adapter.Fill(dt); } //SqlDependency dep=new SqlDependency(cmd); objCache.Insert(CacheKey, dt, dep); objModel = objCache[CacheKey]; return objModel; } } } } public static void start() { Stopwatch st = new Stopwatch(); st.Start(); var dts = GetCache("testKeyId") as DataTable; if (dts != null) { Console.WriteLine("读取的数据总数为:{0}", dts.Rows.Count.ToString()); } st.Stop(); Console.WriteLine("依赖缓存时间秒:{0}", st.ElapsedMilliseconds.ToString()); } public static void SleepGetCache() { while (true) { ThreadStart threadStart = new ThreadStart(start); Thread myThread = new Thread(threadStart); myThread.Start(); Thread.Sleep(3000); //10秒一读取 } } } }
好了,到此为止,大家可以测试下,删除数据会不会有变化
相关文章推荐
- 使用SQLServer2008R2进行缓存依赖通知需要注意事项
- 使用memcached进行内存缓存
- 使用MySql ODBC进行MYsql和MSsql的数据转换
- web项目使用ehcache-web进行页面缓存或者文件压缩
- 在ASP.NET MVC中使用Unity进行依赖注入的三种方式
- Symbian编程总结-图形图像篇-使用双缓存进行图形的绘制
- 利用Proxy Cache使Nginx对静态资源进行缓存
- 使用Spring.Net对Web页面进行依赖注入
- 在QTP中,经常会遇到需要写入外部文件的地方,比如写Log什么的,这时,可以使用下面代码进行写Txt操作。
- 如何利用客户端缓存对网站进行优化?
- 如何利用客户端缓存对网站进行优化?
- 使用base64对图片的二进制进行编码,使其可以利用ajax进行显示
- SSH进阶(7)——Hibernate使用EHCache进行二级缓存
- ACE使用经验-利用ACE日志策略进行日志运行时配置管理
- 如何利用客户端缓存对网站进行优化? If-Modified-Since & If-None-Match
- 高效使用使用SQL缓存依赖
- 在mvc中使用Ninject进行依赖注入
- 如何利用客户端缓存对网站进行优化? If-Modified-Since & If-None-Match
- 利用Gate one和ngrok把内网中kali映射到公网,方便随时随地去使用kali进行操作
- 使用LruCache进行图片缓存