在公司开发中,我们需要将用户id、短信验证码等信息缓存起来,方便快速使用,减少服务器资源占用。这里是公司开发的CacheProxy缓存代理工具类。
所谓缓存,就是将程序或系统经常要调用的对象存在内存中,一遍其使用时可以快速调用,不必再去创建新的重复的实例。这样做可以减少系统开销,提高系统效率。
使用jar包:jedis-2.5.3 缓存服务工具类
1.缓存代理类CacheProxy
package com.yuanding.common.cache;
import com.yuanding.common.util.Constants;
/**
*
* 缓存代理
*/
public class CacheProxy extends ShardedRedisProxy implements ICacheProxy {
public String pop(int queueType) {
String result = "";
switch(queueType) {
case Constants.SMS_TYPE:
result = lpop(CacheConstant.SMS_MESSAGE_QUEUE);
break;
case Constants.EMAIL_TYPE:
result = lpop(CacheConstant.EMAIL_MESSAGE_QUEUE);
break;
case Constants.INNER_LETTER_TYPE:
result = lpop(CacheConstant.INNER_LETTER_MESSAGE_QUEUE);
break;
default:
break;
}
return result;
}
public Long push(int queueType, String value) {
Long result = null;
switch(queueType) {
case Constants.SMS_TYPE:
result = rpush(CacheConstant.SMS_MESSAGE_QUEUE, value);
break;
case Constants.EMAIL_TYPE:
result = rpush(CacheConstant.EMAIL_MESSAGE_QUEUE, value);
break;
case Constants.INNER_LETTER_TYPE:
result = rpush(CacheConstant.INNER_LETTER_MESSAGE_QUEUE, value);
break;
default:
break;
}
return result;
}
}
2.缓存服务代理
package com.yuanding.common.cache;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import redis.clients.jedis.ShardedJedis;
import redis.clients.jedis.ShardedJedisPool;
/**
*
* 本实现为分片Redis缓存服务代理
*/
public class ShardedRedisProxy implements IRedisProxy {
/**
* 日志
*/
protected Log log = LogFactory.getLog(this.getClass());
/**
* 缓存连接池
*/
private ShardedJedisPool shardedJedisPool;
public Long append(String key, String value) {
ShardedJedis shardedJedis = null;
Long ret = null;
try {
shardedJedis = shardedJedisPool.getResource();
ret = shardedJedis.append(key, value);
} catch (Exception e) {
log.error(this, e);
} finally {
shardedJedisPool.returnResource(shardedJedis);
}
return ret;
}
public Long decr(String key) {
ShardedJedis shardedJedis = null;
Long ret = null;
try {
shardedJedis = shardedJedisPool.getResource();
ret = shardedJedis.decr(key);
} catch (Exception e) {
log.error(this, e);
} finally {
shardedJedisPool.returnResource(shardedJedis);
}
return ret;
}
public Long decrBy(String key, long integer) {
ShardedJedis shardedJedis = null;
Long ret = null;
try {
shardedJedis = shardedJedisPool.getResource();
ret = shardedJedis.decrBy(key, integer);
} catch (Exception e) {
log.error(this, e);
} finally {
shardedJedisPool.returnResource(shardedJedis);
}
return ret;
}
public Long del(String key) {
ShardedJedis shardedJedis = null;
Long ret = null;
try {
shardedJedis = shardedJedisPool.getResource();
ret = shardedJedis.del(key);
} catch (Exception e) {
log.error(this, e);
} finally {
shardedJedisPool.returnResource(shardedJedis);
}
return ret;
}
public Boolean exists(String key) {
ShardedJedis shardedJedis = null;
Boolean ret = null;
try {
shardedJedis = shardedJedisPool.getResource();
ret = shardedJedis.exists(key);
} catch (Exception e) {
log.error(this, e);
} finally {
shardedJedisPool.returnResource(shardedJedis);
}
return ret;
}
public Long expire(String key, int seconds) {
ShardedJedis shardedJedis = null;
Long ret = null;
try {
shardedJedis = shardedJedisPool.getResource();
ret = shardedJedis.expire(key, seconds);
return ret;
} catch (Exception e) {
log.error(this, e);
} finally {
shardedJedisPool.returnResource(shardedJedis);
}
return ret;
}
public Long expireAt(String key, long unixTime) {
ShardedJedis shardedJedis = null;
Long ret = null;
try {
shardedJedis = shardedJedisPool.getResource();
ret = shardedJedis.expireAt(key, unixTime);
} catch (Exception e) {
log.error(this, e);
} finally {
shardedJedisPool.returnResource(shardedJedis);
}
return ret;
}
public String get(String key) {
ShardedJedis shardedJedis = null;
String ret = null;
try {
shardedJedis = shardedJedisPool.getResource();
ret = shardedJedis.get(key);
} catch (Exception e) {
log.error(this, e);
} finally {
shardedJedisPool.returnResource(shardedJedis);
}
return ret;
}
public String getSet(String key, String value) {
ShardedJedis shardedJedis = null;
String ret = null;
try {
shardedJedis = shardedJedisPool.getResource();
ret = shardedJedis.getSet(key, value);
} catch (Exception e) {
log.error(this, e);
} finally {
shardedJedisPool.returnResource(shardedJedis);
}
return ret;
}
public String getrange(String key, long startOffset, long endOffset) {
ShardedJedis shardedJedis = null;
String ret = null;
try {
shardedJedis = shardedJedisPool.getResource();
ret = shardedJedis.getrange(key, startOffset, endOffset);
} catch (Exception e) {
log.error(this, e);
} finally {
shardedJedisPool.returnResource(shardedJedis);
}
return ret;
}
public Long hdel(String key, String field) {
ShardedJedis shardedJedis = null;
Long ret = null;
try {
shardedJedis = shardedJedisPool.getResource();
ret = shardedJedis.hdel(key, field);
} catch (Exception e) {
log.error(this, e);
} finally {
shardedJedisPool.returnResource(shardedJedis);
}
return ret;
}
public Boolean hexists(String key, String field) {
ShardedJedis shardedJedis = null;
Boolean ret = null;
try {
shardedJedis = shardedJedisPool.getResource();
ret = shardedJedis.hexists(key, field);
} catch (Exception e) {
log.error(this, e);
} finally {
shardedJedisPool.returnResource(shardedJedis);
}
return ret;
}
public String hget(String key, String field) {
ShardedJedis shardedJedis = null;
String ret = null;
try {
shardedJedis = shardedJedisPool.getResource();
ret = shardedJedis.hget(key, field);
} catch (Exception e) {
log.error(this, e);
} finally {
shardedJedisPool.returnResource(shardedJedis);
}
return ret;
}
public Map<String, String> hgetAll(String key) {
ShardedJedis shardedJedis = null;
Map<String, String> ret = null;
try {
shardedJedis = shardedJedisPool.getResource();
ret = shardedJedis.hgetAll(key);
} catch (Exception e) {
log.error(this, e);
} finally {
shardedJedisPool.returnResource(shardedJedis);
}
return ret;
}
public Long hincrBy(String key, String field, long value) {
ShardedJedis shardedJedis = null;
Long ret = null;
try {
shardedJedis = shardedJedisPool.getResource();
ret = shardedJedis.hincrBy(key, field, value);
} catch (Exception e) {
log.error(this, e);
} finally {
shardedJedisPool.returnResource(shardedJedis);
}
return ret;
}
public Set<String> hkeys(String key) {
ShardedJedis shardedJedis = null;
Set<String> ret = null;
try {
shardedJedis = shardedJedisPool.getResource();
ret = shardedJedis.hkeys(key);
} catch (Exception e) {
log.error(this, e);
} finally {
shardedJedisPool.returnResource(shardedJedis);
}
return ret;
}
public Long hlen(String key) {
ShardedJedis shardedJedis = null;
Long ret = null;
try {
shardedJedis = shardedJedisPool.getResource();
ret = shardedJedis.hlen(key);
} catch (Exception e) {
log.error(this, e);
} finally {
shardedJedisPool.returnResource(shardedJedis);
}
return ret;
}
public List<String> hmget(String key, String... fields) {
ShardedJedis shardedJedis = null;
List<String> ret = null;
try {
shardedJedis = shardedJedisPool.getResource();
ret = shardedJedis.hmget(key, fields);
} catch (Exception e) {
log.error(this, e);
} finally {
shardedJedisPool.returnResource(shardedJedis);
}
return ret;
}
public String hmset(String key, Map<String, String> hash) {
ShardedJedis shardedJedis = null;
String ret = null;
try {
shardedJedis = shardedJedisPool.getResource();
ret = shardedJedis.hmset(key, hash);
} catch (Exception e) {
log.error(this, e);
} finally {
shardedJedisPool.returnResource(shardedJedis);
}
return ret;
}
public Long hset(String key, String field, String value) {
ShardedJedis shardedJedis = null;
Long ret = null;
try {
shardedJedis