首先需要有一个阿里的OCS实例和ECS云服务器
请确认这两个是在同一个可用区的,这个很重要!
这两个可以在阿里云官网申请得到
拿到OCS之后
进入OCS控制台,点击下面的客户端下载选择.Net客户端,或者直接点这里下载.Net客户端
下载下来的是一个压缩文件,解压之后是可能是一个没有格式的文件,不要管它,用winrar或者其他的解压软件在解压一次
得到一个文件夹,里面放的是一个VS的解决方案,如图
这就是一个客户端,双击打开解决方案
选择Enyim.Caching项目重新生成一下
右键打开该项目所在的文件夹->bin->Debug
可以看到Enyim.Caching.dll这两个文件
把这两个文件复制到新建的控制台项目中,然后添加dll引用
新建MemCached类,代码如下:
public sealed class MemCached { private static MemcachedClient MemClient; static readonly object padlock = new object(); //线程安全的单例模式 public static MemcachedClient getInstance() { if (MemClient == null) { lock (padlock) { if (MemClient == null) { MemClientInit(); } } } return MemClient; } static void MemClientInit() { //初始化缓存 MemcachedClientConfiguration memConfig = new MemcachedClientConfiguration(); string address = Dns.GetHostByName ("your_instanceid.m.cnszalist3pub001.ocs.aliyuncs.com").AddressList[0].ToString();//your_instanceid替换为你的OCS实例的ID IPAddress newaddress = IPAddress.Parse(address); IPEndPoint ipEndPoint = new IPEndPoint(newaddress, 11211); // 配置文件 - ip memConfig.Servers.Add(ipEndPoint); // 配置文件 - 协议 memConfig.Protocol = MemcachedProtocol.Binary; // 配置文件-权限 memConfig.Authentication.Type = typeof(PlainTextAuthenticator); memConfig.Authentication.Parameters["zone"] = ""; memConfig.Authentication.Parameters["userName"] = "username"; memConfig.Authentication.Parameters["password"] = "password"; //下面请根据实例的最大连接数进行设置 memConfig.SocketPool.MinPoolSize = 5; memConfig.SocketPool.MaxPoolSize = 200; MemClient = new MemcachedClient(memConfig); } }
以上是阿里官方提供的示例代码修改版,原版复制过来有点错误
注意:
string address = Dns.GetHostByName ("your_instanceid.m.cnszalist3pub001.ocs.aliyuncs.com").AddressList[0].ToString();//your_instanceid替换为你的OCS实例的ID
Dns.GetHostByName方法里面的字符串要从OCS控制台那边的内网地址复制过来
上次因为只复制了实例ID替换了your_instanceid,结果调了两天都没好
在控制台主函数中调用MemCached类的getInstance方法得到一个MemcachedClient对象并调用方法向OCS中插入数据
static void Main(string[] args) { MemcachedClient client = MemCached.getInstance(); client.Store(Enyim.Caching.Memcached.StoreMode.Set, "1", "2"); Console.ReadKey(); }
到OCS控制台查看插入的数据
测试结束
关于.Net客户端MemcachedClient类的更多方法使用实例请看: