博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
memcached 系列2:memcached实例(转载)
阅读量:6940 次
发布时间:2019-06-27

本文共 3782 字,大约阅读时间需要 12 分钟。

在上一篇文章,我们讲了,为什么要使用memched做为缓存服务器(没看的同学请 )。下面让我们以memcached-1.2.1-win32版本的服务组件(安装后是以一个windows服务做daemon)和 C#API(Enyim.Caching)为基础,做一个"Hello world"级的程序,让我们真正感受到memcached就在我们身边。后一的文章,我们还讲memcached的核心部分(根据key来hash存取 数据,缓存数据在server端的内存存储结构)和一些好的案例。

  下面的实例实现的功能很简单,根据key来存取一个object对象(要支持Serializable才行哦),因为服务器端数据都是byte 型的数据组实现存在。

 

服务的启动:

1, 将memcached-1.2.1-win32.zip解决到指定的地方,如c:\memcached

2, 命令行输入 'c:\memcached\memcached.exe -d install'

3, 命令行输入 'c:\memcached\memcached.exe -d start' ,该命令启动 Memcached,默认监听端口为 11211
  可以通过 memcached.exe -h 可以查看其帮助

  

第一步:配置config文件

<?
xml version="1.0" encoding="utf-8" 
?>
<
configuration
>
    
<
configSections
>
        
<
sectionGroup 
name
="enyim.com"
>
            
<
section 
name
="memcached"
 type
="Enyim.Caching.Configuration.MemcachedClientSection, Enyim.Caching"
 
/>
        
</
sectionGroup
>
        
<
section 
name
="memcached"
 type
="Enyim.Caching.Configuration.MemcachedClientSection, Enyim.Caching"
 
/>
    
</
configSections
>
    
<
enyim.com
>
        
<
memcached
>
            
<
servers
>
                
<!--
 put your own server(s) here
-->
                
<
add 
address
="127.0.0.1"
 port
="11211"
 
/>
                
            
</
servers
>
            
<
socketPool 
minPoolSize
="10"
 maxPoolSize
="100"
 connectionTimeout
="00:00:10"
 deadTimeout
="00:02:00"
 
/>
        
</
memcached
>
    
</
enyim.com
>
    
<
memcached 
keyTransformer
="Enyim.Caching.TigerHashTransformer, Enyim.Caching"
>
        
<
servers
>
            
<
add 
address
="127.0.0.1"
 port
="11211"
 
/>
            
        
</
servers
>
        
<
socketPool 
minPoolSize
="2"
 maxPoolSize
="100"
 connectionTimeout
="00:00:10"
 deadTimeout
="00:02:00"
 
/>
    
</
memcached
>
</
configuration
>

这里的port:11211是, memcached-1.2.1-win32在安装时默认使用的port.当然你可以用memcached.exe -p 端口号来自行设置。

 

第二步, 新建TestMemcachedApp的console project

引用Enyim.Caching.dll或者在solution中加入这个project(可以下载的代码中找到)。

 

基础代码如下:

//
create a instance of MemcachedClient
MemcachedClient mc 
=
 
new
 MemcachedClient();
//
 store a string in the cache
mc.Store(StoreMode.Set, 
"
MyKey
"
"
Hello World
"
);
//
 retrieve the item from the cache
Console.WriteLine(mc.Get(
"
MyKey
"
));

 

完整代码如下, 

using
 System;
using
 System.Collections.Generic;
using
 System.Text;
using
 Enyim.Caching;
using
 Enyim.Caching.Memcached;
using
 System.Net;
using
 Enyim.Caching.Configuration;
namespace
 DemoApp
{
    
class
 Program
    {
        
static
 
void
 Main(
string
[] args)
        {
            
//
 create a MemcachedClient
            
//
 in your application you can cache the client in a static variable or just recreate it every time
            MemcachedClient mc 
=
 
new
 MemcachedClient();
            
            
//
 store a string in the cache
            mc.Store(StoreMode.Set, 
"
MyKey
"
"
Hello World
"
);
            
//
 retrieve the item from the cache
            Console.WriteLine(mc.Get(
"
MyKey
"
));
            
//
 store some other items
            mc.Store(StoreMode.Set, 
"
D1
"
1234L
);
            mc.Store(StoreMode.Set, 
"
D2
"
, DateTime.Now);
            mc.Store(StoreMode.Set, 
"
D3
"
true
);
            mc.Store(StoreMode.Set, 
"
D4
"
new
 Product());
            mc.Store(StoreMode.Set, 
"
D5
"
new
 
byte
[] { 
1
2
3
4
5
6
7
8
9
10
 });            
            Console.WriteLine(
"
D1: {0}
"
, mc.Get(
"
D1
"
));
            Console.WriteLine(
"
D2: {0}
"
, mc.Get(
"
D2
"
));
            Console.WriteLine(
"
D3: {0}
"
, mc.Get(
"
D3
"
));
            Console.WriteLine(
"
D4: {0}
"
, mc.Get(
"
D4
"
));
            
byte
[] tmp 
=
 mc.Get
<
byte
[]
>
(
"
D5
"
);
            
//
 delete them from the cache
            mc.Remove(
"
D1
"
);
            mc.Remove(
"
D2
"
);
            mc.Remove(
"
D3
"
);
            mc.Remove(
"
D4
"
);
            
//
 add an item which is valid for 10 mins
            mc.Store(StoreMode.Set, 
"
D4
"
new
 Product(), 
new
 TimeSpan(
0
10
0
));
            Console.ReadLine();
        }
        
//
 objects must be serializable to be able to store them in the cache
        [Serializable]
        
class
 Product
        {
            
public
 
double
 Price 
=
 
1.24
;
            
public
 
string
 Name 
=
 
"
Mineral Water
"
;
            
public
 
override
 
string
 ToString()
            {
                
return
 String.Format(
"
Product {
{
{0}: {1}}}
"
this
.Name, 
this
.Price);
            }
        }
    }
}

 

(在Enyim Memcached 1.2.0.2版本上的修改) 

 

下载memcached服务安装地址:http://www.danga.com/memcached/

Client API下载地址:http://www.danga.com/memcached/apis.bml

转载于:https://www.cnblogs.com/sandea/p/3294265.html

你可能感兴趣的文章
Linux常用命令简介
查看>>
2. 性能测试中常见术语集合
查看>>
内存rank概念和区分
查看>>
c++解惑之读取文件getline
查看>>
Spell Checker - 新版Chrome的纠错特性
查看>>
http协议以及httpd2.2与httpd2.4的详解
查看>>
jpa postgresql 使用uuid作为主键
查看>>
Linux文件目录
查看>>
8.1 shell介绍 8.2 命令历史 8.3 命令补全和别名 8.4 通配符 8.5 输入输出重
查看>>
GAEPhotos V1.02 发布了
查看>>
docker 部署Tomcat应用相关操作
查看>>
文件权限
查看>>
回顾2017,展望2018
查看>>
Eclipse 编译运行卡顿
查看>>
Linux常用命令——chmod
查看>>
expansions and substitutions
查看>>
PyTorch 0.4源码安装(Windows)
查看>>
Velocity和jQuery冲突的解决办法
查看>>
用户登录提示符编程“-bash-4.1#”
查看>>
Nginx
查看>>