最近在研究memcached,所找到的资料绝非一家之言所以没办法标注原文地址请见谅,下文中不少东西是我自己的理解如有错误请大家指出先谢过了:
部分原文地址:
一,简介
1.背景
memcached是一个高性能,分布式的内存对象缓存系统,感觉它是分布式的所以不像数据库的缓存可以分不到多台服务器上所以有优势,不少网站在用像facebook,youtube,yahoo,sina等。在以用户为中心的网站极其突出,主要是因为这些网站需要大量的查询数据库从而达到数据库瓶颈,导致网站访问过慢,但是添加缓存机制后,查询过的资源会放到缓存里,这样下次就不需要直接访问数据库从而提高响应时间。对于大型网站对于数据库的操作都会进行优化,一般分为两种:
a.读写数据分离,采用主/辅库的方式,来分散数据库的压力,提高查询速度
b.按照业务特点横向或者纵向分割数据库。简单来讲,就是大库变小库,大表变小表,来提高数据库访问的效率。
分布式:所谓分布式系统比较专业的解释是,一种计算机硬件的配置方式和相应的功能配置方式。他是一种多处理器的计算机系统,各处理器通过互联网络构成统一的系统。系统采用分布式计算结构,即把原来系统内中央处理器处理的任务分散给相应的处理器,实现不同功能的各个处理器相互协调,共享系统的外设与软件。这样就加快了系统的处理速度,简化了主机的逻辑结构。
二,安装
1.window安装
memcached<1.4.5版本
1、解压下载的安装包到指定目录。
2、在 1.4.5 版本以前 memcached 可以作为一个服务安装,使用管理员权限运行以下命令:
c:\memcached\memcached.exe -d install
注意:你需要使用真实的路径替代 c:\memcached\memcached.exe。
3、然后我们可以使用以下命令来启动和关闭 memcached 服务:
c:\memcached\memcached.exe -d start c:\memcached\memcached.exe -d stop
4、如果要修改 memcached 的配置项, 可以在命令行中执行 regedit.exe 命令打开注册表并找到 "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\memcached" 来进行修改。
如果要提供 memcached 使用的缓存配置 可以修改 ImagePath 为:
"c:\memcached\memcached.exe" -d runservice -m 512
-m 512 意思是设置 memcached 最大的缓存配置为512M。
此外我们还可以通过使用 "c:\memcached\memcached.exe -h" 命令查看更多的参数配置。
5、如果我们需要卸载 memcached ,可以使用以下命令:
c:\memcached\memcached.exe -d uninstall
memcached>=1.4.5版本
1、解压下载的安装包到指定目录。
2、在 memcached1.4.5 版本之后,memcached 不能作为服务来运行,需要使用任务计划中来开启一个普通的进程,在 window 启动时设置 memcached自动执行。
我们使用管理员身份执行以下命令将 memcached 添加来任务计划表中:
schtasks /create /sc onstart /tn memcached /tr "'c:\memcached\memcached.exe' -m 512"
注意:你需要使用真实的路径替代 c:\memcached\memcached.exe。
注意:-m 512 意思是设置 memcached 最大的缓存配置为512M。
注意:我们可以通过使用 "c:\memcached\memcached.exe -h" 命令查看更多的参数配置。
3、如果需要删除 memcached 的任务计划可以执行以下命令:
schtasks /delete /tn memcached
2.linux安装
一、下载1. Libevent
简单的说就是一个事件触发的网络库,Memcached离不开它。
- wget http://cloud.github.com/downloads/libevent/libevent/libevent-2.0.17-stable.tar.gz
2. Memcached
今天的主角
- wget http://memcached.googlecode.com/files/memcached-1.4.13.tar.gz
二、安装
1. Libevent
解压缩
- tar zxvf libevent-2.0.17-stable.tar.gz
编译、安装
- ./configure --prefix=/usr && make && make install
这里一定要注意指定 --prefix ,后面配置memcached的时候就有必要用到。
2. Memcached
解压
- tar zxvf memcached-1.4.13.tar.gz
编译、安装
- ./configure --with-libevent=/usr/lib && make && make install
这里一定要指定 libevent 的路径,否则启动的时候就有找不到libevent的so文件的错误!
启动
- memcached -d -m 512 -p 11211 -u root -c 256 -P /var/run/memcached.pid
参数
-p <num> TCP port number to listen on (default: 11211)
-U <num> UDP port number to listen on (default: 11211, 0 is off)
-l <addr> interface to listen on (default: INADDR_ANY, all addresses)
<addr> may be specified as host:port. If you don't specify
a port number, the value you specified with -p or -U is
used. You may specify multiple addresses separated by comma
or by using -l multiple times
-d run as a daemon
-u <username> assume identity of <username> (only when run as root)
-m <num> max memory to use for items in megabytes (default: 64 MB)
-M return error on memory exhausted (rather than removing items)
-c <num> max simultaneous connections (default: 1024)
-v verbose (print errors/warnings while in event loop)
-P <file> save PID in <file>, only used with -d option
要关掉memcached
- kill -9 `cat /var/run/memcached.pid`
是否正常?Telnet上去看看
- telnet xxx.xxx.xxx.xxx 11211
然后输入
- stats
接着就能看到:
STAT pid 3021
STAT uptime 3621
STAT time 1331261509
STAT version 1.4.13
STAT libevent 2.0.17-stable
STAT pointer_size 64
STAT rusage_user 0.000000
STAT rusage_system 0.000999
STAT curr_connections 6
STAT total_connections 7
STAT connection_structures 7
STAT reserved_fds 20
STAT cmd_get 0
STAT cmd_set 0
STAT cmd_flush 0
STAT cmd_touch 0
STAT get_hits 0
STAT get_misses 0
STAT delete_misses 0
STAT delete_hits 0
STAT incr_misses 0
STAT incr_hits 0
STAT decr_misses 0
STAT decr_hits 0
STAT cas_misses 0
STAT cas_hits 0
STAT cas_badval 0
STAT touch_hits 0
STAT touch_misses 0
STAT auth_cmds 0
STAT auth_errors 0
STAT bytes_read 72
STAT bytes_written 1038
STAT limit_maxbytes 52428800
STAT accepting_conns 1
STAT listen_disabled_num 0
STAT threads 4
STAT conn_yields 0
STAT hash_power_level 16
STAT hash_bytes 524288
STAT hash_is_expanding 0
STAT expired_unfetched 0
STAT evicted_unfetched 0
STAT bytes 0
STAT curr_items 0
STAT total_items 0
STAT evictions 0
STAT reclaimed 0
END
上面状况说明Memcached服务正常。
还可以试试get、set、delete、replace
bar (数据)
STORED (结果)
get foo (取得命令)
VALUE foo 0 3 (数据)
bar (数据)
输入
- quit