(转)memcached简介与开发应用

来源:互联网 发布:jsaas 源码 编辑:程序博客网 时间:2024/06/14 08:31

【简介】

Memcached是开源的分布式cache系统,现在很多的大型web应用程序包括facebook,youtube,wikipedia,yahoo等等都在使用memcached来支持他们每天数亿级的页面访问。通过把cache层与他们的web架构集成,他们的应用程序在提高了性能的同时,还大大降低了数据库的负载。

Memcached处理的原子是每一个(key,value)对(以下简称kv对),key会通过一个hash算法转化成hash-key,便于查找、对比以及做到尽可能的散列。同时,memcached用的是一个二级散列,通过一张大hash表来维护。

 

【安装文件】
1. libevent
http://www.monkey.org/~provos/libevent/

2. memcached
linux版本
http://code.google.com/p/memcached/downloads/list
windows版本
http://code.jellycan.com/memcached/
http://www.ctochina.net/topic/show/2394
http://jehiah.cz/projects/memcached-win32/     (无效链接)

3. memcached Manager
http://allegiance.chi-town.com/MemCacheDManager.aspx

4. libmemcache
C API(linux/windows)
https://launchpad.net/libmemcached/
C API(linux)
http://people.freebsd.org/~seanc/libmemcache/
C API(windows)
http://svn.coderepos.org/share/lang/c/libmemcached-win32/
.Net API
http://sourceforge.net/projects/memcacheddotnet/

【安装方法】
Windows下的Memcache安装:
1. 下载memcache的windows稳定版,解压放某个盘下面,比如在c:\memcached
2. 在终端(也即cmd命令界面)下输入 ‘c:\memcached\memcached.exe -d install’ 安装
3. 再输入: ‘c:\memcached\memcached.exe -d start’ 启动。NOTE: 以后memcached将作为windows的一个服务每次开机时自动启动。这样服务器端已经安装完毕了。
4.下载php_memcache.dll,请自己查找对应的php版本的文件
5. 在C:\winnt\php.ini 加入一行 ‘extension=php_memcache.dll’
6.重新启动Apache,然后查看一下phpinfo,如果有memcache,那么就说明安装成功!

Linux下的安装:
1. libevent安装
./configure
make
make install
2. memcached安装
./configure --prefix=/usr/local/memcached --with-libevent=/usr/local
make
make install
3. 共享库软连接配置
32位系统执行
ln -s /usr/local/lib/libevent-1.4.so.2 /usr/lib/libevent-1.4.so.2
64位系统执行
ln -s /usr/local/lib/libevent-1.4.so.2 /usr/lib64/libevent-1.4.so.2
启动
/usr/local/memcached/bin/memcached -d -m 1024 -p 11211 -u root

**开机自启动(daemon)方式运行

#vim /etc/rc.d/rc.local

/usr/local/memcached/bin/memcached -d -m 1024 -p 11211 -u root 2>>/var/log/err.log


memcached的基本设置:

-d选项是启动一个守护进程,
-m是分配给Memcache使用的内存数量,单位是MB,我这里是10MB,
-u是运行Memcache的用户,我这里是root,
-l是监听的服务器IP地址,如果有多个地址的话,我这里指定了服务器的IP地址192.168.0.200,
-p是设置Memcache监听的端口,我这里设置了12000,最好是1024以上的端口,
-c选项是最大运行的并发连接数,默认是1024,我这里设置了256,按照你服务器的负载量来设定,
-P是设置保存Memcache的pid文件,我这里是保存在 /tmp/memcached.pid,
例如:
 - 启动
# /usr/local/bin/memcached -d -m 10 -u root -l 192.168.0.200 -p 12000 -c 256 -P /tmp/memcached.pid
也可以启动多个守护进程,不过端口不能重复。
 - 停止
如果要结束Memcache进程,执行:# kill `cat /tmp/memcached.pid`

 

【客户端开发】

1)创建实例

memcached_st *memcached_create(memcached_st *ptr)

2)连接memcached服务器

memcached_return memcached_server_add(memcached_st *ptr, const char *hostname, unsigned int port)

3)获取Key对应的value

char *memcached_get(memcached_st *ptr, const char *key, size_t key_length, size_t *value_length, uint32_t *flags, memcached_return *error)

4)设置Key对应的value

memcached_return memcached_set(memcached_st *ptr, const char *key, size_t key_length, const char *value, size_t value_length, time_t expiration, uint32_t flags)

5)Key对应的value加1

memcached_return memcached_increment(memcached_st *ptr, const char *key, size_t key_length, uint32_t offset, uint64_t *value)

6)Key对应的value减1

memcached_return memcached_decrement(memcached_st *ptr, const char *key, size_t key_length, uint32_t offset, uint64_t *value)

7)删除Key

memcached_return memcached_delete(memcached_st *ptr, const char *key, size_t key_length, time_t expiration)

8)销毁实例

void memcached_free(memcached_st *ptr)

9)设置访问方式(阻塞或不阻塞)

memcached_return memcached_behavior_set(memcached_st *ptr, memcached_behavior flag, uint64_t data)

10)删除所有Key

memcached_return memcached_flush(memcached_st *ptr, time_t expiration)

11)获取错误号对应的字符串错误信息

char *memcached_strerror(memcached_st *ptr, memcached_return rc)

 

【示例】
自己写了一个封装类抽时间上传,可以访问我的CSDN空间获取。
CMemcached.cpp
CMemcached.h
http://xwhrx.download.csdn.net/

【资料】
5. libevent、memcached、libmemcache
[1]. 安装相关
http://archive.cnblogs.com/a/1958106/ (win)
http://www.yayu.org/look.php?id=105   (linux)
http://blog.csdn.net/kikikind/archive/2010/05/10/5576449.aspx  (linux)
[2]. 开发介绍
c 读写memcache
http://hi.baidu.com/fdwm_lx/blog/item/53dd59c717a646d0d10060de.html
Memcached在大型网站中应用
http://www.douban.com/group/topic/2064584/
memcached批量删除方案探讨
http://it.dianping.com/memcached_item_batch_del.htm

 

本文原创,转载请注明出处 http://blog.sina.com.cn/faithfish

原创粉丝点击