|
Memcached熟悉全过程
1、下载我是从这下载的:http://code.google.com/p/memcached/downloads/detail?name=memcached-1.4.15.tar.gz&can=2&q=
2、安装
下载到的是tar.gz文件,我的是mac电脑。
进入Memcached的目录,./configure提示要先安装libevent
到这里http://libevent.org/下载了libevent
后对libevent, memcached执行下面三个命令安装完成
./configure
make
sudomake install进行安装
3、安装完之后就是启动Memcached
启动命令:
memcached-d – m 1024 -l 127.0.0.1 -p 99999
4、启动完后用telnet测试是否能连接
telnet127.0.0.1 99999
5、测试成功之后就可以使用memcached的命令和服务器交互了。
如:添加keyvalue
add username 0 0 10
test
getusername
add:在memcached中添加值
get:在memcached中获取值
6、Memcached的数据都是缓存在内存中,所以重启memcached和电脑重启都会导致缓存全部消失,当缓存内容满了之后,会自动根据自有的算法回收利用的。
7、Memcached多个实例之间本身不会进行通信,所以本身没有实现分布式的功能,而应用如果要实现多实例的memcached的分布式功能的话,那得看客户端的实现。
8、Memcached启动有很多参数,而且作用很大,学习它们的作用和使用也非常重要。
-p:Memcached的监听端口号,不设置的话Memcached默认的的11211
-U:监听的upd端口,0的时候表示关闭,默认是11211
-l:监听的IP地址,不写的话所有的IP都能访问,写了的话只这这IP能访问,要是有多
个IP用逗号分隔或者用多个-l就行了,实际应用中应当都是要配置的,不能让任何机器都能访问我们的memcached服务器,只有指定的机器可以访问。
*有时候不配置想让只有固定的机器才能访问的话,可以配置电脑的防火墙只能固定
的电脑IP访问。
-d:以后台的方式运行,不占用终端。
-m:最大可使用的内存。
…....
9、关闭memached,只要找到它对应 的进程号使用kill命令就行了。进程号的找法可以这样
psaux| grep memached这样找到,然后Kill就行了。
10、用的mac电脑很多时候有些操作没有root权限无法执行好像,让我很多时候有些测试
无法进行,之后干脆在里面装了个虚拟机进行一些测试。
如:在mac中,eclipse下集成tomcat,tomcat无法用80端口起,要在终端用sudo才行
如:在mac中开memcached-l只能是本机才能起来,有其它IP无法运行起来
11、memcache具体有哪些参数和作用可以用memcached-h来查看,里面的英文也都是比较好理解的。
12、对于系统中常用memached来说,可以把Memached的一些常用操作写成shell,perl...角本的形式放在服务器上,这样能更有效的进行管理。
13、memached是基于文本行的协议,所以任何用户任何程序语言通过tcp协议都能和memcached服务器进行交互
如:写一个最简单的JAVA调用memcachedget命令取数据
publicstaticvoidmain(String[]args) throwsException
{
Socketsocket =newSocket("10.211.55.3",11211);
OutputStreamout = socket.getOutputStream();
InputStreaminput = socket.getInputStream();
byte[]bytes ="getusername\r\n".getBytes("utf-8");
out.write(bytes);
out.flush();
byte[]rs =newbyte[1024];
intn = input.read(rs);
System.out.println(newString(rs,0,n));
}
这程序能获取到在memcached中key值是username的value,返回结果进行打印如下:
VALUEusername 0 3
aaa
END
当然很多时候,我们是用一些成熟的别人写好的客户端程序可能。
14、memcached命令
set:设置值,如果要设置的key已经存在,则被新的值覆盖
如setusername 0 0 5
username是key,后面几个是参数,依次表示:额外的Key-value信息,缓存时间(0代表永久,单位秒),大小(单位字节).
stats:可以详细的查看Memcached的各种信息和使用情况。
Add:不存在添加,存在不做任何操作
replace:存在就覆盖,不存在就不做任何操作
get:获取存在的值
delete:删除已缓存的值
gets:和get差不多,返回信息多点
flush_all:清空所有已缓存的数据。
15、Memcached内存分配的方式有自己的模式,在使用它的时候,根据实际要缓存的东西情况,去调整内存的分配方式,更有效的利用内存,如-f选项有一定这方面的功能,
16、当memcached内存用尽和时候,内存回收方式是利用LRU算法进行代替。数据的缓存时间过期了的话,数据并不会从缓存中清除,只是说你在get的时候,Memcached会判断该数据是否已经过期,如果过期就不会返回了。当新数据进行存储,memcached会优先使用过期的数据内存空间,当内存真的没有过期的数据而又满的情况下就用LRU的方式进行数据的删除存储
版权声明:本文为博主原创文章,未经博主允许不得转载。 |
|
|