Memcached ----关于存取的小例子

   ITOO底层封装的memcached的方法存取的时候有一定的时间耗费。它的工作原理是:存的时候先把对象序列化成字符串,取的时候再把字符串反序列化为对象使用!其实memcached缓存有一个客户端,可以提供对memcached的存取,并且各种类型的都可以,所以我就提供给大家一个小例子,希望对初学memcached的学者有帮助!


首先

要做一些前提工作:引用dll。
          

     引用了这4个DLL,我们就可以非常简单的用memcached的客户端来操作了!

其次:

写一个memcachedHelper类,用来连接多台机器存放数据库,搭建memcached分布式的环境!
     
using Memcached.ClientLibrary;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace test
{
    class MemcacheHelper
    {
        public MemcacheHelper()
        {
           //跟配置文件相连,使之可以连接多个服务器
            string server = ConfigurationManager.AppSettings["serverlist"];
            string[] serverlist;
            serverlist = server.Split(',');

            SockIOPool pool = SockIOPool.GetInstance();
            pool.SetServers(serverlist);
            pool.MinConnections = 3;
            pool.InitConnections = 3;
            pool.MaxConnections = 5;
            pool.SocketConnectTimeout = 5000;
            pool.Initialize();
        }
    }
}


配置配置文件,使之可以灵活填写数据库连接的电脑个数:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="serverlist" value="127.0.0.1:11211,192.168.21.88:11211"></add>
  </appSettings>
    <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
    </startup>
</configuration>



最后

建立一个窗体,放上8个按钮外加一个txt文本框
接下来是后台的代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Memcached.ClientLibrary;
using System.Collections;
 
namespace test
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
          //实例化一个helper类,链接数据库池
            MemcacheHelper memchachehelper = new MemcacheHelper();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            //实例化一个客户端,用于操作memcached数据库
            MemcachedClient client = new MemcachedClient();
 
            client.EnableCompression = false;
 
            client.Set("key1", "字符串测试");
 
            MessageBox.Show("key1:字符串测试");
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            MemcachedClient client = new MemcachedClient();
           //取出数据的值,将内容显示到界面的文本框中
            txt01.Text = client.Get("key1").ToString();
        }
 
        private void button3_Click(object sender, EventArgs e)
        {
          //实例化一个对象
            Person person = new Person { UserId = "1", UserName = "李少然" };
            MemcachedClient client = new MemcachedClient();
            client.EnableCompression = false;
           //向数据库中存入对象
            client.Set("key2", person);
            MessageBox.Show("key2:对象PersonUserId = 1, UserName =李少然");
        }
 
        private void button4_Click(object sender, EventArgs e)
        {
            MemcachedClient client = new MemcachedClient();
            //从缓存中取出对象
            Person cc = client.Get("key2") as Person;
           //将对象的内容显示到文本框中
            txt01.Text = cc.UserId.ToString() + ";" + cc.UserName.ToString();
        }
       //存入泛型
        private void button5_Click(object sender, EventArgs e)
        {
            ArrayList arraylist = new ArrayList();
            arraylist.Add("泛型集合测试Erica"); 
            arraylist.Add("泛型集合测试李少然"); 
            arraylist.Add("泛型集合测试李卫中");
            MemcachedClient client = new MemcachedClient();
            client.EnableCompression = false;
            client.Set("key3", arraylist);
            MessageBox.Show("key3:泛型集合测试Erica,泛型集合测试李少然,泛型集合测试李卫中");
        }
 
        private void button6_Click(object sender, EventArgs e)
        {
            MemcachedClient client = new MemcachedClient();
            object demo = client.Get("key3"); 
            ArrayList arraylist = demo as ArrayList;
            txt01.Text = arraylist[0].ToString() + ";" + arraylist[1].ToString() + ";" + arraylist[2].ToString() + ";";
        }
 
           //存入dt
        private void button7_Click(object sender, EventArgs e)
        {
            DataTable dt = new DataTable(); 
            string str = "";
            dt.Columns.Add("id");
            dt.Columns.Add("name"); 
            DataRow dr = dt.NewRow();
            for (int i = 0; i < 3; i++)
            {
                dr = dt.NewRow();
                dr["id"] = "00" + i.ToString();
                dr["name"] = "姓名" + i.ToString();
                dt.Rows.Add(dr);
                str += dr["id"] + "," + dr["name"] + ";";
            }
            MemcachedClient client = new MemcachedClient(); 
            client.EnableCompression = false; 
            client.Set("key4", dt);
            MessageBox.Show("key4:" + str);
        }
 
        private void button8_Click(object sender, EventArgs e)
        {
            MemcachedClient client = new MemcachedClient();
 
            object demo = client.Get("key4");
 
            DataTable dt = demo as DataTable;
 
            int count = dt.Rows.Count;
 
            txt01.Text = dt.Rows[0][0].ToString() + "," + dt.Rows[0][1].ToString() + ";" + dt.Rows[1][0].ToString() + "," + dt.Rows[1][1].ToString() + ";" + dt.Rows[2][0].ToString() + "," + dt.Rows[2][1].ToString() + ";";
        }
    }
}

      person类的代码:
     using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace test
{
    [Serializable]
    public class Person
    {
        public string UserName { get; set; }
 
        public string UserId { get; set; }
    }
}


    这样就建立了小例子,可以存取各种类型的数据!那么ITOO的底层代码也就不用转来转去了就用两句话就可以解决!
//存
 public static bool Set(string key, object value, DateTime expiry)
        {
            return mc.Set(key,value, expiry);
        }
//取
 public static T GetObject<T>(T obj, string key)
        {
            obj = (T)mc.Get(key);
            return obj;
        }

小总:
     
     这样,就可以改掉ITOO底层的代码!但是又出现了一个问题就是:计算机识别二进制是特别快的,ITOO底层把对象先序列化为二进制肯定也是有道理的,如果我直接存对象,可能应用方便了,代码少了几行,但是却没有做测试实验,不知道到底存对象和序列化对象再存入memcached有什么不同!接下来会继续了解的

   下一篇,小编会讲解一些memcached集群存取的一些算法,敬请期待!


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 20
    评论
### 回答1: memcached-win-1.5.6.rar是一个用于Windows操作系统的memcached软件的压缩包。Memcached是一款高性能的分布式内存对象缓存系统,通过在内存中缓存数据来减轻数据库的负载。memcached-win-1.5.6.rar是这个软件的一个版本,该版本主要在Windows平台上使用。 要下载memcached-win-1.5.6.rar,你可以按照以下步骤进行操作: 1. 在你的浏览器中搜索“memcached-win-1.5.6.rar下载”。 2. 在搜索结果中找到可靠的下载来源,例如官方网站或诸如GitHub等知名网站。 3. 点击相应的下载链接,你可能需要选择适合你的系统的版本,比如32位或64位。 4. 在弹出的下载对话框中选择保存文件的位置,点击“保存”按钮。 5. 下载会在一段时间内完成,时间长短取决于你的网络速度。 6. 下载完成后,你可以在你选择的保存位置找到memcached-win-1.5.6.rar压缩包。 7. 解压缩这个压缩包,你可以使用解压缩软件,如WinRAR或7-Zip。 8. 解压缩完成后,你将得到memcached软件的安装文件或目录。 9. 跟据memcached的安装说明,你可以进行软件的安装和配置。 请注意,下载任何软件时要保证下载源的可靠性,以免下载到恶意软件或病毒。推荐从官方网站或可信赖的第三方下载平台下载memcached-win-1.5.6.rar,以确保软件的完整性和安全性。 ### 回答2: memcached-win-1.5.6.rar是一个Memcached的Windows版本软件包,可以用于在Windows操作系统上安装和运行Memcached服务器。Memcached是一个开源的分布式内存对象缓存系统,主要用于加速动态网站和应用程序的访问速度。 要下载memcached-win-1.5.6.rar,可以按照以下步骤进行操作: 1. 在网络浏览器中打开一个搜索引擎,如Google或Bing。 2. 在搜索栏中输入“memcached-win-1.5.6.rar下载”。 3. 点击搜索按钮,搜索引擎将返回相关的搜索结果。 4. 从搜索结果中选择一个可信和安全的下载源,例如官方网站或知名的软件下载站。 5. 进入下载源的网页,查找memcached-win-1.5.6.rar的下载链接。 6. 点击下载链接开始下载memcached-win-1.5.6.rar。 7. 完成下载后,可以使用解压缩软件(如WinRAR或7-Zip)将memcached-win-1.5.6.rar文件解压缩到所需的目标文件夹。 8. 解压缩后,可以按照软件包中的安装指南或使用说明文档来安装和配置Memcached服务器。 请注意,下载任何软件时应保持警惕,确保选择可信和安全的下载源,以避免下载到潜在的恶意软件。 ### 回答3: memcached-win-1.5.6.rar 是一个用于Windows操作系统的Memcached版本。它是一个高性能的分布式内存对象缓存系统,广泛用于加快Web应用程序的性能。您可以通过以下步骤下载和安装memcached-win-1.5.6.rar。 1. 打开您的浏览器,并访问memcached-win-1.5.6.rar的下载页面。 2. 在下载页面,找到memcached-win-1.5.6.rar的下载链接,并点击下载按钮。 3. 下载完成后,找到下载的memcached-win-1.5.6.rar文件,通常会保存在您的默认下载文件夹中。 4. 使用解压缩软件(如WinRAR或7-Zip)解压缩memcached-win-1.5.6.rar文件。 5. 解压缩完成后,您将获得一个包含memcached-win-1.5.6的文件夹。 6. 打开该文件夹,您将找到memcached.exe等执行文件和一些配置文件。这些文件将帮助您配置和运行memcached服务器。 7. 根据您的需求,编辑配置文件(如memcached.conf)来设置服务器参数,例如缓存大小和端口号。 8. 双击memcached.exe文件以启动memcached服务器。 9. 现在,您可以通过在命令行或使用Memcached客户端库来使用和管理memcached-win-1.5.6服务器。 总而言之,通过下载和安装memcached-win-1.5.6.rar,您可以在Windows操作系统上享受到Memcached服务器的性能优势。
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值