memcached c#

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了memcached c#相关的知识,希望对你有一定的参考价值。

1.下载Memcached For Windows

  URL:http://code.jellycan.com/files/memcached-1.2.6-win32-bin.zip

2.管理员身份运行cmd

3.在Windows中安装Memcached服务:memcached.exe -d install(那么,对应卸载命令为:memcached.exe -d uninstall

4.启动 net start "Memcached Server"

5.停止服务 net stop "Memcached Server"

6.

 下载文件:http://pan.baidu.com/s/1w9Q8I

  memcached clientlib项目地址:http://sourceforge.net/projects/memcacheddotnet/

  解压该包,里面有1.1和2.0两个版本的,这里我们使用2.0版本的。(在压缩包中的目录地址为:\memcacheddotnet_clientlib-1.1.5\memcacheddotnet\trunk\clientlib\src\clientlib\bin\2.0\Release)

 

7.创建控制台项目

8.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Memcached.ClientLibrary;

namespace testMemcached1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Memcached服务器列表
            // 如果有多台服务器,则以逗号分隔,例如:"192.168.80.10:11211","192.168.80.11:11211"
            string[] serverList = { "192.168.1.116:11211" };
            // 初始化SocketIO池
            string poolName = "MyPool";
            SockIOPool sockIOPool = SockIOPool.GetInstance(poolName);
            // 添加服务器列表
            sockIOPool.SetServers(serverList);
            // 设置连接池初始数目
            sockIOPool.InitConnections = 3;
            // 设置连接池最小连接数目
            sockIOPool.MinConnections = 3;
            // 设置连接池最大连接数目
            sockIOPool.MaxConnections = 5;
            // 设置连接的套接字超时时间(单位:毫秒)
            sockIOPool.SocketConnectTimeout = 1000;
            // 设置套接字超时时间(单位:毫秒)
            sockIOPool.SocketTimeout = 3000;
            // 设置维护线程运行的睡眠时间:如果设置为0,那么维护线程将不会启动
            sockIOPool.MaintenanceSleep = 30;
            // 设置SockIO池的故障标志
            sockIOPool.Failover = true;
            // 是否用nagle算法启动
            sockIOPool.Nagle = false;
            // 正式初始化容器
            sockIOPool.Initialize();

            // 获取Memcached客户端实例
            MemcachedClient memClient = new MemcachedClient();
            // 指定客户端访问的SockIO池
            memClient.PoolName = poolName;
            // 是否启用压缩数据:如果启用了压缩,数据压缩长于门槛的数据将被储存在压缩的形式
            memClient.EnableCompression = false;

            Console.WriteLine("----------------------------测试开始----------------------------");
            //// 01.简单的添加与读取操作
            //memClient.Set("test1", "chm1");
            //Console.WriteLine("test1:{0}", memClient.Get("test1"));
            //// 02.先添加后修改再读取操作
            //memClient.Set("test2", "chm2");
            //Console.WriteLine("test2:{0}", memClient.Get("test2"));
            //memClient.Set("test2", "chm22");
            //Console.WriteLine("test2:{0}", memClient.Get("test2"));
            //memClient.Replace("test2", "chm222");
            //Console.WriteLine("test2:{0}", memClient.Get("test2"));
            //// 03.判断Key值是否存在
            //if (memClient.KeyExists("test2"))
            //{
            //    Console.WriteLine("Key:test2 存在");
            //}
            //// 04.删除指定Key值的数据
            //memClient.Add("test3", "chm3");
            //Console.WriteLine("test3:{0}", memClient.Get("test3"));
            //memClient.Delete("test3");
            //if (!memClient.KeyExists("test3"))
            //{
            //    Console.WriteLine("Key:test3 不存在");
            //}
            //// 05.设置数据过期时间:5秒后过期
            //memClient.Add("test4", "chm4", DateTime.Now.AddSeconds(5));
            //Console.WriteLine("test4:{0}", memClient.Get("test4"));
            //Console.WriteLine("请等待3秒钟");
            //System.Threading.Thread.Sleep(3000);
            //Console.WriteLine("test4:{0}", memClient.Get("test4"));
            //System.Threading.Thread.Sleep(2000);
            //Console.WriteLine("请等待2秒钟");
            //if (!memClient.KeyExists("test4"))
            //{
            //    Console.WriteLine("test4 过期了");
            //}
            //06 测试存储对象
            UserInfoEntity uie = new UserInfoEntity() { UserId = 1, UserName = "wt1", UserBirthday = Convert.ToDateTime("1988-09-28") };
            memClient.Set("wt", uie);
           var obj= memClient.Get("wt");
            UserInfoEntity uieGet = obj as UserInfoEntity;
            Console.WriteLine(uie.ToString());
            Console.WriteLine("----------------------------测试完成----------------------------");

            // 关闭SockIO池
            sockIOPool.Shutdown();

            Console.ReadKey();
        }
    }
}

  

 

以上是关于memcached c#的主要内容,如果未能解决你的问题,请参考以下文章

C# 最有用的(自定义)代码片段是啥? [关闭]

c#代码片段快速构建代码

此 Canon SDK C++ 代码片段的等效 C# 代码是啥?

是否可以动态编译和执行 C# 代码片段?

C#常用代码片段备忘

优化 C# 代码片段、ObservableCollection 和 AddRange