1
using
System;
2
using
System.Collections.Generic;
3
using
System.Text;
4
using
Microsoft.Practices.EnterpriseLibrary.Caching;
5
using
Microsoft.Practices.EnterpriseLibrary.Caching.Expirations;
6
using
Secom.Framework.Common.Util;
7
using
System.Configuration;
8
9
namespace
Secom.Framework.Common
10
{
11
///
<summary>
12
///
缓存处理类
13
///
</summary>
14
public
class
CacheManager : ICacheManager
15
{
16
#region
常量定义
17
///
<summary>
默认缓存策略 60秒
</summary>
18
public
const
string
DefalutCacheManager
=
"
Default Cache Manager
"
;
19
///
<summary>
基础数据缓存策略 120秒
</summary>
20
public
const
string
BaseDataCacheManager
=
"
Base Data Cache Manager
"
;
21
///
<summary>
临时数据缓存策略 30秒
</summary>
22
public
const
string
TempDataCacheManager
=
"
Temp Data Cache Manager
"
;
23
///
<summary>
业务数据缓存策略 80秒
</summary>
24
public
const
string
BusinessDataCacheManager
=
"
Business Data Cache Manager
"
;
25
#endregion
26
27
#region
构造函数
28
///
<summary>
29
///
实例化
<see cref="T:CacheManager"/>
类.
30
///
</summary>
31
protected
CacheManager()
32
{
33
}
34
#endregion
35
36
#region
ICacheManager 实例
37
///
<summary></summary>
38
public
static
ICacheManager Instance
=
new
CacheManager();
39
40
#endregion
41
42
#region
实现ICacheManager
43
///
<summary>
44
///
往缓存写数据
45
///
</summary>
46
///
<param name="key">
缓存的键值
</param>
47
///
<param name="obj">
要放入缓存的数据
</param>
48
public
void
Add(
string
key, Object obj)
49
{
50
Microsoft.Practices.EnterpriseLibrary.Caching.CacheManager
51
cacheManager
=
CacheFactory.GetCacheManager();
52
53
cacheManager.Add(key, obj);
54
}
55
56
///
<summary>
57
///
往缓存写数据
58
///
</summary>
59
///
<param name="cacheManagerName">
cache manager 的名字
</param>
60
///
<param name="key">
缓存的键值
</param>
61
///
<param name="obj">
要放入缓存的数据
</param>
62
public
void
Add(
string
cacheManagerName,
string
key, Object obj)
63
{
64
Microsoft.Practices.EnterpriseLibrary.Caching.CacheManager
65
cacheManager
=
CacheFactory.GetCacheManager(cacheManagerName);
66
67
cacheManager.Add(key, obj);
68
}
69
70
///
<summary>
71
///
往缓存写数据
72
///
</summary>
73
///
<param name="cacheManagerName">
cache manager 的名字
</param>
74
///
<param name="key">
缓存的键值
</param>
75
///
<param name="obj">
要放入缓存的数据
</param>
76
///
<param name="duration">
缓存有效时间
</param>
77
public
void
Add(
string
cacheManagerName,
string
key, Object obj,
int
duration)
78
{
79
Microsoft.Practices.EnterpriseLibrary.Caching.CacheManager
80
cacheManager
=
CacheFactory.GetCacheManager();
81
82
cacheManager.Add(
83
key, obj, CacheItemPriority.Normal,
null
,
84
new
SlidingTime(TimeSpan.FromSeconds(
600
)));
85
//
cacheManager.Add(
86
//
key, obj, CacheItemPriority.Normal, null,
87
//
new SlidingTime(TimeSpan.FromSeconds(ParamUtil.getint(
88
//
ConfigurationManager.AppSettings[BusinessDataCacheManager]))));
89
}
90
91
92
///
<summary>
93
///
往缓存写数据
94
///
</summary>
95
///
<param name="cacheManagerName">
cache manager 的名字
</param>
96
///
<param name="key">
缓存的键值
</param>
97
///
<param name="obj">
要放入缓存的数据
</param>
98
///
<param name="file">
依赖的文件,当文件被修改后缓存自动失效
</param>
99
public
void
Add(
string
cacheManagerName,
string
key, Object obj,
string
file)
100
{
101
Microsoft.Practices.EnterpriseLibrary.Caching.CacheManager
102
cacheManager
=
CacheFactory.GetCacheManager(cacheManagerName);
103
104
cacheManager.Add(key, obj, CacheItemPriority.Normal,
null
,
new
FileDependency(file));
105
}
106
107
///
<summary>
108
///
从缓存移除数据
109
///
</summary>
110
///
<param name="key">
缓存的键值
</param>
111
public
void
Remove(
string
key)
112
{
113
Microsoft.Practices.EnterpriseLibrary.Caching.CacheManager
114
cacheManager
=
CacheFactory.GetCacheManager( );
115
cacheManager.Remove(key);
116
}
117
118
///
<summary>
119
///
从缓存移除数据
120
///
</summary>
121
///
<param name="cacheManagerName">
cache manager 的名字
</param>
122
///
<param name="key">
缓存的键值
</param>
123
public
void
Remove(
string
cacheManagerName,
string
key)
124
{
125
Microsoft.Practices.EnterpriseLibrary.Caching.CacheManager
126
cacheManager
=
CacheFactory.GetCacheManager(cacheManagerName);
127
cacheManager.Remove(key);
128
}
129
130
131
///
<summary>
132
///
清空缓存里面的所有数据
133
///
</summary>
134
public
void
Flush()
135
{
136
Microsoft.Practices.EnterpriseLibrary.Caching.CacheManager
137
cacheManager
=
CacheFactory.GetCacheManager();
138
cacheManager.Flush();
139
}
140
141
///
<summary>
142
///
清空缓存里面的所有数据
143
///
</summary>
144
///
<param name="cacheManagerName">
cache manager 的名字
</param>
145
public
void
Flush(
string
cacheManagerName)
146
{
147
Microsoft.Practices.EnterpriseLibrary.Caching.CacheManager
148
cacheManager
=
CacheFactory.GetCacheManager(cacheManagerName);
149
cacheManager.Flush();
150
}
151
152
///
<summary>
153
///
从缓存里面获取数据.
154
///
</summary>
155
///
<param name="key">
缓存的键值
</param>
156
///
<returns></returns>
157
public
Object GetData(
string
key)
158
{
159
Microsoft.Practices.EnterpriseLibrary.Caching.CacheManager
160
cacheManager
=
CacheFactory.GetCacheManager();
161
return
cacheManager.GetData(key);
162
}
163
164
///
<summary>
165
///
从缓存里面获取数据.
166
///
</summary>
167
///
<param name="key">
缓存的键值
</param>
168
///
<returns></returns>
169
public
T GetData
<
T
>
(
string
key)
170
{
171
Microsoft.Practices.EnterpriseLibrary.Caching.CacheManager
172
cacheManager
=
CacheFactory.GetCacheManager();
173
T obj
=
(T)cacheManager.GetData(key);
174
return
obj;
175
}
176
177
///
<summary>
178
///
从缓存里面获取数据.
179
///
</summary>
180
///
<param name="cacheManagerName">
cache manager 的名字
</param>
181
///
<param name="key">
缓存的键值
</param>
182
///
<returns></returns>
183
public
Object GetData(
string
cacheManagerName,
string
key)
184
{
185
Microsoft.Practices.EnterpriseLibrary.Caching.CacheManager
186
cacheManager
=
CacheFactory.GetCacheManager(cacheManagerName);
187
return
cacheManager.GetData(key);
188
}
189
190
///
<summary>
191
///
从缓存里面获取数据.
192
///
</summary>
193
///
<param name="cacheManagerName">
cache manager 的名字
</param>
194
///
<param name="key">
缓存的键值
</param>
195
///
<returns></returns>
196
public
T GetData
<
T
>
(
string
cacheManagerName,
string
key)
197
{
198
Microsoft.Practices.EnterpriseLibrary.Caching.CacheManager
199
cacheManager
=
CacheFactory.GetCacheManager(cacheManagerName);
200
T obj
=
(T) cacheManager.GetData(key);
201
return
obj;
202
}
203
204
#endregion
205
206
#region
-- HttpRuntime Cache --
207
208
///
<summary>
209
///
往缓存写数据
210
///
</summary>
211
///
<param name="key">
缓存的键值
</param>
212
///
<param name="obj">
要放入缓存的数据
</param>
213
///
<param name="sqlDependncy">
与数据库依赖的对象
</param>
214
public
void
AddRunTimeCache(
string
key, Object obj, System.Web.Caching.SqlCacheDependency sqlDependncy)
215
{
/*
, DateTime.Now.AddDays(100),
216
System.Web.Caching.Cache.NoSlidingExpiration, System.Web.Caching.CacheItemPriority.High, null
*/
217
System.Web.HttpRuntime.Cache.Insert(key, obj, sqlDependncy);
218
}
219
220
///
<summary>
221
///
获取运行时的缓存
222
///
</summary>
223
///
<param name="key"></param>
224
///
<returns></returns>
225
public
object
GetRunTimeCache(
string
key)
226
{
227
return
System.Web.HttpRuntime.Cache[key];
228
}
229
230
///
<summary>
231
///
移除运行时缓存对象
232
///
</summary>
233
///
<param name="key"></param>
234
public
void
RemoveRuntimeCache(
string
key)
235
{
236
System.Web.HttpRuntime.Cache.Remove(key);
237
}
238
239
#endregion
240
}
241
}