这几天做物联网,之前都是将内容放到内存中进行处理,但是有个数据不更新的问题,现在使用数据库缓存依赖进行完美解决。
首先展示下缓存类:
//使用缓存依赖,需要在app.config中进行添加信息
//需要使用命令,进行打开数据库表缓存
//
//C:\Windows\Microsoft.NET\Framework\v4.0.30319>aspnet_regsql -C "data source=.;initial catalog=数据库名称;user id=sa;password=sa" -ed -et -t "数据库中的某一个表"
public static object GetCache(string CacheKey)
{
System.Web.Caching.Cache objCache = HttpRuntime.Cache;
return objCache[CacheKey];
}
/// <summary>
/// 设置以缓存依赖的方式缓存数据
/// </summary>
/// <param name="CacheKey">索引键值</param>
/// <param name="objObject">缓存对象</param>
/// <param name="cacheDepen">依赖对象</param>
public static void SetCache(string CacheKey, object objObject, System.Web.Caching.CacheDependency dep)
{
System.Web.Caching.Cache objCache = HttpRuntime.Cache;
objCache.Insert(
CacheKey,
objObject,
dep,
System.Web.Caching.Cache.NoAbsoluteExpiration, //从不过期
System.Web.Caching.Cache.NoSlidingExpiration, //禁用可调过期
System.Web.Caching.CacheItemPriority.Default,
null);
}
这是简单的两个方法
下面说下使用
string UserMachine_CacheKey = "UserMachine";
object obj2 = CacheHelper.GetCache(UserMachine_CacheKey);
if (obj2 == null)
{
obj2 = CacheHelper.GetMachineData();
if (obj2 != null)
{
System.Web.Caching.CacheDependency dep = new System.Web.Caching.SqlCacheDependency("数据库名称", "数据表名称");
CacheHelper.SetCache(UserMachine_CacheKey, obj2, dep);
}
}
var MachineDataSet = (DataSet)obj2;
return MachineDataSet.Tables[0];
这样就可以得到数据了
GetMachineData()这个方法就是直接从数据库中获取数据
接下来就是数据库的设置了 ,如果是Winform程序,需要引用System.Web,然后再app.config或者web.config中加入这样的内容
<system.web>
<caching>
<sqlCacheDependency enabled="true" pollTime="6000">
<databases>
<add name="数据库名称" connectionStringName="strconnection"/>
</databases>
</sqlCacheDependency>
</caching>
</system.web>
<connectionStrings>
<add name="strconnection" connectionString="Data Source = .;Initial Catalog = 数据库名称;User Id = sa;Password = sa;"/>
</connectionStrings>
接下来就是打开cmd,进行操作命令了
找到电脑中的这个文件夹中
“C:\Windows\Microsoft.NET\Framework\v4.0.30319”,然后使用cmd进入这个文件夹,然后打入这样的命令
aspnet_regsql -C "data source=.;initial catalog=数据库名称;user id=sa;password=sa" -ed -et -t "数据库表名"
如果成功就是这样
这样就可以了。
以后使用缓存就会和数据库同步了。。。