redisUtil

package com.jx.core.cache;

import java.util.concurrent.TimeUnit;

import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.support.atomic.RedisAtomicLong;

/**
 * redis操作工具类
 * 
 * @author wenminggao
 * 
 */
@SuppressWarnings({ "unchecked", "resource" })
public class RedisUtil {

	private static Logger log = Logger.getLogger(RedisUtil.class);

	public static final int ONE_DAY = 60 * 60 * 24;
	public static final int FIVE_MINUTES = 5 * 60;
	public static final int ONE_HOUR = 60 * 60;

	private static RedisTemplate<String, Object> redisTemplate;

	static {
		try {
			ApplicationContext context = new ClassPathXmlApplicationContext("spring/applicationContext-cache.xml");
			redisTemplate = (RedisTemplate<String, Object>) context.getBean("redisTemplate");
		} catch (RuntimeException e) {
			e.printStackTrace();
		}

	}

	/**
	 * 加入缓存
	 * 
	 * @param key
	 *            键
	 * @param value
	 *            值
	 * @param expireTime
	 *            失效时间(秒)
	 * @return
	 */
	public static boolean addCache(String key, Object value, int expireTime) {
		if (StringUtils.isEmpty(key) || StringUtils.equals(key, "{}") || value == null || expireTime <= 0) {
			return false;
		}

		try {
			redisTemplate.opsForValue().set(key, value, expireTime, TimeUnit.SECONDS);
		} catch (Exception e) {
			log.error(String.format("redis set operation for value failed by key [%s]: %s", key, e.getMessage()));
		}

		return true;
	}

	public static Object getCache(String key) {

		if (StringUtils.isEmpty(key)) {
			return null;
		}
		Object object = null;
		try {
			object = redisTemplate.opsForValue().get(key);
		} catch (Exception e) {
			log.error(String.format("redis get operation for value failed by key [%s]: %s", key, e.getMessage()));
			return object;
		}
		if (object != null && object.toString().equals("{}")) {
			object = null;
		}
		return object;
	}

	public static boolean removeKey(String key) {
		boolean b = false;
		if (StringUtils.isEmpty(key)) {
			return b;
		}
		try {
			redisTemplate.delete(key);
			b = true;
		} catch (Exception e) {
			log.error(String.format("redis get operation for value failed by key [%s]: %s", key, e.getMessage()));
		}

		return b;
	}

	/**
	 * key值递增
	 * 
	 * @param key
	 * @return
	 */
	public static String incrementAndGet(String key) {
		if (StringUtils.isNotEmpty(key)) {
			RedisAtomicLong entityIdCounter = new RedisAtomicLong(key, redisTemplate.getConnectionFactory());
			return String.valueOf(entityIdCounter.incrementAndGet());
		} else
			return "";
	}

}


你可能感兴趣的:(redisutil)