Package org.springside.modules.memcached

Source Code of org.springside.modules.memcached.JmemcachedServer

/**
* Copyright (c) 2005-2010 springside.org.cn
*
* Licensed under the Apache License, Version 2.0 (the "License");
*
* $Id: JmemcachedServer.java 1222 2010-09-14 16:44:57Z calvinxiu $
*/
package org.springside.modules.memcached;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;

import net.spy.memcached.AddrUtil;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.thimbleware.jmemcached.Cache;
import com.thimbleware.jmemcached.MemCacheDaemon;
import com.thimbleware.jmemcached.storage.hash.LRUCacheStorageDelegate;

/**
* JMemcached的封装, 主要用于功能测试.
* 注意JMemcached对二进制协议支持不好, 尽量使用文本协议.
*
* @author calvin
*/
public class JmemcachedServer {

  private static Logger logger = LoggerFactory.getLogger(JmemcachedServer.class);

  private MemCacheDaemon jmemcached;

  private String serverUrl = "localhost:11211";

  private int maxItems = 1024;
  private long maxBytes = 1024 * 2048;
  private long ceilingSize = 2048;

  @PostConstruct
  public void start() throws Exception {

    logger.info("Initializing JMemcached Daemon");

    LRUCacheStorageDelegate cacheStorage = new LRUCacheStorageDelegate(maxItems, maxBytes, ceilingSize);

    jmemcached = new MemCacheDaemon();
    jmemcached.setCache(new Cache(cacheStorage));
    jmemcached.setAddr(AddrUtil.getAddresses(serverUrl).get(0));
    jmemcached.setBinary(false);
    jmemcached.start();
    logger.info("Initialized JMemcached Daemon");
  }

  @PreDestroy
  public void stop() throws Exception {
    logger.info("Shutting down Jmemcached Daemon");
    jmemcached.stop();
  }

  public void setServerUrl(String serverUrl) {
    this.serverUrl = serverUrl;
  }

  public void setMaxItems(int maxItems) {
    this.maxItems = maxItems;
  }

  public void setMaxBytes(long maxBytes) {
    this.maxBytes = maxBytes;
  }

  public void setCeilingSize(long ceilingSize) {
    this.ceilingSize = ceilingSize;
  }
}
TOP

Related Classes of org.springside.modules.memcached.JmemcachedServer

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.