/** * 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; } }