1.上传安装包

libevent-2.0.22-stable.tar.gz

memcached-1.4.24.tar.gz

2.安装libevent

创建目录

mkdir -p /apps/install/libevent

解压

tar -zxvf libevent-2.0.22-stable.tar.gz -C /apps/install/libevent

安装

cd libevent-2.0.22-stable/

./configure \

--prefix=/usr/local/libevent/

make

make install

3.安装memcached

创建目录

mkdir -p /apps/install/memcached

解压

tar -zxvf /apps/softWare/memcached/memcached-1.4.24.tar.gz -C /apps/install/memcahced/

安装

cd memcached-1.4.24/

./configure \

--prefix=/usr/local/memcached/ \
--with-libevent=/usr/local/libevent/

make

make install

4.启动memcached

/usr/local/memcached/bin/memcached -d -m 10 -u root -l 127.0.0.1 -p 12000 -c 256 -P /tmp/memcached.pid

5.测试

a.安装telnet,telnet-server

查看是否有telnet

rpm -qa|grep telnet

没有

安装telnet

yum -y install telnet

测试

telnet localhost 12000

缓存key1

set key1 0 60 4

helloworld

获取缓存key1

get key1

退出编辑

ctrl+]

退出telnet

quit

6.集群测试

服务器:

192.168.158.129

192.168.158.128

在这2台服务器上分别开启2个端口

192.168.158.129:12011

192.168.158.129:12012

192.168.158.128:12021

192.168.158.128:12022

分别启动这4个实例

/usr/local/memcached/bin/memcached -d -m 10 -u root -l 192.168.158.128 -p 12011 -c 256 -P /tmp/memcached1.pid
/usr/local/memcached/bin/memcached -d -m 10 -u root -l 192.168.158.128 -p 12012 -c 256 -P /tmp/memcached2.pid
/usr/local/memcached/bin/memcached -d -m 10 -u root -l 192.168.158.129 -p 12021 -c 256 -P /tmp/memcached1.pid
/usr/local/memcached/bin/memcached -d -m 10 -u root -l 192.168.158.129 -p 12022 -c 256 -P /tmp/memcached2.pid

集群配置

<?xml version="1.0" encoding="UTF-8"?>
<memcached>
<client name="mclient0" compressEnable="true" defaultEncoding="UTF-8" socketpool="pool0">
<errorHandler>com.alisoft.xplatform.asf.cache.memcached.MemcachedErrorHandler</errorHandler>
</client> <client name="mclient0-back" compressEnable="true" defaultEncoding="UTF-8" socketpool="pool0-back">
<errorHandler>com.alisoft.xplatform.asf.cache.memcached.MemcachedErrorHandler</errorHandler>
</client> <socketpool name="pool0" failover="true" initConn="20" minConn="20" maxConn="100" maintSleep="0"
nagle="false" socketTO="3000" aliveCheck="true">
<servers>192.168.158.129:12011,192.168.158.128:12021</servers>
</socketpool> <socketpool name="pool0-back" failover="true" initConn="20" minConn="20" maxConn="100" maintSleep="0"
nagle="false" socketTO="3000" aliveCheck="true">
<servers>192.168.158.129:12012,192.168.158.128:12022</servers>
</socketpool> <cluster name="cluster1" mode="active"> <!-- //mode = active,standby -->
<memCachedClients>mclient0,mclient0-back</memCachedClients>
</cluster> </memcached>

主要API

package guo.test.MemcachedDemo;

import java.util.ArrayList;
import java.util.Date;
import java.util.List; import com.alisoft.xplatform.asf.cache.ICacheManager;
import com.alisoft.xplatform.asf.cache.IMemcachedCache;
import com.alisoft.xplatform.asf.cache.memcached.CacheUtil;
import com.alisoft.xplatform.asf.cache.memcached.MemcachedCacheManager; /**
* @author
* @create 2015-06-12
* @version 1.0
* @Function 基于alimemcachedClient 构建memcached集群的工具类,集群配置详见:memcached_cluster.xml.
*/
public class AliClusterCacheUtil {
private static ICacheManager<IMemcachedCache> manager;
public static IMemcachedCache cache; //开放cache,仅为了部分同志存在个性化需求。
static{
manager = CacheUtil.getCacheManager(IMemcachedCache.class,MemcachedCacheManager.class.getName());
String configFile=Config.getConfig("memcached_session_configPath");
manager.setConfigFile(configFile);
manager.start();
cache = manager.getCache("mclient0");
} /**
* 保存数据
* @param key
* @param value
* @return
*/
public static void put(String key,Object value){
cache.put(key, value);
} /**
* 保存有有效期的数据
* @param key
* @param value
* @param 设置有效期为距离当前时间后TTL秒。
* @return
*/
public static void put(String key,Object value,int TTL){
cache.put(key, value, TTL);
} /**
* 保存有有效期的数据
* @param key
* @param value
* @param 有效期(取的是客户端时间)
* @return
*/
public static void put(String key,Object value,Date date){
cache.put(key, value, date);
} /**
* 获取缓存数据
* @param key
* @return Object
*/
public static Object get(String key){
return cache.get(key);
} /**
* 移出缓存数据
* @param key
* @return Object
*/
public static Object remove(String key){
return cache.remove(key);
} /**
* 删除所有缓存内的数据
* @return boolean
*/
public static boolean clear(){
return cache.clear();
} /**
* 是否包含了指定key的数据
* @param key
* @return boolean
*/
public static boolean containsKey(String key){
return cache.containsKey(key);
} /**
* 释放Cache占用的资源
*/
public static void destroy(){
cache.destroy();
} /**
* 降低memcache的交互频繁造成的性能损失,因此采用本地cache结合memcache的方式
* @param key
* @param 本地缓存该数据有效秒数
* @return
*/
public static Object get(String key,int localTTL){
return cache.get(key, localTTL);
} /**
* 动态重新载入配置文件,可用于实现动态扩容。
*/
public static void reload(String configfile){
manager.reload(configfile);
} public static void main(String[] args) {
AliClusterCacheUtil.put("guo", "you are the sun");
String key = (String) AliClusterCacheUtil.get("guo");
System.out.println("get the value is:"+key); List list = new ArrayList();
list.add("a");
list.add("b");
AliClusterCacheUtil.put("list", list);
List tmp = (List) AliClusterCacheUtil.get("list");
System.out.println("get the list is:"+tmp);
}
}

运行

AliClusterCacheUtil.java 中的main方法进行测试,能够正常缓存与获取,当遇到异常,一台缓存服务器宕机或一个实例异常,可以正常切换。

集群满足要求。

MemcachedDemo 在百度云盘中

地址:  http://pan.baidu.com/s/1nuAcuPN

可参考:

http://www.tashan10.com/memcachedda-jian-huan-cun-xi-tong/

http://www.cnblogs.com/wayne173/p/5652034.html

memcached集群安装与测试的更多相关文章

  1. [bigdata] spark集群安装及测试

    在spark安装之前,应该已经安装了hadoop原生版或者cdh,因为spark基本要基于hdfs来进行计算. 1. 下载 spark:  http://mirrors.cnnic.cn/apache ...

  2. Hadoop2.8分布式集群安装与测试

    1.hadoop2.x 概述 个).每一个都有相同的职能.一个是active状态的,一个是standby状态的.当集群运行时,只有active状态的NameNode是正常工作的,standby状态的N ...

  3. CentOS6.3编译安装Memcached集群分布式缓存代理Magent-0.6出错汇总

    参考文章:Memcached集群/分布式/高可用 及 Magent缓存代理搭建过程 详解,搭建Magent,在编译的过程中会出现很多错误: #编译安装安装magent到 /usr/local/mage ...

  4. kafka 集群安装与安装测试

    一.集群安装 1. Kafka下载:wget https://archive.apache.org/dist/kafka/0.8.1/kafka_2.9.2-0.8.1.tgz 解压 tar zxvf ...

  5. kafka2.9.2的伪分布式集群安装和demo(java api)测试

    目录: 一.什么是kafka? 二.kafka的官方网站在哪里? 三.在哪里下载?需要哪些组件的支持? 四.如何安装? 五.FAQ 六.扩展阅读   一.什么是kafka? kafka是LinkedI ...

  6. ubuntu12.04+kafka2.9.2+zookeeper3.4.5的伪分布式集群安装和demo(java api)测试

    博文作者:迦壹 博客地址:http://idoall.org/home.php?mod=space&uid=1&do=blog&id=547 转载声明:可以转载, 但必须以超链 ...

  7. Dubbo入门到精通学习笔记(十五):Redis集群的安装(Redis3+CentOS)、Redis集群的高可用测试(含Jedis客户端的使用)、Redis集群的扩展测试

    文章目录 Redis集群的安装(Redis3+CentOS) 参考文档 Redis 集群介绍.特性.规范等(可看提供的参考文档+视频解说) Redis 集群的安装(Redis3.0.3 + CentO ...

  8. Memcached集群/分布式/高可用 及 Magent缓存代理搭建过程 详解

    当网站访问量达到一定时,如何做Memcached集群,又如何高可用,是接下来要讨论的问题. 有这么一段文字来描述“Memcached集群” Memcached如何处理容错的? 不处理!:) 在memc ...

  9. Nginx+Tomcat+MemCached 集群配置手册

    系统实施文档 Nginx+Tomcat+MemCached 集群配置手册 目    录 第1章   概述 1.1   目标 互联网的快速发展带来了互联网系统的高负载和高可用性, 这要求我们在设计系统架 ...

随机推荐

  1. [Shiro] - Shiro之进阶

    上一个知识点ssm, 哪里需要权限,哪里写注解@RequirePermission就行. 但是,真正项目开发的时候, 这种方式就很有局限性了, 当权限配置关系发生变化, 每次都要修改代码, 编译打包重 ...

  2. substring()的用法和注意事项

    作者原创:转载请注明出处 substring()方法的作用为截取字符串,其有两种用法: 分别如下: substring(int beginIndex);这个的作用为截取从beginindex位置处的元 ...

  3. 【TCP/IP详解 卷一:协议】第一章概论 学习笔记

    第一章 概述 游览了一下,本章主要是简介OSI模型的低层(1-4层).介绍了TCP/IP协议族的相关知识. TCP/IP的分层 Application <--> TCP / UDP < ...

  4. SPOJ 375 Query on a tree(树链剖分)

    https://vjudge.net/problem/SPOJ-QTREE 题意: 给出一棵树,树上的每一条边都有权值,现在有查询和更改操作,如果是查询,则要输出u和v之间的最大权值. 思路: 树链剖 ...

  5. HDU 2242 考研路茫茫——空调教室(边双连通分量+树形dp+重边标号)

    http://acm.hdu.edu.cn/showproblem.php?pid=2242 题意: 思路:首先求一下双连通分量,如果只有一个双连通分量,那么无论断哪根管子,图还是连通的. 最后只需要 ...

  6. 翻译header

    !/usr/bin/env pyhton --coding:utf-8-- import urllib.request import urllib.parse import os,sys import ...

  7. 肿瘤基因组学数据库终结者:cBioPortal---转载

    转载自:http://blog.sciencenet.cn/blog-1509670-1000479.html 随着芯片和高通量测序技术的广泛应用,在肿瘤研究领域积累了越来越多的基因组学数据,特别是像 ...

  8. CRLF line terminators导致shell脚本报错:command not found --转载

    Linux和Windows文本文件的行结束标志不同.在Linux中,文本文件用"/n"表示回车换行,而Windows用"/r/n"表示回车换行.有时候在Wind ...

  9. Codeforces Beta Round #94 div 2 B

    B. Students and Shoelaces time limit per test 2 seconds memory limit per test 256 megabytes input st ...

  10. ubuntu 14.04 server 能ping通,但不能ssh

    ssh是一种安全协议,主要用于给远程登录会话数据进行加密,保证数据传输的安全,我们可以很方便的用ssh链接工具连接远程服务器进行相关操作,但是在享受这种方便的同时我们需要进行一些配置. 首先我们需要在 ...