首先下载windows平台下的memcached,然后安装。安装完之后就是启动memcached服务了,你可以在cmd下用dos命令输入,也可以在计算机管理->服务->memcached->启动.来开启服务.
随后就是在项目中引入相关dll:
Commons.dll,ICSharpCode.SharpZipLib.dll,log4net.dll,Memcached.ClientLibrary.dll
在项目的引用中引入Memcached.ClientLibrary.dll
随后就是编写程序了,在这里创建一个MVC程序:
在Models文件夹中创建一个类:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
[Serializable]
public
class
VIP
{
public
string
UserName {
get
;
set
; }
public
int
? Vip {
get
;
set
; }
public
DateTime? VipEndDate {
get
;
set
; }
public
string
Mail {
get
;
set
; }
public
string
QQ {
get
;
set
; }
}
|
若没有标注为可序列化,则后续运行程序将会报错。
随后创建一个MemcachedHelper类来辅助编程.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
public
class
MemcachedHelper
{
public
static
MemcachedClient mclient;
static
MemcachedHelper()
{
string
[] serverlist =
new
string
[] {
"127.0.0.1:11211"
};
SockIOPool pool = SockIOPool.GetInstance(
"First"
);
pool.SetServers(serverlist);
pool.Initialize();
mclient =
new
MemcachedClient();
mclient.PoolName =
"First"
;
mclient.EnableCompression =
false
;
}
public
static
bool
set
(
string
key,
object
value, DateTime expiry)
{
return
mclient.Set(key, value, expiry);
}
public
static
object
Get(
string
key)
{
return
mclient.Get(key);
}
}
|
最后就是Controller里面的具体实现:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
public
class
EntityMemcachedController : Controller
{
//
// GET: /EntityMemcached/
/// <summary>
/// 序列化实体类为字节数组,将其存储到Memcached中,以缓存数据,从而减轻访问压力....
/// </summary>
/// <returns></returns>
public
ActionResult Index()
{
var
vipInfo =
new
List<VIP>{
new
VIP{ UserName=
"张三"
, Vip=1, QQ=
"3123456"
, Mail=
"3123456"
, VipEndDate=(DateTime?)DateTime.Now.AddDays(1) },
new
VIP{ UserName=
"李四"
, Vip=1, QQ=
"4123456"
, Mail=
"4123456"
, VipEndDate=(DateTime?)DateTime.Now.AddDays(2) },
new
VIP{ UserName=
"王五"
, Vip=1, QQ=
"5123456"
, Mail=
"5123456"
, VipEndDate=(DateTime?)DateTime.Now.AddDays(3) },
new
VIP{ UserName=
"赵六"
, Vip=1, QQ=
"6123456"
, Mail=
"6123456"
, VipEndDate=(DateTime?)DateTime.Now.AddDays(4) },
new
VIP{ UserName=
"刘七"
, Vip=1, QQ=
"7123456"
, Mail=
"7123456"
, VipEndDate=(DateTime?)DateTime.Now.AddDays(5) }
};
if
(Request.Cookies[
"_EntityMemcached"
] ==
null
)
{
string
sessionId = Guid.NewGuid().ToString();
Response.Cookies[
"_EntityMemcached"
].Value = sessionId;
Response.Cookies[
"_EntityMemcached"
].Expires = DateTime.Now.AddMinutes(1);
//设置cookie过期时间
MemcachedHelper.
set
(sessionId, vipInfo, DateTime.Now.AddMinutes(1));
//设置缓存过期时间
return
Content(
"Memcached分布式缓存设置成功!!!"
);
}
else
{
string
key = Request.Cookies[
"_EntityMemcached"
].Value.ToString();
object
obj = MemcachedHelper.Get(key);
List<VIP> info = obj
as
List<VIP>;
if
(info !=
null
)
{
return
View(info);
}
}
return
Content(
"若显示则有'bug'"
);
}
|
看看实现:
然后退出来,重新点击”实现memcached缓存”