Memcached 是一个高性能的分布式内存对象缓存系统,用于动态 Web 应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached 是基于一个存储 key / value 的 hashmap。

Memcached安装
安装环境

CentOS 6.5
libevent-2.0.22-stable.tar.gz
memcached-1.4.24.tar.gz

安装 libevent

memcached 依赖 libevent 库,检查 libevent 是否已安装
[root@localhost ~]## rpm -qa | grep libevent
到 libevent 官网下载所需版本的安装文件
[root@localhost ~]# tar zxvf libevent-2.0.22-stable.tar.gz
[root@localhost ~]# cd libevent-2.0.22-stable
[root@localhost libevent-2.0.22-stable]# ./configure –prefix=/usr/local/libevent
[root@localhost ~]# make
[root@localhost ~]# make install

安装 memcached

到 memcached 官网下载所需版本的安装文件
[root@localhost ~]# tar zxvf memcached-1.4.24.tar.gz
[root@localhost memcached-1.4.24]# cd memcached-1.4.24
[root@localhost memcached-1.4.24]# ./configure –prefix=/usr/local/memcached –with-libevent=/usr/local/libevent/
[root@localhost memcached-1.4.24]# make
[root@localhost memcached-1.4.24]# make install

启动 memcached

[root@localhost memcached-1.4.24]# /usr/local/memcached/bin/memcached -d -m 128 -u root -p 11211 -c 1024 –P /tmp/memcached.pid
启动参数 描述
-d 启动一个守护进程
-m 分配给 memcached 的内存大小,单位 MB
-u 启动 memcached 的用户
-c 最大运行的并发连接数
-p 设置 memcached 监听的端口
-P 设置保存 memcached 的 pid 文件

查看 memcached

[root@localhost memcached-1.4.24]# ps -ef | grep memcached

关闭 memcached

[root@localhost memcached-1.4.24]# ps -ef | grep memcached

root 92911009:09 ? 00:00:00 /usr/local/memcached/bin/memcached -d -m 128 -u root -p 11211 -c 1024 –P /tmp/memcached.pid

[root@localhost memcached-1.4.24]# kill -99291

防火墙开启 11211 端口

[root@localhost memcached-1.4.24]# vi /etc/sysconfig/iptables
加入如下一行配置
-A INPUT -m state –state NEW -m tcp -p tcp –dport 11211 -j ACCEPT
重启防火墙服务
[root@localhost memcached-1.4.24]# service iptables restart

基于 memcached 的 tomcat 集群之 session 共享
实现在多台服务器之间共享 session 会话中的数据。

JAR 包
asm-4.0.jar
kryo-1.04.jar
minlog-1.2.jar
reflectasm-1.04.jar
kryo-serializers-0.10.jar
spymemcached-2.8.12.jar
couchbase-client-1.1.4.jar
msm-kryo-serializer-1.6.4.jar
memcached-session-manager-1.6.4.jar
memcached-session-manager-tc7-1.6.4.jar

  • 配置

将 JAR 包全部放到 $Tomcat/lib 目录下($Tomcat 表示 Tomcat 安装的根目录,以下同)。
编辑 $Tomcat/conf/context.xml 文件,在 节点下加入如下配置

1
2
3
4
5
6
7
8
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:192.168.1.102:11211,n2:192.168.1.103:11211"
sticky="false"
lockingMode="auto"
sessionBackupAsync= "false"
sessionBackupTimeout="300"
requestUriIgnorePattern= ".*\.(png|gif|jpg|ico|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory" />

  • memcachedNodes-
    必须项

配置 memcached 节点。格式:::,多个节点之间,用空格或英文逗号分隔

  • sticky

可选项
是否粘性。默认为 true。粘性会话需要保证每个用户的请求都路由到同一台 Tomcat 服务器中。否则,需要设置成非粘性会话。

  • lockingMode

可选项
用于非粘性会话。默认为 none。
可选值 描述
none 不锁定 session
all 每个请求访问 session 的期间,session 一直被锁定,直到请求结束
auto 只锁定写请求的 session,只读请求的 session 不会被锁定
uriPattern: 通过正则表达式的方式来对请求的 URI 进行匹配,匹配上的会被锁定

  • sessionBackupAsync

可选项
设置 session 会话中的数据是否异步同步到 memcached 中,默认为 true。

  • requestUriIgnorePattern

可选项
设置忽略会话同步的请求的 URI 地址的正则表达式。这应该包含静态资源的请求。

  • failoverNodes

可选项
memcached 故障转移节点配置。用于粘性会话,非粘性会话不可用。如:
failoverNodes=”n1”,含义是告诉 msm 将 session 会话中的数据存储到 memcached 的 n2 节点中,如果 n2 节点宕掉等致使其不能正常提供服务,msm 才会将 session 会话中的数据存储到 memcached 的 n1 节点中。
sessionAttributeFilter

可选项
配置同步 session 会话数据的属性名称的正则表达式。如果不设置,则将 session 中全部的属性保存到 memcached 中。

  • transcoderFactoryClass

可选项
配置序列化和反序列化 session 会话中的数据到 memcached 中的编码转换器的工厂类名。
默认是 de.javakaffee.web.msm.JavaSerializationTranscoderFactory

  • backupThreadCount

可选项
用于异步存储 session 会话中的数据到 memcached 中的线程数。(当 sessionBackupAsync=”true” 时,该配置项有效)

  • sessionBackupTimeout

可选项
备份 session 会话数据所需时间如果大于该值,将导致 session 会话数据同步失败。默认为 100(单位毫秒)

以上由基友整理,博客地址为:http://fanlychie.github.io

Comments

2016-01-05