memcached是一种高性能的分布式内存缓存服务器。一般的使用目的是通过缓存数据查询结果,减少数据库访问次数,以提高动态weib应用的速度/提高可扩增性。memcached有以下特点:
libevent是个程序库,他将linux的epoll,BSD类操作系统的Kqueue等事件处理功能封装成统一的接口。即使对服务器的连接数增加,也能发挥O(1)的性能。
为了提高性能,memcached中保存的数据都存储在memcached内置的内存存储空间中。由于数据仅存在于内存中,因此重启memcached或者重启操作系统会导致全部数据消失。另外,内容容量达到定植后,就基于LRU(最近最少使用)算法自动删除不使用的缓存。memcached本身是为缓存设计的服务器,因此并没有过多考虑数据的永久性问题
memcached尽管是分布式缓存服务器,但服务器端并没有分布式功能。各个memcached不会互相通信以共享信息。
首先去下载libevent,可以到http://libevent.org/上下载最新的源文件。解压到一个位置然后使用命令:
cd libevent ./configure make sudo make install命令第一行的“libenvent”换成你解压的文件夹
这样就安装好了libevent
接下来下载memcached http://memcached.org/,解压,然后和上面一样,运行configure,make,make install命令
启动memcached:./memcached -d -m 2048 -l 127.0.0.1 -p 10000
解释一下: -d:启动一个守护线程,-m表示分配给memcached使用的内存,单位是MB;-l是监听服务器的ip地址;-p是设置memcached监听的端口;-c可以设置最大并发连接数;-P是设置保存memcached的pid文件
连接到memcached: telnet localhost 10000
如果配置正常,会看到:connected to localhost
基本的memcached命令:
set
add
replace
get
delete
命令语法:
command 《key》 <flags> <expiration time> <bytes>
<value>
key和hash表的key是一样的概念
flags存储关于键值对的额为信息
expiration time:在缓存中保存的时间,0表示永远
bytes在缓存中存储的字节点
value位于第二行,存储的值
如:
set userId 0 0 6
123456
STORED
使用set命令向服务器添加了一个键值对,如果添加成功,会返回STORED;如果已经存在这样的键,则覆盖
add命令在仅当缓存中不存在这个键值时,才会添加,如果缓存中已经存在,则不添加,服务器会返回NOT_STORED
replace仅当键存在时才会替换
get则是根据键值获取value
delete删除制定的键值对
stats命令可以统计数据,比如查看缓存命中率,使用这个命令可以看到memcached的一些状态,如get_hits和get_missed分别表示缓存命中次数和缓存失效次数
flush_all命令是清理缓存中所有键值对
如何关闭memcashed客户端呢?ctrl+]