- Memcache概述
memcache:是高性能的分布式内存缓存服务器.通过缓存数据库的查询结果,减少数据库的访问次数,以提高web应用的速度,提高可扩展性.缓存方式是将缓存结果存储在内存中,通过内存来维护一个hash表.
Memcache是一个c/s软件,默认间通过端口为11211 - Memcache工作原理
1.memcached是以守护程序方式运行于一个或多个服务器中,随时会接收客户端的连接和操作。
2.如何减轻数据库压力:当web访问数据库时,首先会先访问Memcache缓存服务器,查找是否有相应的数据,若没有则去访问数据库查询,返回结果给web应用并且再Memcache服务器留一份缓存,如果web访问Memcache服务器查询得到相应数据,就不会再去访问数据库,以此来减轻数据库的I/O。 - Memcache作为高速运行的分布式内存缓存服务器,具有以下几点
1> 本身是开源的,占用资源小,协议简单的软件,将数据库和web之间的数据缓存,减少数据库的检索次数,减少数据库的i/o
2> 基于livevent的时间处理,因为libevent库将linux,bsd,solaris等这些操作系统上的kqueue等时间处理功能功能封装成统一接口,面对连接数增加,也能在linux,bsd,solaris等操作系统上发挥其高性能(i/o).
3> 存储方式:内置于内存存储方式,存取的效率高,执行的速度快
4> memcache不互相通信的分布式:同个客户端使得key有规律的封装,实现memcache实现分布式,采用多台cached服务器,增加缓存的横向延伸 - Memcache具体实现方式
Memcached 的目前版本是通过C实现,采用了单进程,单线程,异步I/O,基于事件 (event_based) 的服务方式.使用 libevent 作为事件通知实现。多个 Server 可以协同工作,但这些 Server 之间是没有任何通讯联系的,每个 Server 只是对自己的数据进行管理。Client 端通过指定 Server 端的 ip 地址(通过域名应该也可以)。需要缓存的对象或数据是以 key->value 对的形式保存在Server端。key 的值通过 hash 进行转换,根据 hash 值把 value 传递到对应的具体的某个 Server 上。当需要获取对象数据时,也根据 key 进行。首先对 key 进行 hash,通过获得的值可以确定它被保存在了哪台 Server 上,然后再向该 Server 发出请求。Client 端只需要知道保存 hash(key) 的值在哪台服务器上就可以了。 memcache的工作就是在专门的机器的内存里维护一张巨大的hash表,来存储经常请求的数据。 - 安装Memcache
1 安装libevent时
./configure –prefix=/usr/local/libevent
Make && make install
2 安装memcached
./configure –prefix=/usr/local/memcached –with-libevent=/usr/local/libevent
Make && make install - 管理Memcache
启动Memcache:
/usr/local/bin/memcached -d -m 2048 -u root -l 192.168.1.20 -p 12111 -c 1024 -P /tmp/memcached.pid
停止Memcache:
kill ‘cat /tmp/memcached.pid’;
Kill all memcached
参数说明:
-d 启动为守护进程
-m分配给Memcached使用的内存数量,单位是MB,默认为64MB
-u运行Memcached的用户,仅当作为root运行时
-l <ip_addr> 监听的服务器IP地址,默认为环境变量INDRR_ANY的值
-p设置Memcached监听的端口,最好是1024以上的端口
-c设置最大并发连接数,默认为1024
-P设置保存Memcached的pid文件,与-d选择同时使用