1 memcached是一个高性能的分布式内存对象缓存系统,用于动态web应用以减轻数据库负载,他通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态,数据库驱动网站的速度。Memcached是基于一个存储key-value对的hashmap,
2 memcached拥有一个简单的key value来存储守护进程,安装该服务后,应用程序需要通过编程方式才能使用该服务。很多编程语言都提供 了客户端的接口来与服务器进行交互
一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、提高可扩展性
3 客户端与memcached服务器交互
Telnet localhost 11211
4 memcache:
Memcache是一个自由和开放源代码、高性能、分配的内存对象缓存系统。用于加速动态web应用程序,减轻数据库负载。它可以应对任意多个连接,使用非阻塞的网络IO。由于它的工作机制是在内存中开辟一块空间,然后建立一个Hash表,Memcached自管理这些Hash表
5 安装并启动
yum install -y memcached
systemctl start memcached
如果系统简略就用:
memcached -d -u root -l 172.17.0.6 -m 2048 -p 12121
6 复制库到tomcat
[root@localhost tmp]# docker cp lib.tar 054ff06cdda4:/tmp
[root@054ff06cdda4 tmp]# tar xf lib.tar -C .
[root@054ff06cdda4 tmp]# cp lib/* /apache-tomcat-7.0.61/lib/
[root@dd29511abdfb conf]# pwd
/apache-tomcat-7.0.61/conf
[root@dd29511abdfb conf]# vi server.xml
<!-- You should set jvmRoute to support load-balancing via AJP ie :
<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">
-->
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat2">
7 修改页面并重启tomcat
[root@054ff06cdda4 apache-tomcat-7.0.61]# vi webapps/ROOT/index.jsp
<!DOCTYPE html>
<!--<%@ page session="true" %>-->
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy");
request.setAttribute("year", sdf.format(new java.util.Date()));
request.setAttribute("tomcatUrl", "http://tomcat.apache.org/");
request.setAttribute("tomcatDocUrl", "/docs/");
request.setAttribute("tomcatExamplesUrl", "/examples/");
%>
<html lang="en">
<head></head>
<body>
SessionID:<%=session.getId()%>
<br/>
SessionIP:<%=request.getServerName()%>
<br/>
<h1>tomcat1 page</h1>
</body>
</html>
[root@054ff06cdda4 apache-tomcat-7.0.61]# bin/catalina.sh start
8 关联memcached跟tomcat
[root@dd29511abdfb conf]# vi context.xml
增加
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:172.17.0.6:12121"
sticky="false"
lockingMode="auto"
sessionBackupAsync="false"
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
sessionBackupTimeout="1000" transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory" />
------------------------------------------
需要注意的是:
memcachedNodes="n1:172.17.0.6:12121"; 关联的memcached的节点及端口
className="de.javakaffee.web.msm.MemcachedBackupSessionManager" 表示引用的java类