Memcached缓存集群_创建多实例

1.首先在在服务端增加两个缓存实例,如192.168.120.101:11214和192.168.120.102:11215,空间分配可按实际需求定。

2.JAVA客户端导入

下载地址:http://files.cnblogs.com/files/zhougaojun/MemClient.zip

3.缓存集群配置:memcached11212.xml

<?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="mclient1" compressEnable="true" defaultEncoding="UTF-8" socketpool="pool1">
        <errorHandler>com.alisoft.xplatform.asf.cache.memcached.MemcachedErrorHandler</errorHandler>
    </client>

    <socketpool name="pool0" failover="true" initConn="5" minConn="5" maxConn="5000" maintSleep="0"
        nagle="false" socketTO="36000" aliveCheck="true">
        <servers>192.168.120.101:11214</servers>
    </socketpool> 

    <socketpool name="pool1" failover="true" initConn="5" minConn="5" maxConn="5000" maintSleep="0"
        nagle="false" socketTO="36000" aliveCheck="true">
        <servers>192.168.120.102:11215</servers>
    </socketpool> 

    <cluster name="cluster1" mode="active"> <!--mode = active,standby-->
        <memCachedClients>mclient0,mclient1</memCachedClients>
    </cluster>

</memcached>

memcached11212.xml

4.写工具类操作缓存

package com.zqgame.adreport.front.memcached;

import java.util.Date;

import com.alisoft.xplatform.asf.cache.IMemcachedCache;

/**
 * 读取memcached11212.xml文件的工具类
 * 版权拥有:深圳中青宝互动网络股份有限公司 <br>
 * ====================================== <br>
 *               修改记录 <br>
 * ====================================== <br>
 *  序号    姓名      日期      版本           简单描述 <br>
 *
 */
public class MemcachedUtil11212 {

    /**
     * 往Cache中添加动态key
     * @param name
     * @return
     */
    public static boolean addDyncKeyToCache(String key, String keyValue, Date date){
        boolean bln = false;
        if (keyValue != null && !"".equals(keyValue)){
            IMemcachedCache cache = InitCacheManager11212.getInstance();
            bln = cache.add(key, keyValue, date);
        //    logger.info("--add keyValue:" + keyValue + "-->" + bln);

        }
        return bln;
    }

    public static boolean addDyncKeyToCache(String key, Object keyValue, Date date){
        boolean bln = false;
        if (keyValue != null && !"".equals(keyValue)){
            IMemcachedCache cache = InitCacheManager11212.getInstance();
            bln = cache.add(key, keyValue, date);
        //    logger.info("--add keyValue:" + keyValue + "-->" + bln);

        }
        return bln;
    }

    public static boolean addDyncKeyToCache(String key, Object keyValue, int milliseconds){
        boolean bln = false;
        if (keyValue != null && !"".equals(keyValue)){
            IMemcachedCache cache = InitCacheManager11212.getInstance();
            bln = cache.add(key, keyValue, new Date(milliseconds));
        //    logger.info("--add keyValue:" + keyValue + "-->" + bln);

        }
        return bln;
    }

    /**
     * 从Cache中取得动态key
     * @param name
     * @return
     */
    public static String getStringDyncKeyFromCache(String key){
        if (key != null && !"".equals(key)){
            IMemcachedCache cache = InitCacheManager11212.getInstance();
            Object obj = cache.get(key);
            if(obj != null){
                return obj.toString();
            }
        }
        return null;
    }

    /**
     * 从Cache中取得动态key
     * @param name
     * @return
     */
    public static Object getDyncKeyFromCache(String key){
        if (key != null && !"".equals(key)){
            IMemcachedCache cache = InitCacheManager11212.getInstance();
            Object obj = cache.get(key);

            if(obj != null){
                return obj;
            }
        }
        return null;
    }

    /**
     * 判断cache中是否含有key
     * @param name
     * @return
     */
    public static boolean containsKey(String key){
        if (key != null && !"".equals(key)){
            IMemcachedCache cache = InitCacheManager11212.getInstance();
            return cache.containsKey(key);
        }
        return false;
    }

    /**
     * 不存在则增加,存在则更新
     *
     * @param key
     * @param value
     * @return
     * @author:xuhaidui
     * @date:2012-4-28
     */
    public static boolean addOrReplace(String key, Object value){
        if (key != null && !"".equals(key)){
            if(containsKey(key)){
                replace(key,value);
            }else{
                addCache(key,value);
            }

        }
        return false;
    }

    /**
     * 更新值
     * @param key
     * @param value
     * @return
     */
    public static boolean replace(String key, String value){
        if (key != null && !"".equals(key)){
            IMemcachedCache cache = InitCacheManager11212.getInstance();
            return cache.replace(key, value);
        }
        return false;
    }

    /**
     * 更新值
     * @param key
     * @param value
     * @return
     */
    public static boolean replace(String key, Object value){
        if (key != null && !"".equals(key)){
            IMemcachedCache cache = InitCacheManager11212.getInstance();
            return cache.replace(key, value);
        }
        return false;
    }

    /**
     * 更新值
     * @param key
     * @param value
     * @return
     */
    public static boolean replace(String key, String value, Date date){
        if (key != null && !"".equals(key)){
            IMemcachedCache cache = InitCacheManager11212.getInstance();
            return cache.replace(key, value, date);
        }
        return false;
    }

    /**
     * 更新值
     * @param key
     * @param value
     * @return
     */
    public static boolean replace(String key, Object value, Date date){
        if (key != null && !"".equals(key)){
            IMemcachedCache cache = InitCacheManager11212.getInstance();
            return cache.replace(key, value, date);
        }
        return false;
    }

    /**
     * 更新值
     * @param key
     * @param value
     * @return
     */
    public static boolean replace(String key, Object value, int milliseconds){
        if (key != null && !"".equals(key)){
            IMemcachedCache cache = InitCacheManager11212.getInstance();
            return cache.replace(key, value, new Date(milliseconds));
        }
        return false;
    }

    public static boolean addCache(String key, String value){
        if (key != null && !"".equals(key)){
            IMemcachedCache cache = InitCacheManager11212.getInstance();
            return cache.add(key, value);
        }
        return false;
    }

    public static boolean addCache(String key, Object value){
        if (key != null && !"".equals(key)){
            IMemcachedCache cache = InitCacheManager11212.getInstance();
            return cache.add(key, value);
        }
        return false;
    }

    /**
     * 删除
     * @param key
     * @return Object
     */
    public static Object remove(String key){
        if (key != null && !"".equals(key)){
            IMemcachedCache cache = InitCacheManager11212.getInstance();
            if(cache.containsKey(key))
            {
                Object object = cache.remove(key);
        //        logger.info("--remove key:" + key) ;
                return object;
            }
        }
        return null;
    }

}

MemcachedUtil11212.java

package com.zqgame.adreport.front.memcached;

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;

public class InitCacheManager11212 {
    private static ICacheManager<IMemcachedCache> manager11212;

    static {
            manager11212 = CacheUtil.getCacheManager(IMemcachedCache.class,
            MemcachedCacheManager.class.getName());
            manager11212.setConfigFile("memcached11212.xml");
            manager11212.setResponseStatInterval(5*1000);
            manager11212.start();
    }

    public static IMemcachedCache getInstance(){
        return manager11212.getCache("mclient0");
    }
}

InitCacheManager11212.java

5.使用方法:

MemcachedUtil11212.addCache(cacheKey,list);

时间: 2024-10-11 06:46:08

Memcached缓存集群_创建多实例的相关文章

nginx+tomact+memcached(缓存)集群

关于Nginx+tomcat+memcached(缓存)配置集群负载均衡的下载与安装流程: 实现的整体步骤 一:安装memcached.(memcached可以一个或者多个) 二:安装两个tomcat 三:配置msm. 四:安装nginx,实现负载均衡. 以下是详细步骤: 第一步:安装memcached 1.       下载memcached服务端memcached-1.2.6-win32-bin.zip,地址:csdn 第二步:安装tomcat 1.       安装两个tomcat6,如果

EhCache 分布式缓存/缓存集群

开发环境: System:Windows JavaEE Server:tomcat5.0.2.8.tomcat6 JavaSDK: jdk6+ IDE:eclipse.MyEclipse 6.6 开发依赖库: JDK6. JavaEE5.ehcache-core-2.5.2.jar Email:[email protected] Blog:http://blog.csdn.net/IBM_hoojo http://hoojo.cnblogs.com/ http://hoojo.blogjava.

Redis缓存集群方案

由于单台Redis服务器的内存管理能力有限,使用过大内存的Redis又会使得服务器的性能急剧下降,一旦服务器发生故障将会影响更大范围业务,而Redis 3.0 beta1支持的集群功能还不适合生产环境的使用.于是为了获取更好的Redis缓存性能及可用性,很多公司都研发了Redis缓存集群方案.现对NetFlix.Twitter.国内的豌豆荚在缓存集群方面的解决方案进行一个汇总,以供读者参考,具体内容如下: 1.NetFlix对Dynamo的开源通用实现Dynomite Dynomite是NetF

Redis学习笔记(11)——Redis缓存集群方案

由于单台Redis服务器的内存管理能力有限,使用过大内存的Redis又会使得服务器的性能急剧下降,一旦服务器发生故障将会影响更大范围业务,而Redis 3.0 beta1支持的集群功能还不适合生产环境的使用.于是为了获取更好的Redis缓存性能及可用性,很多公司都研发了Redis缓存集群方案.现对NetFlix.Twitter.国内的豌豆荚在缓存集群方面的解决方案进行一个汇总,以供读者参考,具体内容如下: 1.NetFlix对Dynamo的开源通用实现Dynomite Dynomite是NetF

Redis3缓存集群(cluster)搭建

Redis3以后支持Cluster特性:1.节点自动发现:2.slave->master 选举,集群容错:3.Hot resharding:在线分片:4.进群管理:cluster xxx:5.基于配置(nodes-port.conf)的集群管理:6.ASK 转向/MOVED 转向机制. 集群搭建技术知识点 Redis服务端口:用于接收客户端连接或客户端请求命令的端口,如:9579. Redis集群通信端口:用于Redis内部更新交流状态的端口,为当前服务器端口+10000,如19579. Red

Nginx+Memcached+Tomcat集群配置

1.   Nginx Nginx是通过将多个Web Server绑定到同一个IP地址下,以实现多个WebServer间的负载均衡,降低单个Web Server的负荷,以提高整体的性能与稳定性. 安装和配置Nginx的简单方式如下: 1)      下载并解压Nginx到本地目录:http://nginx.org/en/download.html 2)      对Nginx的配置主要是对它的配置文件/conf/nginx.conf的修改.如下链接是nginx.conf配置文件各个属性的详细说明:

memcached构建集群分析之一

memcached本身是不支持集群的,集群所关注的容灾.容错.宕机恢复机制统统都没有,实战中需要自己实现容灾机制. memcached集群相比memcached的优势: 巨量数据分布到集群的多台应用主机可以降低带宽压力.数据访问时间. memcached集群相比未集群的多台memcached的优势: 集群系统的容灾机制保证了全天候的业务高可用性. 集群的某一台或者某几台服务器宕机,都会有备份服务器接管业务,根据容灾的级别,对客户的影响被隔离到无影响.闪断即恢复.中断数分钟~十数分钟. 集群封装了

Apache2.4+Tomcat集群_反向代理配置

Apache2.4+Tomcat集群_反向代理配置 测试环境:Apache反代做为前端反向代理,后端任意,此处我用做windwos,其实linux与windwos配置原理都一样,只是根据公司需求来做. 需求:        要求基于ssl访问, 301域名跳转, session sticky方式来接收请求, 有故障隔离的作用,以至于在其中一台上线时可以把用户请求转发到另一台. 1.资源下载: Apache(windows安装包)下载路径 http://www.apachelounge.com/d

MemCached Client集群方案

MemCached Client集群方案 By mingjun Hou Cluster的实现 Memcached作为集中式Cache,就存在着集中式的致命问题:单点问题,Memcached支持多Instance分布在多台机器上,仅仅 只是解决了数据全部丢失的问题,但是当其中一 台机 器出错以后,还是会导致部分数据的丢失,一个篮子掉在地上还是会把部分的鸡蛋打破.因此就需要实现一个备份机制,能够保证Memcached在部分失效以后,数据还能够 依然使用,因 此做Cluster也是必要的. (1)