Asp.Netデータベースキャッシュ依存
4757 ワード
1.データベースのキャッシュ依存を有効にします(管理権限が必要な場合、またはアカウントとパスワードを管理する必要があります).
「Visual Studioコマンドプロンプト(2010(ここでは2010バージョンを使用していますが、VS 2005を使用できます)」でaspnet_を実行します.regsql
(MSSQL 2000の有効化方法は若干異なります)
aspnet_regsql.exe -S Excel-lang -U sa -P sa -ed -d TestDB -et -t UserInfo
または
aspnet_regsql -C "data source=Excel-lang;initial catalog=TestDB;user id=sa;password=sa"-ed -et -t "UserInfos"
注意:1.データベースサーバ名はExcel-lang 2.ユーザとパスワードはsa 3.データベースとテーブルは、それぞれTestDB UserInfoの実行が完了すると、データベースの下にテーブルAspNet_が生成されます.SqlCacheTablesForChangeNotificationとトリガ
2.データベースがリスニングサービスを有効にしているかどうかを確認する
Select DataBasePropertyex('TestDB','IsBrokerEnabled')
または
SELECT is_broker_enabled FROM sys.databases WHERE name = 'TestDB'
(1は有効、0は無効)
有効になっていない場合
使用文ALTER DATABASE TestDB SET ENABLE_BROKER;リスニングサービスの有効化
有効化に失敗したり、長い間実行していたりした場合は、文を実行します.
ALTER DATABASE TestDB SET NEW_BROKER WITH ROLLBACK IMMEDIATE;
ALTER DATABASE TestDB SET ENABLE_BROKER;
3.WebConfigの構成
ノードでの構成
ノードの下での構成
各ノードの属性はMSDN関連ドキュメントを参照してください
4.ページのロード時に次のコードを実行し、データベースからデータを取得してキャッシュに入れる
5.キャッシュが失効したことを明らかにする関数
6.DataCacheクラス
7.実行手順:データベースからデータを照会→キャッシュへの追加(失効ポリシーと失効コールバック関数の設定)→失効時→失効コールバック関数の実行
RemovedCallback→データを再照会してキャッシュに入れる.
キャッシュ依存Yes
「Visual Studioコマンドプロンプト(2010(ここでは2010バージョンを使用していますが、VS 2005を使用できます)」でaspnet_を実行します.regsql
(MSSQL 2000の有効化方法は若干異なります)
aspnet_regsql.exe -S Excel-lang -U sa -P sa -ed -d TestDB -et -t UserInfo
または
aspnet_regsql -C "data source=Excel-lang;initial catalog=TestDB;user id=sa;password=sa"-ed -et -t "UserInfos"
注意:1.データベースサーバ名はExcel-lang 2.ユーザとパスワードはsa 3.データベースとテーブルは、それぞれTestDB UserInfoの実行が完了すると、データベースの下にテーブルAspNet_が生成されます.SqlCacheTablesForChangeNotificationとトリガ
2.データベースがリスニングサービスを有効にしているかどうかを確認する
Select DataBasePropertyex('TestDB','IsBrokerEnabled')
または
SELECT is_broker_enabled FROM sys.databases WHERE name = 'TestDB'
(1は有効、0は無効)
有効になっていない場合
使用文ALTER DATABASE TestDB SET ENABLE_BROKER;リスニングサービスの有効化
有効化に失敗したり、長い間実行していたりした場合は、文を実行します.
ALTER DATABASE TestDB SET NEW_BROKER WITH ROLLBACK IMMEDIATE;
ALTER DATABASE TestDB SET ENABLE_BROKER;
3.WebConfigの構成
各ノードの属性はMSDN関連ドキュメントを参照してください
4.ページのロード時に次のコードを実行し、データベースからデータを取得してキャッシュに入れる
List<UserInfo> list = DataCache.GetCache("UserInfoCache") as List<UserInfo>;
if (list == null)
{
System.Web.Caching.SqlCacheDependency dep = new System.Web.Caching.SqlCacheDependency("TestDB", "UserInfo");
list = userManger.GetUserLoginList();
onMoveBack = new CacheItemRemovedCallback(RemovedCallback);
DataCache.SetCache("UserInfoCache", list, dep, onMoveBack);
}
5.キャッシュが失効したことを明らかにする関数
CacheItemRemovedCallback onMoveBack;
private void RemovedCallback(String k, Object v, CacheItemRemovedReason r)
{
onMoveBack = new CacheItemRemovedCallback(RemovedCallback);
System.Web.Caching.SqlCacheDependency dep = new System.Web.Caching.SqlCacheDependency("TestDB", "UserInfo");
List<UserInfo> list = userManger.GetUserLoginList();//
DataCache.SetCache("UserInfoCache", list, dep,onMoveBack);
}
6.DataCacheクラス
using System;
using System.Collections.Generic;
using System.Text;
using System.Web;
using System.Data;
using System.Data.SqlClient;
using System.Web.Caching;
public class DataCache
{
/// <summary>
/// CacheKey Cache
/// </summary>
/// <param name="CacheKey"></param>
/// <returns></returns>
public static object GetCache(string CacheKey)
{
System.Web.Caching.Cache objCache = HttpRuntime.Cache;
return objCache[CacheKey];
}
/// <summary>
/// CacheKey Cache
/// </summary>
/// <param name="CacheKey"></param>
/// <param name="objObject"></param>
public static void SetCache(string CacheKey, object objObject)
{
System.Web.Caching.Cache objCache = HttpRuntime.Cache;
objCache.Insert(CacheKey, objObject);
}
/// <summary>
///
/// </summary>
/// <param name="CacheKey"> </param>
/// <param name="objObject"> </param>
/// <param name="dep"> </param>
/// <param name="onMoveCallBack"> </param>
public static void SetCache(string CacheKey, object objObject, System.Web.Caching.CacheDependency dep, CacheItemRemovedCallback onMoveCallBack)
{
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,
onMoveCallBack
);
}
}
7.実行手順:データベースからデータを照会→キャッシュへの追加(失効ポリシーと失効コールバック関数の設定)→失効時→失効コールバック関数の実行
RemovedCallback→データを再照会してキャッシュに入れる.
キャッシュ依存Yes