`

MemcachedService

 
阅读更多
package com.yulong.memcached.service;

import java.io.InputStream;
import java.net.URL;
import java.util.Date;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Properties;

import org.apache.log4j.Logger;

import com.danga.MemCached.MemCachedClient;
import com.danga.MemCached.SockIOPool;

public class MemcachedService
{
   
    static Logger logger = Logger.getLogger(MemcachedService.class);
    static
    {
        init();
    }
    private static MemCachedClient mcc = new MemCachedClient();
   
    public static void init()
    {
        String[] servers = {};
       
        long maxBusyTime = 1000 * 60 * 2;
        int initConn = 10;
        int minConn = 5;
        int maxConn = 250;
        long maintSleep = 30;
        int hashingAlg = 3;
       
        try
        {
            URL url = MemcachedService.class.getResource("/memcached/servers.properties");
            InputStream is = null;
            if (url != null)
            {
                is = url.openStream();
            }
            if (is == null)
                is = MemcachedService.class.getResourceAsStream("/memcached/servers.properties");
            Properties prop = new Properties();
            prop.load(is);
           
            servers = prop.getProperty("servers").split(",");
           
            maxBusyTime = Long.valueOf(prop.getProperty("maxBusyTime") == null ? "" : prop.getProperty("maxBusyTime"));
            initConn = Integer.parseInt(prop.getProperty("initConn") == null ? "" : prop.getProperty("initConn"));
            minConn = Integer.parseInt(prop.getProperty("minConn") == null ? "" : prop.getProperty("minConn"));
            maxConn = Integer.parseInt(prop.getProperty("maxConn") == null ? "" : prop.getProperty("maxConn"));
            maintSleep = Long.parseLong(prop.getProperty("maintSleep") == null ? "" : prop.getProperty("maintSleep"));
            hashingAlg = Integer.parseInt(prop.getProperty("hashingAlg") == null ? "" : prop.getProperty("hashingAlg"));
           
            logger.info("memcached servers:" + prop.getProperty("servers"));
           
            SockIOPool pool = SockIOPool.getInstance();
            pool.setServers(servers);
            pool.setMaxBusyTime(maxBusyTime);
            pool.setInitConn(initConn);
            pool.setMinConn(minConn);
            pool.setMaxConn(maxConn);
            pool.setMaintSleep(maintSleep);
            pool.setHashingAlg(hashingAlg);
           
            pool.setFailover(true);
            pool.setNagle(false);
            pool.setSocketTO(3000);
            pool.setAliveCheck(false);
           
            pool.initialize();
        }
        catch (Exception e)
        {
            logger.error(e.getMessage());
            for (StackTraceElement element : e.getStackTrace())
            {
                logger.error(element);
            }
        }
       
    }
    /**
     * 系统专用
     * @param key
     * @param value
     * @return
     */
    public static Object setParam(Object key, Object value)
    {
        return set("P" + (String) key, value);
    }
   
    /**
     * 获得memcached服务器的状态
     */
//    public static String getServerStatus()
//    {
//        mch = new MccErrorHandler();
//        mch.handleErrorOnStats(mcc, null);
////        mcc.setErrorHandler(mch);
//        mcc.set("test", "test");
//        mcc.replace("test", "test");
//        if (mch.getStatus().equals("ok"))
//        {
//            return "ok";
//        }
//        else
//        {
//            return "outOfService";
//        }
//    }
   
    /**
     * 系统专用
     * @param key
     * @param value
     * @return
     */
    public static Object setParam(String key, Object value)
    {
       
        return set("P" + key, value);
    }
   
    public static Object set(Object key, Object value)
    {
       
        return set((String) key, value);
    }
   
    public static Object set(String key, Object value)
    {
//        mch = new MccErrorHandler();
//        mcc.setErrorHandler(mch);
        mcc.set(key, value);
        mcc.replace(key, value);
//        if (mch.getStatus().equals("ok"))
//        {
            return value;
//        }
//        else
//        {
//            return "error";
//        }
    }
   
    public static void putAll(Map<? extends String, ? extends Object> m)
    {
        for (String key : m.keySet())
        {
            set(key, m.get(key));
        }
    }
   
    public static Object removeGroup(Object key)
    {
        return remove("G" + (String) key);
    }
   
    public static Object removeParam(Object key)
    {
        return null;// 系统不可移除
    }
   
    public static Object remove(Object key)
    {
        return remove((String) key);
    }
   
    public static Object remove(String key)
    {
//        mch = new MccErrorHandler();
//        mcc.setErrorHandler(mch);
        Object value = mcc.get(key);
        mcc.delete(key);
//        if (mch.getStatus().equals("ok"))
//        {
            return value;
//        }
//        else
//        {
//            return "error";
//        }
    }
   
    public static boolean replace(String key, Object value)
    {
        boolean result = false;
//        mch = new MccErrorHandler();
//        mcc.setErrorHandler(mch);
        result = mcc.replace(key, value);
//        if (mch.getStatus().equals("ok"))
//        {
            return result;
//        }
//        else
//        {
//            return false;
//        }
       
    }
   
    public static Object get(Object key)
    {
        return get((String) key);
    }
   
    public static Object get(String key)
    {
//        mch = new MccErrorHandler();
//        mcc.setErrorHandler(mch);
        Object t = mcc.get(key);
//        if (mch.getStatus().equals("ok"))
//        {
            return t;
//        }
//        else
//        {
//            return "error";
//        }
    }
   
    /**
     * 系统专用
     * @param key
     * @return
     */
    public static Object getParam(Object key)
    {
        Object t = get("P" + (String) key);
        if (t != null && t.toString().equals("error"))
        {
            // TODO 获得对应的值
            return "error";
        }
        else
        {
            return t;
        }
    }
   
    /**
     * 系统专用
     * @param key
     * @return
     */
    public static Object getParam(String key)
    {
        return get("P" + key);
    }
   
    /**
     * 系统专用
     * @param groupName
     * @return
     */
    public static LinkedHashMap<String, Object> getGroup(String groupName)
    {
        Object group = get("G" + groupName);
        if (group != null && group.toString().equals("error"))
        {
            // 数据库存取
            return null;
        }
        else if (group == null)
        {
            return null;
        }
        else
        {
            return (LinkedHashMap<String, Object>) group;
        }
    }
   
    /**
     * 系统专用
     * @param groupName
     * @param group
     * @return
     */
    public static LinkedHashMap<String, Object> setGroup(String groupName, LinkedHashMap<String, Object> group)
    {
        String t = set("G" + groupName, group).toString();
        if (t.equals("error"))
        {
            return null;
        }
        replace("G" + groupName, group);
        return group;
    }
   
    public static boolean set(String key, Object value, Date expiry)
    {
        boolean result = false;
//        mch = new MccErrorHandler();
//        mcc.setErrorHandler(mch);
        result = mcc.set(key, value, expiry);
        result = mcc.replace(key, value, expiry);
        return result;
    }
   
    /**
     *
    * @Title: getAll
    * @Description: 批量获取数据
    * @param  key
    * @return boolean
    * @throws
     */
    public static Map<String,Object> getAll(String[] key){
        return mcc.getMulti(key);

    }
   
    /**
     *
    * @Title: getAllParam
    * @Description: TODO批量获取系统参数数据
    * @param keys
    * @return Map<String,Object>
    * @throws
     */
    public static Map<String,Object> getAllParam(String[] keys){
    for (int i=0;i<keys.length;i++){
    keys[i]="P"+keys[i];
        }
        return mcc.getMulti(keys);

    }
   
    /**
     *
    * @Title: getAllGroup
    * @Description: TODO批量获取系统代码数据
    * @param keys
    * @return Map<String,Object>
    * @throws
     */
    public static Map<String,Object> getAllGroup(String[] keys){
    for (int i=0;i<keys.length;i++){
    keys[i]="G"+keys[i];
        }
        return mcc.getMulti(keys);

    }
   
    public static boolean keyExists(String key)
    {
        boolean result = false;
//        mch = new MccErrorHandler();
//        mcc.setErrorHandler(mch);
        result = mcc.keyExists(key);
        return result;
    }
}
分享到:
评论

相关推荐

    memcached安装错误解决文件

    memcached安装错误解决文件

    查看、分析memcached使用状态

    访问量上升,数据库压力大,怎么办?好办法是在中间挡一层缓存!这个缓存要求高效,不能比数据库慢,否则服务质量受影响;如果能把数据用hash打散存储到硬盘,也是可以的,不过在内存越来越便宜的今天,还是使用内存...

    windows下的memcached 1.6.21,并且做成了windows的服务

    在windows下编译的最新的memcached 1.6.21 由于1.4.5以后的memcached不支持windows服务。 使用第三方工具做成了windows的服务 使用说明: 1、解压rar文件 2、以管理员身份运行cmd.exe 3、然后执行service_install....

    tomcat6 Memcached集群

    tomcat6 Memcached集群,sessoin共享。修改下tomcat下conf/service.xml中的web指向路径即可

    memcached安装和使用详细说明

    memcached安装和使用详细说明 一、开启memcached服务器端服务 二、引入jar 三、创建memcached客户端配置文件 四、创建memcached客户端程序 五、使用Spring AOP在数据查询的Service层实现数据缓存及读取

    CentOS 7.x安装部署Memcached服务器的详细方法

    实现目的:安装部署Memcached服务器 一、防火墙设置 CentOS 7.x默认使用的是firewall作为防火墙,这里改为iptables防火墙。 1、关闭firewall: systemctl stop firewalld.service #停止firewall systemctl disable ...

    serviceapi电商

    我的电商平台,memcached、nginx、api、web、tomcat、jboss

    crud-service:基本的rubysinatra CRUD服务gem,使用MySQL和可选的memcache

    杂项服务介绍crud-service提供了一些类,用于使用Sinatra,MySQL和memcached实现基本的JSON CRUD服务。用法gem旨在提供一组类,以为给定数量MySQL实体生成简单MySQL / Memcached支持的RESTful CRUD API。入门你应该...

    docs-on-clearance:启用您的 Apache Web 服务器以提供呈现为 HTML 的 Markdown

    安装先决条件: sudo apt-get install ruby-redcarpet ruby-memcache-client memcachedsudo service memcached start在您的 cgi-bin 目录中安装Markdown.cgi sudo cp Markdown.cgi /usr/lib/cgi-binsudo chmod +x /...

    ZendFramework中文文档

    4.4.3. Zend_Cache_Backend_Memcached 4.4.4. Zend_Cache_Backend_Apc 4.4.5. Zend_Cache_Backend_ZendPlatform 5. Zend_Config 5.1. 简介 5.2. 操作理论 5.3. Zend_Config_Ini 5.4. Zend_Config_Xml 6. ...

    Search-Ads-Web-Service

    •开发的Search Ads工作流支持:查询理解,从倒排索引中选择广告,广告排名,广告过滤器,广告定价,使用Java,Jetty,MySQL,MemCached,gRPC进行广告分配。 •具有加权随机抽样算法(Python)的反向工程搜索日志...

    openstack 重启的服务命令整理总结

    openstack重启的服务命令集合  最近公司项目需要使用Openstack 由于Openstack 重启...service memcached restart 2. 重启 ceilometer 2.1 cinder service mongod restart 2.2 controller service openstack-ceil

    应用性能管理工具Pinpoint.zip

    NingAsyncHttpClientThrift Client, Thrift ServiceMySQL, Oracle, MSSQL, CUBRID, DBCP, POSTGRESQLArcus, Memcached, RedisiBATIS, MyBatisgson, Jackson, Json Liblog4j, Logback构建要求:JDK 6 installedJDK 8 ...

    集群好书《高性能Linux服务器构建实战》 试读章节下载

    12.5.4 创建Service 12.5.5 配置存储集群GFS 12.5.6 配置表决磁盘 12.5.7 配置Fence设备 12.6 管理和维护RHCS集群 12.6.1 启动RHCS集群 12.6.2 关闭RHCS集群 12.6.3 管理应用服务 12.6.4 监控RHCS...

    win7下memCache的安装过程(具体操作步骤)

    –d install[提示错误:failed to install service or service already installed]解决方法:在系统盘中找到cmd.exe文件,点击右键,以管理员身份运行 3.输入命令,启动memcache服务H:/wamp/...

    aspnet Easyui开发框架源码

    3、系统用到缓存技术,MemCached和Redis这2种。 01 Reference DLL 这里主要包括第三方的框架和组件项目,把这些文件分门别类地集中放在此目录下。 02 Solution Items 项目的规范、流程、重要文件等。 03 Test 这里...

    网络架构师148讲视频课程

    │ 第12节:Service的实现以及模块化.avi │ 第13节:Spring MVC实现Web层开发.avi │ 第14节:新增和列表页面和分页tag.avi │ 第15节:带查询的分页、修改和删除页面.avi │ 第16节:Mybatis动态查询和Json自动...

    应用级产品开发平台APDPlat.zip

    18)、缓存使用EhCache或是Memcached。 19)、数据库连接池使用CommonsDBCP。 20)、Office文档操作使用POI。 21)、工作流使用Activiti。 22)、报表使用BIRT。 23)、Web资源优化使用wro4j。 24)、日志拦截使用...

    eureka:用于弹性中间层负载平衡和故障转移的AWS Service注册表

    为我们的memcached缓存服务标识环中的节点列表。 用于出于各种其他原因承载有关服务的其他其他特定于应用程序的元数据。建筑由于某些必需的库是java8 ( servo ),因此构建需要java8 ,但是源和目标兼容性仍设置为...

    glowmachine-docker:Dockerfile 创建一个容器,其中包含开发 GlowMachine 所需的所有环境

    注意: PostgreSQL、MongoDB、Memcached 和 RabbitMQ 的镜像将被 docker.io hub 自动重建并推送到 glow/&lt;servicename&gt;:latest 盐 使用脚本安装 salt。 Mac 安装 如果您使用的是 Mac,则可以。 brew 安装 有用的...

Global site tag (gtag.js) - Google Analytics