`

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相关资料及spring配置文件和封装接口和类

    private MemcachedService memcachedService; public void saveToCache(String key, Object value) { memcachedService.set(key, value); } public Object retrieveFromCache(String key) { return memcached...

    windwos server memcached

    在命令行窗口中,使用管理员权限运行以下命令来创建一个名为 "MemcachedService" 的服务: ``` memcached.exe -d install -m 64 -p 11211 -l 127.0.0.1 ``` 这里 `-m` 参数指定分配的内存(单位MB), `-p` 指定...

    memcached win32 and win64

    sc create Memcached binPath= "C:\Program Files\memcached\memcached.exe" DisplayName= "Memcached Service" ``` 对于64位系统,将"binPath"中的"memcached.exe"替换为"memcached64.exe"。 3. 创建服务后,...

    在CentOS 5.3上安装Memcached服务及相应的PHP扩展memcache

    service memcached start ``` **二、安装PHP的`memcache`扩展** 接下来,我们要在PHP环境中安装`memcache`扩展: 1. 获取PHP的源代码,如果你还没有安装PHP,可以使用`php53`这个老版本的源代码: ```shell ...

    memcached安装包以及MemCachedClient

    sudo service memcached start ``` **2. libevent 库** libevent 是一个事件通知库,Memcached 可以依赖它实现异步非阻塞I/O。当在编译 Memcached 时,如果选择使用 libevent 模式,可以提高其性能和可扩展性。...

    查看、分析memcached使用状态

    Memcached 是一个高效的分布式内存对象缓存系统,它能够显著减轻数据库的负担。本文将深入探讨 Memcached 的使用及其状态分析。 首先,Memcached 以其内存存储机制著称,这使得它在读取速度上远超于传统的硬盘存储...

    windows下memcached+memcached.dll 5.3.8

    3. **配置Memcached**: 在Windows环境下,不像Linux那样使用服务管理命令,你需要手动创建一个批处理文件或使用第三方工具(如`nssm - the Non-Sucking Service Manager`)将`memcached.exe`作为Windows服务运行。...

    memcached安装软件 libevent magent memcached

    4. 可以通过`sudo service memcached start|stop|restart`来管理服务了。 最后,别忘了配置magent与运行中的memcached服务连接。根据magent的文档,配置好后,你可以通过Web浏览器访问magent的监控界面,通常默认...

    Memcached使用--使用

    3. **启动与停止**:使用命令行工具如`memcached`或`service memcached start/stop/restart`来启动、停止或重启服务。 **三、Memcached客户端** 1. **语言支持**:Memcached有多种编程语言的客户端库,如PHP、...

    linux memcached安装

    假设您已经将包含Memcached客户端的应用程序(如enshopcache)部署到Tomcat的`webapps`目录下,接下来需要配置相关的Spring配置文件`spring-cache-service.xml`以便让应用程序能够正确地连接到Memcached服务。...

    memcached实例

    sudo service memcached start ``` 4. 配置 Memcached 以在启动时自动运行: ``` sudo systemctl enable memcached ``` ### 二、安装 Memcached 客户端 Memcached 提供了多种语言的客户端库,如 Python、PHP...

    Memcached缓存技术资料源码

    3. **启动与停止**: 使用`service memcached start/stop/restart`命令进行服务的启停。 **四、使用方法** 1. **客户端库**: 多种编程语言(如Python、Java、PHP、Ruby)都有对应的客户端库,通过这些库可以方便地...

    memcached-1.5.12.tar.gz

    - 要停止 memcached 服务,可以使用 `sudo service memcached stop` 或 `sudo systemctl stop memcached`。 - 对于长期运行的生产环境,建议配置 memcached 作为系统服务,以便于管理和维护。 以上就是关于 ...

    linux memcached安装资源

    sudo service php-fpm restart ``` 六、测试和配置 现在可以测试Memcached是否工作正常。在终端中运行以下PHP脚本: ```php $memcache = new Memcache; $memcache-&gt;connect('localhost', 11211); echo "Connected...

    memcached安装包以及java所需的memcached架包

    4. **启动服务**:安装完成后,可以通过系统的初始化脚本启动memcached服务,例如在Unix/Linux系统中使用`sudo service memcached start`。 5. **验证运行**:你可以使用`netstat -tulnp | grep memcached`命令检查...

    SpringMVC和memcached整合

    5. **缓存注解**:在服务层(Service)或DAO层的方法上使用Spring的`@Cacheable`、`@CacheEvict`等注解,实现缓存的自动管理和更新。例如,在`getUser`方法上添加`@Cacheable`注解,当调用该方法时,结果会被自动...

    Memcached的Linux和Windows安装包

    sudo nano /etc/systemd/system/memcached.service ``` 在文件中添加以下内容: ``` [Unit] Description=Memcached Daemon After=network.target [Service] User=memcached ExecStart=/usr/local/bin/...

    memcached安装错误解决文件

    Memcached是一款广泛使用的开源分布式内存缓存系统,它能够提高应用程序的性能,通过将数据存储在内存中,减少对数据库的访问,从而加快了数据的读取速度。本篇文章将针对“memcached安装错误”这一主题,详细解析...

    linux下memcached的启动/结束的方式

    除了使用`systemctl`,还可以使用`service`命令来管理Memcached,特别是在较旧的Linux发行版上: ```bash sudo service memcached start sudo service memcached stop sudo service memcached restart sudo service...

    memcached启动错误解决

    sudo service memcached start ``` **二、启动错误分析** 当memcached无法启动时,通常会有错误日志提供线索。查看日志文件(通常是/var/log/memcached.log或/var/log/messages),以获取错误信息。例如,端口冲突...

Global site tag (gtag.js) - Google Analytics