广

ASP编程

  • IOS开发
  • android开发
  • PHP编程
  • JavaScript
  • ASP.NET
  • ASP编程
  • JSP编程
  • Java编程
  • 易语言
  • Ruby编程
  • Perl编程
  • AJAX
  • 正则表达式
  • C语言
  • 编程开发

    数据库缓存依赖(SqlCacheDependency)的实现

    2018-04-06 10:41:58 次阅读 稿源:互联网
    零七广告
    我们知道,在数据库中查询数据是十分耗费性能的事情,所以说对数据库的缓存变的非常重要。然而出现了问题,缓存的是老的数据,而数据库的内容却是实时更新的。造成了数据的不一致。为了解决这种问题,.net给我们提供了一种很好的解决方案,就是数据库缓存依赖(SqlCacheDependency)。

    要实现数据库缓存依赖的步骤如下

    1.修改WebConfig文件,启用SqlCacheDependency

    <configuration>

    <appsetting/>

    <connectionString>

    <Add name="strCon" ConnecationString="data source=(local);database=NorthWind;uid=sa;pwd=sa" ProviderName="System.Data.SqlClient">

    </connectionString>

    <system.web>

    <caching>

    <sqlCacheDependency enabled="true" polltime="5000">

    <database>

    <add name="NorthWind" connectionStringName="strCon">

    </database>

    </sqlCacheDependency>

    </caching>

    </system.web>

    </configuration>

    2.执行命令,启用数据库依赖

    aspnet_regsql -C "data source=(local);database=NorthWind; uid=sa;pwd=sa" -ed -et -t “tb_Product”

    执行完毕后,数据库中自动成一个缓存表:AspNet_SqlCacheTablesForChangeNotification。

    3.在代码中启用缓存

    //获取缓存

    using System.Web.Caching;

    using System.Data.SqlClient;

    Public static object GetCache(string cacheKey)

    {

    Cache objCache=HttpRuntime.Cache;

    return objCache[cacheKey];

    }

    //以缓存依赖的方式缓存数据

    Public static void SetCache(string cacheKey,object objSubject,CacheDependency dep)

    {

    Cache objCache=HttpRuntime.Cache;

    objCache.insert(cacheKey,objSubject,dep,Cache.NoAbsoluteExpiration,Cache.NoSlidingExpirtion,CacheItemPriority.Default,null);

    }

    //查询数据

    private DataSet GetData()

    {

    string strCon=WebConfigurationManager.ConnectionString["strCon"].ConnectionString;

    String strSql="select * from tb_Protucts";

    Sqlconnection con=new Sqlconnection(strCon);

    DataSet myData=new DataSet();

    SqlDataAdapter myAdapter=new SqlDataAdapter(strSql,strCon);

    con.Open();

    myAdapter.Fill(myData,"tb_Product");

    con.Close();

    return myData;

    }

    Protected void Page_Load(object sender,EventHandler e)

    {

    string cacheKey="cacheTest";

    object objSubject=GetCache[cacheKey];

    if(objSubject==null)

    {

    objSubject=GetData();

    SqlCacheDependency dep=new SqlCacheDependency("NorthWind","tb_Produce");

    SetCache(cacheKey,objSubject,dep);

    }

    GridView1.DataSource=(DataSet)objSubject;

    GridView1.DataBind();

    }

    其中SqlCacheDependency的构造方法如下

    public SqlCacheDependency(string DatabaseEntryName,string tableName)

    {}

    DatabaseEntryName:webConfig中的定义的数据库名

    TableName:相关联的表名

    零七网部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与零七网进行文章共享合作。

    零七广告
    零七广告
    零七广告
    零七广告