码迷,mamicode.com
首页 > 其他好文 > 详细

memcached使用详解

时间:2014-08-18 14:18:22      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   使用   io   for   ar   

    最近为了解决系统性能问题,研究了一下memcache。由于其可以独立部署不占用JVM资源,其优越性可得而知,更由于memcached支持分布式部署这也使得可以实现超大内存服务器。具体memcache是哪个高手之作,再次不在赘述。

    memcached的分布式有个奇怪的特点是其分布式的方式有客户端决定,所以客户端算法显得格外重要(hash算法 主流consist),笔者在此不在多说,有兴趣的可以下去研究。下面开始讲如何使用(后续会把源代码上传)。

1. 创建连接池设置相应参数

  

public class MemcacheClientBean {

    static MemCachedClient mClient;

    static {
        // 获取socket连接池的实例对象
        SockIOPool ioPool = SockIOPool.getInstance();
        // 服务器列表和其权重
        String[] servers = { "192.168.6.40:11211", "192.168.6.40:11212" };
        Integer[] weights = { 3 };
        // 设置服务器信息
        ioPool.setServers(servers);
        ioPool.setWeights(weights);

        // 设置初始连接数、最小和最大连接数以及最大处理时间
        ioPool.setInitConn(5);
        ioPool.setMinConn(5);
        ioPool.setMaxConn(250);
        ioPool.setMaxIdle((1000 * 60 * 60L));
        // 设置主线程的睡眠时间,单位为秒
        ioPool.setMaintSleep(30);
        ioPool.setNagle(false);
        // 连接建立后的超时时间
        ioPool.setSocketTO(3000);
        // 连接建立时的超时时间
        ioPool.setSocketConnectTO(0);
        // 初始化连接池
        ioPool.initialize();

    }
    public static MemCachedClient getClient() {

        mClient = new MemCachedClient();
        mClient.setPrimitiveAsString(true);

        return mClient;
    }
}

不管是DB还是缓存,只要涉及到连接数及资源的限制设置都会涉及到连接池,所有请求由连接池统一管理。

2. 使用memcache常用方法 set get add replace等等

    

public class MClientTest {
    MemCachedClient mClient;
    boolean isOK = false;

    @Before
    public void init() {
        mClient = MemcacheClientBean.getClient();
    }

    @Test
    public void testSetCache() {
        isOK = mClient.set("test", "不错");
        System.out.println(isOK ? ">>>>>>>>>>>>>>set ok" : ">>>>>>>>>>>>>>set fail");
    }

    @Test
    public void testGetCache() {
        System.out.println(mClient.get("test"));
    }

    @Test
    public void testAddCache() {
//        isOK = mClient.add("test", "你好");
        isOK = mClient.add("test2", "你好");
        System.out.println(isOK ? ">>>>>>>>>>>>>>add ok" : ">>>>>>>>>>>>>>add fail");
    }
    @Test
    public void testReplaceCache() {
        isOK = mClient.replace("test2", "我很好");
        System.out.println(isOK ? ">>>>>>>>>>>>>>replace ok" : ">>>>>>>>>>>>>>replace fail");
    }
    @Test
    public void testFlushCache() {
        String[] caches = new String[10];
        caches[0] = new String("test");
        isOK = mClient.flushAll();
        System.out.println(isOK ? ">>>>>>>>>>>>>>flush ok" : ">>>>>>>>>>>>>>flush fail");
    }
    @Test
    public void testFlushAllCache() {
        isOK = mClient.flushAll();
        System.out.println(isOK ? ">>>>>>>>>>>>>>flush all ok" : ">>>>>>>>>>>>>>flush all fail");
    }

}

基本使用就是这样,是不是很easy!后续会讲解memcache如何跟spring结合使用!

代码地址: http://files.cnblogs.com/dmc-tec/memcache-demo.rar

    

memcached使用详解,布布扣,bubuko.com

memcached使用详解

标签:style   blog   http   color   使用   io   for   ar   

原文地址:http://www.cnblogs.com/dmc-tec/p/3919314.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!