用FreeBSD与memcached建立分布式缓存服务器全程记录之memcached使用与安装

本文介绍了memcached的安装步骤与启动方法,并通过BeIT.MemCached客户端示例展示了如何在C#中实现memcached的基本操作,包括设置与获取缓存数据。
1、memcached安装
yihui#cd /usr/ports/databases/memcached

yihui#make install clean

 


用pkg_info就可以看到已经安装的包列表里有"memcached-1.2.3     High-performance distributed memory object cache system"


2、memcached 运行

memcached <选项>
-d  以daemon方式运行(类似windows下的后台服务),如果不指定此项,控制台将停在那里直到你停止memcached的运行(ctrl+c)
-l 指定可以访问缓存服务的IP地址,不指定则为本地所有IP.类似iis里对网站访问的限制
-p <tcp portnum>  指定用来监听的TCP端口,缺省为11211
-u root 指定运行它的用户名.一般不用,但如果你当前登录的是root用户,则必须指定这选项,建议不要用以root用户运行
-U <udp portnum> 指定用来监听的UDP端口,缺省为11211,注意是大写
-m <num> 指定最大用多少内存,单位是M,缺省为64M

最简单的运行:memcached -d,以daemon方式运行,并监听所有IP的TCP11211端口.
最常用的运行:memcached -d -p 11211 -m 2048 ,用2G内存(自定),既然用作缓存服务器,当然内存要指定越大好!

 查看是否在运行
ps -axu | grep memcached

telnet 10.0.5.115 11211,连上了就表示成功了,可以进行下一步了.

停止运行:遗憾哪,我不知道如何停止它的运行,我只会用
ps -axu | grep memcached,得到进程号,然后kill 进程号的强制方式来禁止.

3、下载c#客户端

  这三个客户端API,每个都是一个vs 2005工程,最好都下载了看一下,当然你们也可以加以修改,比如将里的hash算法改为一致性hash算法(哪位改了的请给我一份)。

 

  示例代码(下载来的里与这差不多,我加了一个复杂的类对象测试):


ContractedBlock.gif ExpandedBlockStart.gif BeITMemcached 示例Code
using System;
using System.Collections.Generic;


namespace BeIT.MemCached {
    
class Example {
       
        [Serializable]
        
public class ab{
        
public string a;
            
public int b;
            
public abs absss;
        }
        [Serializable]
        
public class abs{
            
public string aaa="";
        }
        
public static void Main(string[] args) {

            
//初始化服务器池,需要指定实例名及服务器组
            
//实例名主要是为了方便将应用程序需要缓存的数据进行分类,这样可以方便管理,提高性能
            
//例如可以session 存在一组memcached服务器,用户数据放在另一组服务器
            
//服务器是逻辑概念,IP+PORT即代表一个.
            MemcachedClient.Setup("MyCache"new string[] { "10.0.5.115:11211" });
            MemcachedClient.Setup(
"MyOtherCache"new string[] { "10.0.5.115:11212""10.0.5.115:11213" });

            MemcachedClient cache2 
= MemcachedClient.GetInstance("MyCache");

            cache2.SendReceieveTimeout 
= 5000;
            cache2.MinPoolSize 
= 1;//最小的socket连接池尺寸
            cache2.MaxPoolSize = 5;//最大的socket连接池尺寸

            Console.Out.WriteLine(
"Storing some items.");
            cache2.Set(
"mystring""The quick brown fox jumped over the lazy dog.");
            cache2.Set(
"myarray"new string[] { "This is the first string.""This is the second string." });
            cache2.Set(
"myinteger"4711);
            cache2.Set(
"mydate"new DateTime(20080223));

            ab obj
=new ab();
            obj.a
="sdfasdfasfdda中华人民共和国中华人民共和国 ";
            obj.b
=435;
            obj.absss
=new abs();
            obj.absss.aaa
="adfasdfasdfas";
            cache2.Set(
"myobj",obj);

            
//Get a string
            string str2 = cache2.Get("mystring"as string;
            
string[] array2 = cache2.Get("myarray"as string[];
            
object[] result2 = cache2.Get(new string[] { "myinteger""mydate" });//一次取得多个键值

            ab obj2
=cache2.Get("myobj"as ab;

            Console.WriteLine(str2);
            Console.WriteLine(array2[
0]);
            Console.WriteLine(((DateTime)(result2[
1])).ToString());
            Console.WriteLine(obj2.a);
            Console.WriteLine(obj2.absss.aaa);

            Console.ReadLine();
            
return;
        }
    }
}

 

  这几篇文档可能让来的朋友失望了,由于初次写东西水平有限,请大家原谅!

现在此抛砖引玉,希望能引起大家的兴趣,可以在此交流,共同学习。我也会随着实践与不断的学习,陆续记录自己的体验及心得!


另,这几天我深刻的体会到写blog的确可以加深自己的理解和记忆,大家是否也有同感?

 

一挥随笔(http://www.cnblogs.com/yihuiso),转载请留下此信息!


转载于:https://www.cnblogs.com/yihuiso/archive/2008/08/15/1268691.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值