package com.gxx.record.service.impl; import net.rubyeye.xmemcached.MemcachedClient; import org.apache.commons.lang3.StringUtils; import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.gxx.record.service.MemcachedService; /** *
*
Title:
*
* memcached服务实现类 *
*
Description:
*
*

none *

*
* * @author Administrator * @version 1.0, 2015年7月23日 * @since record * */ @Service("memcachedService") public class MemcachedServiceImpl implements MemcachedService { /** * 日志处理器 */ private final Logger logger = Logger.getLogger(MemcachedServiceImpl.class); private int expires = 3600;//默认过期时间 单位秒 1个小时 @Autowired private MemcachedClient memcachedClient; /** * 仅当存储空间中不存在键相同的数据时才保存 * @param key * @param value */ public void addWithNoReply(String key, T value) { this.addWithNoReply(key, expires, value); } /** * 设置键值对 * @param key key * @param expires 单位:秒,0 表示永不过期 * @param value 必须是一个可序列化的对象, 可以是容器类型如:List,但容器里面保存的对象必须是可序列化的 */ public void addWithNoReply(String key, int expires, T value) { if (StringUtils.isEmpty(key)) return; try { if (memcachedClient != null) { memcachedClient.addWithNoReply(key, expires, value); } } catch(Exception e) { logger.error(e.getMessage(), e); } } /** * 无论何时都保存 * @param key * @param value */ public void set(String key, T value) { this.set(key, expires, value); } /** * 设置键值对 * @param key key * @param expires 单位:秒,0 表示永不过期 * @param value 必须是一个可序列化的对象, 可以是容器类型如:List,但容器里面保存的对象必须是可序列化的 */ public void set(String key, int expires, T value) { if (StringUtils.isEmpty(key)) return; try { if (memcachedClient != null) { memcachedClient.set(key, expires, value); } } catch(Exception e) { logger.error(e.getMessage(), e); } } /** * 根据key获得值 * @param key key * @return value */ @SuppressWarnings("unchecked") public T get(String key) { try { if (!StringUtils.isEmpty(key) && memcachedClient != null) { return (T)memcachedClient.get(key); } } catch(Exception e) { logger.error(e.getMessage(), e); } return null; } }