package com.appgree.core.redis.provider;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.apache.log4j.Logger;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.SortingParams;
import redis.clients.jedis.Tuple;
import redis.clients.jedis.ZParams;
import com.appgree.core.redis.domain.CacheKey;
/**
* The Class RedisRemoteProvider.
*/
public class RedisRemoteProvider extends RedisRemoteBaseProvider implements RedisProvider, RedisSentinelNotifiable {
/** The logger. */
private static Logger logger = Logger.getLogger(RedisRemoteProvider.class.getName());
/** The redis error retry. */
private long redisErrorRetry;
/**
* Instantiates a new redis remote provider.
*
* @param redisErrorRetry the redis error retry
* @throws Exception the exception
*/
public RedisRemoteProvider(long redisErrorRetry) throws Exception {
this.redisErrorRetry = redisErrorRetry;
}
/*
* (non-Javadoc)
*
* @see dw.core.redis.provider.RedisProvider#set(dw.cache.provider.CacheKey, java.lang.String, java.lang.String)
*/
@Override
public RedisValue<String> set(CacheKey cacheKey, String key, String value) {
if (DEBUG_REDIS_CACHE) {
logCall("set", key, value);
}
Jedis jedis = pool.getResource();
try {
return (new RedisValue<String>()).setValue(jedis.set(key, value));
} finally {
if (jedis != null) {
jedis.close();
}
}
}
/*
* (non-Javadoc)
*
* @see dw.core.redis.provider.RedisProvider#get(dw.cache.provider.CacheKey, java.lang.String)
*/
@Override
public RedisValue<String> get(CacheKey cacheKey, String key) {
if (DEBUG_REDIS_CACHE) {
logCall("get", key);
}
Jedis jedis = pool.getResource();
try {
return (new RedisValue<String>()).setValue(jedis.get(key));
} finally {
if (jedis != null) {
jedis.close();
}
}
}
/*
* (non-Javadoc)
*
* @see dw.core.redis.provider.RedisProvider#getSet(dw.cache.provider.CacheKey, java.lang.String, java.lang.String)
*/
@Override
public RedisValue<String> getSet(CacheKey cacheKey, String key, String value) {
if (DEBUG_REDIS_CACHE) {
logCall("getSet", key, value);
}
Jedis jedis = pool.getResource();
try {
return (new RedisValue<String>()).setValue(jedis.getSet(key, value));
} finally {
if (jedis != null) {
jedis.close();
}
}
}
/*
* (non-Javadoc)
*
* @see dw.core.redis.provider.RedisProvider#hkeys(dw.cache.provider.CacheKey, java.lang.String)
*/
@Override
public RedisValue<Set<String>> hkeys(CacheKey cacheKey, String key) {
if (DEBUG_REDIS_CACHE) {
logCall("hkeys", key);
}
Jedis jedis = pool.getResource();
try {
return (new RedisValue<Set<String>>()).setValue(jedis.hkeys(key));
} finally {
if (jedis != null) {
jedis.close();
}
}
}
/*
* (non-Javadoc)
*
* @see dw.core.redis.provider.RedisProvider#hvals(dw.cache.provider.CacheKey, java.lang.String)
*/
@Override
public RedisValue<List<String>> hvals(CacheKey cacheKey, String key) {
if (DEBUG_REDIS_CACHE) {
logCall("hvals", key);
}
Jedis jedis = pool.getResource();
try {
return (new RedisValue<List<String>>()).setValue(jedis.hvals(key));
} finally {
if (jedis != null) {
jedis.close();
}
}
}
/*
* (non-Javadoc)
*
* @see dw.core.redis.provider.RedisProvider#hset(dw.cache.provider.CacheKey, java.lang.String, java.lang.String, java.lang.String)
*/
@Override
public RedisValue<Long> hset(CacheKey cacheKey, String key, String field, String value) {
if (DEBUG_REDIS_CACHE) {
logCall("hset", key, value);
}
Jedis jedis = pool.getResource();
try {
return (new RedisValue<Long>()).setValue(jedis.hset(key, field, value));
} finally {
if (jedis != null) {
jedis.close();
}
}
}
/*
* (non-Javadoc)
*
* @see dw.core.redis.provider.RedisProvider#hdel(dw.cache.provider.CacheKey, java.lang.String, java.lang.String)
*/
@Override
public RedisValue<Long> hdel(CacheKey cacheKey, String key, String field) {
if (DEBUG_REDIS_CACHE) {
logCall("hdel", key, field);
}
Jedis jedis = pool.getResource();
try {
return (new RedisValue<Long>()).setValue(jedis.hdel(key, field));
} finally {
if (jedis != null) {
jedis.close();
}
}
}
/*
* (non-Javadoc)
*
* @see dw.core.redis.provider.RedisProvider#hmset(dw.cache.provider.CacheKey, java.lang.String, java.util.Map)
*/
@Override
public RedisValue<String> hmset(CacheKey cacheKey, String key, Map<String, String> hash) {
if (DEBUG_REDIS_CACHE) {
logCall("hmset", key, hash.toString());
}
Jedis jedis = pool.getResource();
try {
return (new RedisValue<String>()).setValue(jedis.hmset(key, hash));
} finally {
if (jedis != null) {
jedis.close();
}
}
}
/*
* (non-Javadoc)
*
* @see dw.core.redis.provider.RedisProvider#hget(dw.cache.provider.CacheKey, java.lang.String, java.lang.String)
*/
@Override
public RedisValue<String> hget(CacheKey cacheKey, String key, String field) {
if (DEBUG_REDIS_CACHE) {
logCall("hget", key, field);
}
Jedis jedis = pool.getResource();
try {
return (new RedisValue<String>()).setValue(jedis.hget(key, field));
} finally {
if (jedis != null) {
jedis.close();
}
}
}
/*
* (non-Javadoc)
*
* @see dw.core.redis.provider.RedisProvider#hmget(dw.cache.provider.CacheKey, java.lang.String, java.lang.String[])
*/
@Override
public RedisValue<List<String>> hmget(CacheKey cacheKey, String key, String... fields) {
if (DEBUG_REDIS_CACHE) {
String[] fieldList = new String[fields.length + 1];
fieldList[0] = key;
for (int i = 0; i < fields.length; i++) {
fieldList[i + 1] = fields[i];
}
logCall("hmget", fieldList);
}
Jedis jedis = pool.getResource();
try {
return (new RedisValue<List<String>>()).setValue(jedis.hmget(key, fields));
} finally {
if (jedis != null) {
jedis.close();
}
}
}
/*
* (non-Javadoc)
*
* @see dw.core.redis.provider.RedisProvider#hgetAll(dw.cache.provider.CacheKey, java.lang.String)
*/
@Override
public RedisValue<Map<String, String>> hgetAll(CacheKey cacheKey, String key) {
if (DEBUG_REDIS_CACHE) {
logCall("hgetAll", key);
}
Jedis jedis = pool.getResource();
try {
return (new RedisValue<Map<String, String>>()).setValue(jedis.hgetAll(key));
} finally {
if (jedis != null) {
jedis.close();
}
}
}
/*
* (non-Javadoc)
*
* @see dw.core.redis.provider.RedisProvider#hincrBy(dw.cache.provider.CacheKey, java.lang.String, java.lang.String, int)
*/
@Override
public RedisValue<Long> hincrBy(CacheKey cacheKey, String key, String field, int value) {
if (DEBUG_REDIS_CACHE) {
logCall("hincrBy", key, field, String.valueOf(value));
}
Jedis jedis = pool.getResource();
try {
return (new RedisValue<Long>()).setValue(jedis.hincrBy(key, field, value));
} finally {
if (jedis != null) {
jedis.close();
}
}
}
/*
* (non-Javadoc)
*
* @see dw.core.redis.provider.RedisProvider#hexists(dw.cache.provider.CacheKey, java.lang.String, java.lang.String)
*/
@Override
public RedisValue<Boolean> hexists(CacheKey cacheKey, String key, String field) {
if (DEBUG_REDIS_CACHE) {
logCall("hexists", key, field);
}
Jedis jedis = pool.getResource();
try {
return (new RedisValue<Boolean>()).setValue(jedis.hexists(key, field));
} finally {
if (jedis != null) {
jedis.close();
}
}
}
/*
* (non-Javadoc)
*
* @see dw.core.redis.provider.RedisProvider#hlen(dw.cache.provider.CacheKey, java.lang.String)
*/
@Override
public RedisValue<Long> hlen(CacheKey cacheKey, String key) {
if (DEBUG_REDIS_CACHE) {
logCall("hlen", key);
}
Jedis jedis = pool.getResource();
try {
return (new RedisValue<Long>()).setValue(jedis.hlen(key));
} finally {
if (jedis != null) {
jedis.close();
}
}
}
/*
* (non-Javadoc)
*
* @see dw.core.redis.provider.RedisProvider#ping(dw.cache.provider.CacheKey)
*/
@Override
public RedisValue<String> ping(CacheKey cacheKey) {
if (DEBUG_REDIS_CACHE) {
logCall("ping");
}
Jedis jedis = pool.getResource();
try {
return (new RedisValue<String>()).setValue(jedis.ping());
} finally {
if (jedis != null) {
jedis.close();
}
}
}
/*
* (non-Javadoc)
*
* @see dw.core.redis.provider.RedisProvider#expire(dw.cache.provider.CacheKey, java.lang.String, int)
*/
@Override
public RedisValue<Long> expire(CacheKey cacheKey, String key, int seconds) {
if (DEBUG_REDIS_CACHE) {
logCall("expire", key, String.valueOf(seconds));
}
Jedis jedis = pool.getResource();
try {
return (new RedisValue<Long>()).setValue(jedis.expire(key, seconds));
} finally {
if (jedis != null) {
jedis.close();
}
}
}
/*
* (non-Javadoc)
*
* @see dw.core.redis.provider.RedisProvider#keys(dw.cache.provider.CacheKey, java.lang.String)
*/
@Override
public RedisValue<Set<String>> keys(CacheKey cacheKey, String pattern) {
if (DEBUG_REDIS_CACHE) {
logCall("keys", pattern);
}
Jedis jedis = pool.getResource();
try {
return (new RedisValue<Set<String>>()).setValue(jedis.keys(pattern));
} finally {
if (jedis != null) {
jedis.close();
}
}
}
/*
* (non-Javadoc)
*
* @see dw.core.redis.provider.RedisProvider#del(dw.cache.provider.CacheKey, java.lang.String[])
*/
@Override
public RedisValue<Long> del(CacheKey cacheKey, String... keys) {
if (DEBUG_REDIS_CACHE) {
logCall("del", keys);
}
Jedis jedis = pool.getResource();
try {
return (new RedisValue<Long>()).setValue(jedis.del(keys));
} finally {
if (jedis != null) {
jedis.close();
}
}
}
/*
* (non-Javadoc)
*
* @see dw.core.redis.provider.RedisProvider#exists(dw.cache.provider.CacheKey, java.lang.String)
*/
@Override
public RedisValue<Boolean> exists(CacheKey cacheKey, String key) {
if (DEBUG_REDIS_CACHE) {
logCall("exists", key);
}
Jedis jedis = pool.getResource();
try {
return (new RedisValue<Boolean>()).setValue(jedis.exists(key));
} finally {
if (jedis != null) {
jedis.close();
}
}
}
/*
* (non-Javadoc)
*
* @see dw.core.redis.provider.RedisProvider#incr(dw.cache.provider.CacheKey, java.lang.String)
*/
@Override
public RedisValue<Long> incr(CacheKey cacheKey, String key) {
if (DEBUG_REDIS_CACHE) {
logCall("incr", key);
}
Jedis jedis = pool.getResource();
try {
return (new RedisValue<Long>()).setValue(jedis.incr(key));
} finally {
if (jedis != null) {
jedis.close();
}
}
}
/*
* (non-Javadoc)
*
* @see dw.core.redis.provider.RedisProvider#decr(dw.cache.provider.CacheKey, java.lang.String)
*/
@Override
public RedisValue<Long> decr(CacheKey cacheKey, String key) {
if (DEBUG_REDIS_CACHE) {
logCall("decr", key);
}
Jedis jedis = pool.getResource();
try {
return (new RedisValue<Long>()).setValue(jedis.decr(key));
} finally {
if (jedis != null) {
jedis.close();
}
}
}
/*
* (non-Javadoc)
*
* @see dw.core.redis.provider.RedisProvider#zadd(dw.cache.provider.CacheKey, java.lang.String, double, java.lang.String)
*/
@Override
public RedisValue<Long> zadd(CacheKey cacheKey, String key, double score, String member) {
if (DEBUG_REDIS_CACHE) {
logCall("zadd", key, String.valueOf(score), member);
}
Jedis jedis = pool.getResource();
try {
return (new RedisValue<Long>()).setValue(jedis.zadd(key, score, member));
} finally {
if (jedis != null) {
jedis.close();
}
}
}
/*
* (non-Javadoc)
*
* @see dw.core.redis.provider.RedisProvider#zincrby(dw.cache.provider.CacheKey, java.lang.String, double, java.lang.String)
*/
@Override
public RedisValue<Double> zincrby(CacheKey cacheKey, String key, double score, String member) {
if (DEBUG_REDIS_CACHE) {
logCall("zincrby", key, String.valueOf(score), member);
}
Jedis jedis = pool.getResource();
try {
return (new RedisValue<Double>()).setValue(jedis.zincrby(key, score, member));
} finally {
if (jedis != null) {
jedis.close();
}
}
}
/*
* (non-Javadoc)
*
* @see dw.core.redis.provider.RedisProvider#zscore(dw.cache.provider.CacheKey, java.lang.String, java.lang.String)
*/
@Override
public RedisValue<Double> zscore(CacheKey cacheKey, String key, String member) {
if (DEBUG_REDIS_CACHE) {
logCall("zscore", key, member);
}
Jedis jedis = pool.getResource();
try {
return (new RedisValue<Double>()).setValue(jedis.zscore(key, member));
} finally {
if (jedis != null) {
jedis.close();
}
}
}
/*
* (non-Javadoc)
*
* @see dw.core.redis.provider.RedisProvider#zrank(dw.cache.provider.CacheKey, java.lang.String, java.lang.String)
*/
@Override
public RedisValue<Long> zrank(CacheKey cacheKey, String key, String member) {
if (DEBUG_REDIS_CACHE) {
logCall("zrank", key, member);
}
Jedis jedis = pool.getResource();
try {
return (new RedisValue<Long>()).setValue(jedis.zrank(key, member));
} finally {
if (jedis != null) {
jedis.close();
}
}
}
/*
* (non-Javadoc)
*
* @see dw.core.redis.provider.RedisProvider#zcount(dw.cache.provider.CacheKey, java.lang.String, double, double)
*/
@Override
public RedisValue<Long> zcount(CacheKey cacheKey, String key, double min, double max) {
if (DEBUG_REDIS_CACHE) {
logCall("zcount", key, String.valueOf(min), String.valueOf(max));
}
Jedis jedis = pool.getResource();
try {
return (new RedisValue<Long>()).setValue(jedis.zcount(key, min, max));
} finally {
if (jedis != null) {
jedis.close();
}
}
}
/*
* (non-Javadoc)
*
* @see dw.core.redis.provider.RedisProvider#zrevrank(dw.cache.provider.CacheKey, java.lang.String, java.lang.String)
*/
@Override
public RedisValue<Long> zrevrank(CacheKey cacheKey, String key, String member) {
if (DEBUG_REDIS_CACHE) {
logCall("zrevrank", key, member);
}
Jedis jedis = pool.getResource();
try {
return (new RedisValue<Long>()).setValue(jedis.zrevrank(key, member));
} finally {
if (jedis != null) {
jedis.close();
}
}
}
/*
* (non-Javadoc)
*
* @see dw.core.redis.provider.RedisProvider#zrem(dw.cache.provider.CacheKey, java.lang.String, java.lang.String)
*/
@Override
public RedisValue<Long> zrem(CacheKey cacheKey, String key, String member) {
if (DEBUG_REDIS_CACHE) {
logCall("zrem", key, member);
}
Jedis jedis = pool.getResource();
try {
return (new RedisValue<Long>()).setValue(jedis.zrem(key, member));
} finally {
if (jedis != null) {
jedis.close();
}
}
}
/*
* (non-Javadoc)
*
* @see dw.core.redis.provider.RedisProvider#zremrangeByRank(dw.cache.provider.CacheKey, java.lang.String, int, int)
*/
@Override
public RedisValue<Long> zremrangeByRank(CacheKey cacheKey, String key, int start, int end) {
if (DEBUG_REDIS_CACHE) {
logCall("zremrangeByRank", key, String.valueOf(start), String.valueOf(end));
}
Jedis jedis = pool.getResource();
try {
return (new RedisValue<Long>()).setValue(jedis.zremrangeByRank(key, start, end));
} finally {
if (jedis != null) {
jedis.close();
}
}
}
/*
* (non-Javadoc)
*
* @see dw.core.redis.provider.RedisProvider#zcard(dw.cache.provider.CacheKey, java.lang.String)
*/
@Override
public RedisValue<Long> zcard(CacheKey cacheKey, String key) {
if (DEBUG_REDIS_CACHE) {
logCall("zcard", key);
}
Jedis jedis = pool.getResource();
try {
return (new RedisValue<Long>()).setValue(jedis.zcard(key));
} finally {
if (jedis != null) {
jedis.close();
}
}
}
/*
* (non-Javadoc)
*
* @see dw.core.redis.provider.RedisProvider#zrevrange(dw.cache.provider.CacheKey, java.lang.String, int, int)
*/
@Override
public RedisValue<Set<String>> zrevrange(CacheKey cacheKey, String key, int start, int end) {
if (DEBUG_REDIS_CACHE) {
logCall("zrevrange", key, String.valueOf(start), String.valueOf(end));
}
Jedis jedis = pool.getResource();
try {
return (new RedisValue<Set<String>>()).setValue(jedis.zrevrange(key, start, end));
} finally {
if (jedis != null) {
jedis.close();
}
}
}
/*
* (non-Javadoc)
*
* @see dw.core.redis.provider.RedisProvider#zrevrangeByScore(dw.cache.provider.CacheKey, java.lang.String, double, double, int, int)
*/
@Override
public RedisValue<Set<String>> zrevrangeByScore(CacheKey cacheKey, String key, double min, double max, int offset, int count) {
if (DEBUG_REDIS_CACHE) {
logCall("zrevrangeByScore", key, String.valueOf(min), String.valueOf(max), String.valueOf(offset), String.valueOf(count));
}
Jedis jedis = pool.getResource();
try {
return (new RedisValue<Set<String>>()).setValue(jedis.zrevrangeByScore(key, min, max, offset, count));
} finally {
if (jedis != null) {
jedis.close();
};
}
}
/*
* (non-Javadoc)
*
* @see dw.core.redis.provider.RedisProvider#zrevrangeByScore(dw.cache.provider.CacheKey, java.lang.String, double, double)
*/
@Override
public RedisValue<Set<String>> zrevrangeByScore(CacheKey cacheKey, String key, double min, double max) {
if (DEBUG_REDIS_CACHE) {
logCall("zrevrangeByScore", key, String.valueOf(min), String.valueOf(max));
}
Jedis jedis = pool.getResource();
try {
return (new RedisValue<Set<String>>()).setValue(jedis.zrevrangeByScore(key, min, max));
} finally {
if (jedis != null) {
jedis.close();
};
}
}
/*
* (non-Javadoc)
*
* @see dw.core.redis.provider.RedisProvider#zrange(dw.cache.provider.CacheKey, java.lang.String, int, int)
*/
@Override
public RedisValue<Set<String>> zrange(CacheKey cacheKey, String key, int start, int end) {
if (DEBUG_REDIS_CACHE) {
logCall("zrange", key, String.valueOf(start), String.valueOf(end));
}
Jedis jedis = pool.getResource();
try {
return (new RedisValue<Set<String>>()).setValue(jedis.zrange(key, start, end));
} finally {
if (jedis != null) {
jedis.close();
};
}
}
/*
* (non-Javadoc)
*
* @see dw.core.redis.provider.RedisProvider#zrangeWithScores(dw.cache.provider.CacheKey, java.lang.String, int, int)
*/
@Override
public RedisValue<Set<Tuple>> zrangeWithScores(CacheKey cacheKey, String key, int start, int end) {
if (DEBUG_REDIS_CACHE) {
logCall("zrangeWithScores", key, String.valueOf(start), String.valueOf(end));
}
Jedis jedis = pool.getResource();
try {
return (new RedisValue<Set<Tuple>>()).setValue(jedis.zrangeWithScores(key, start, end));
} finally {
if (jedis != null) {
jedis.close();
};
}
}
/*
* (non-Javadoc)
*
* @see dw.core.redis.provider.RedisProvider#zrangeByScore(dw.cache.provider.CacheKey, java.lang.String, double, double, int, int)
*/
@Override
public RedisValue<Set<String>> zrangeByScore(CacheKey cacheKey, String key, double min, double max, int offset, int count) {
if (DEBUG_REDIS_CACHE) {
logCall("zrangeByScore", key, String.valueOf(min), String.valueOf(max), String.valueOf(offset), String.valueOf(count));
}
Jedis jedis = pool.getResource();
try {
return (new RedisValue<Set<String>>()).setValue(jedis.zrangeByScore(key, min, max, offset, count));
} finally {
if (jedis != null) {
jedis.close();
};
}
}
/*
* (non-Javadoc)
*
* @see dw.core.redis.provider.RedisProvider#zrangeByScoreWithScores(dw.cache.provider.CacheKey, java.lang.String, double, double, int, int)
*/
@Override
public RedisValue<Set<Tuple>> zrangeByScoreWithScores(CacheKey cacheKey, String key, double min, double max, int offset, int count) {
if (DEBUG_REDIS_CACHE) {
logCall("zrangeByScoreWithScores", key, String.valueOf(min), String.valueOf(max), String.valueOf(offset), String.valueOf(count));
}
Jedis jedis = pool.getResource();
try {
return (new RedisValue<Set<Tuple>>()).setValue(jedis.zrangeByScoreWithScores(key, min, max, offset, count));
} finally {
if (jedis != null) {
jedis.close();
};
}
}
/*
* (non-Javadoc)
*
* @see dw.core.redis.provider.RedisProvider#zrevrangeByScoreWithScores(dw.cache.provider.CacheKey, java.lang.String, double, double, int, int)
*/
@Override
public RedisValue<Set<Tuple>> zrevrangeByScoreWithScores(CacheKey cacheKey, String key, double max, double min, int offset, int count) {
if (DEBUG_REDIS_CACHE) {
logCall("zrevrangeByScoreWithScores", key, String.valueOf(max), String.valueOf(min), String.valueOf(offset), String.valueOf(count));
}
Jedis jedis = pool.getResource();
try {
return (new RedisValue<Set<Tuple>>()).setValue(jedis.zrevrangeByScoreWithScores(key, max, min, offset, count));
} finally {
if (jedis != null) {
jedis.close();
};
}
}
/*
* (non-Javadoc)
*
* @see dw.core.redis.provider.RedisProvider#zrangeByScore(dw.cache.provider.CacheKey, java.lang.String, double, double)
*/
@Override
public RedisValue<Set<String>> zrangeByScore(CacheKey cacheKey, String key, double min, double max) {
if (DEBUG_REDIS_CACHE) {
logCall("zrangeByScore", key, String.valueOf(min), String.valueOf(max));
}
Jedis jedis = pool.getResource();
try {
return (new RedisValue<Set<String>>()).setValue(jedis.zrangeByScore(key, min, max));
} finally {
if (jedis != null) {
jedis.close();
};
}
}
/*
* (non-Javadoc)
*
* @see dw.core.redis.provider.RedisProvider#zinterstore(dw.cache.provider.CacheKey, java.lang.String, redis.clients.jedis.ZParams,
* java.lang.String[])
*/
@Override
public RedisValue<Long> zinterstore(CacheKey cacheKey, String dstkey, ZParams params, String... sets) {
if (DEBUG_REDIS_CACHE) {
String[] setList = new String[sets.length + 1];
setList[0] = dstkey;
for (int i = 0; i < sets.length; i++) {
setList[i + 1] = sets[i];
}
logCall("zinterstore", setList);
}
Jedis jedis = pool.getResource();
try {
return (new RedisValue<Long>()).setValue(jedis.zinterstore(dstkey, params, sets));
} finally {
if (jedis != null) {
jedis.close();
};
}
}
/*
* (non-Javadoc)
*
* @see dw.core.redis.provider.RedisProvider#mget(dw.cache.provider.CacheKey, java.lang.String[])
*/
@Override
public RedisValue<List<String>> mget(CacheKey cacheKey, String... keys) {
if (DEBUG_REDIS_CACHE) {
logCall("mget", keys);
}
Jedis jedis = pool.getResource();
try {
return (new RedisValue<List<String>>()).setValue(jedis.mget(keys));
} finally {
if (jedis != null) {
jedis.close();
};
}
}
/*
* (non-Javadoc)
*
* @see dw.core.redis.provider.RedisProvider#rpush(dw.cache.provider.CacheKey, java.lang.String, java.lang.String[])
*/
@Override
public RedisValue<Long> rpush(CacheKey cacheKey, String key, String... values) {
if (DEBUG_REDIS_CACHE) {
String[] valueList = new String[values.length + 1];
valueList[0] = key;
for (int i = 0; i < values.length; i++) {
valueList[i + 1] = values[i];
}
logCall("rpush", valueList);
}
Jedis jedis = pool.getResource();
try {
return (new RedisValue<Long>()).setValue(jedis.rpush(key, values));
} finally {
if (jedis != null) {
jedis.close();
};
}
}
/*
* (non-Javadoc)
*
* @see dw.core.redis.provider.RedisProvider#rpoplpush(dw.cache.provider.CacheKey, java.lang.String, java.lang.String)
*/
@Override
public RedisValue<String> rpoplpush(CacheKey cacheKey, String srckey, String dstkey) {
if (DEBUG_REDIS_CACHE) {
logCall("rpoplpush", srckey, dstkey);
}
Jedis jedis = pool.getResource();
try {
return (new RedisValue<String>()).setValue(jedis.rpoplpush(srckey, dstkey));
} finally {
if (jedis != null) {
jedis.close();
};
}
}
/*
* (non-Javadoc)
*
* @see dw.core.redis.provider.RedisProvider#lpush(dw.cache.provider.CacheKey, java.lang.String, java.lang.String[])
*/
@Override
public RedisValue<Long> lpush(CacheKey cacheKey, String key, String... values) {
if (DEBUG_REDIS_CACHE) {
String[] valueList = new String[values.length + 1];
valueList[0] = key;
for (int i = 0; i < values.length; i++) {
valueList[i + 1] = values[i];
}
logCall("lpush", valueList);
}
Jedis jedis = pool.getResource();
try {
return (new RedisValue<Long>()).setValue(jedis.lpush(key, values));
} finally {
if (jedis != null) {
jedis.close();
};
}
}
/*
* (non-Javadoc)
*
* @see dw.core.redis.provider.RedisProvider#lpop(dw.cache.provider.CacheKey, java.lang.String)
*/
@Override
public RedisValue<String> lpop(CacheKey cacheKey, String key) {
if (DEBUG_REDIS_CACHE) {
logCall("lpop", key);
}
Jedis jedis = pool.getResource();
try {
return (new RedisValue<String>()).setValue(jedis.lpop(key));
} finally {
if (jedis != null) {
jedis.close();
};
}
}
/*
* (non-Javadoc)
*
* @see dw.core.redis.provider.RedisProvider#brpop(dw.cache.provider.CacheKey, int, java.lang.String)
*/
@Override
public RedisValue<List<String>> brpop(CacheKey cacheKey, int secondsBlock, String key) {
if (DEBUG_REDIS_CACHE) {
logCall("brpop", String.valueOf(secondsBlock), key);
}
Jedis jedis = pool.getResource();
try {
RedisValue<List<String>> res = (new RedisValue<List<String>>()).setValue(jedis.brpop(secondsBlock, key));
return res;
} catch (Throwable e) {
logger.error("Error executing brpop. Waiting " + redisErrorRetry + "ms", e);
try {
Thread.sleep(redisErrorRetry);
} catch (InterruptedException e1) {
throw new RuntimeException(e1);
}
throw new RuntimeException("Error executing brpop", e);
} finally {
if (jedis != null) {
jedis.close();
}
}
}
/*
* (non-Javadoc)
*
* @see dw.core.redis.provider.RedisProvider#blpop(dw.cache.provider.CacheKey, int, java.lang.String)
*/
@Override
public RedisValue<List<String>> blpop(CacheKey cacheKey, int secondsBlock, String key) {
if (DEBUG_REDIS_CACHE) {
logCall("blpop", String.valueOf(secondsBlock), key);
}
Jedis jedis = pool.getResource();
try {
RedisValue<List<String>> res = (new RedisValue<List<String>>()).setValue(jedis.blpop(secondsBlock, key));
return res;
} catch (Throwable e) {
logger.error("Error executing blpop. Waiting " + redisErrorRetry + "ms", e);
try {
Thread.sleep(redisErrorRetry);
} catch (InterruptedException e1) {
throw new RuntimeException(e1);
}
throw new RuntimeException("Error executing blpop", e);
} finally {
if (jedis != null) {
jedis.close();
}
}
}
/*
* (non-Javadoc)
*
* @see dw.core.redis.provider.RedisProvider#lset(dw.cache.provider.CacheKey, java.lang.String, int, java.lang.String)
*/
@Override
public RedisValue<String> lset(CacheKey cacheKey, String key, int index, String value) {
if (DEBUG_REDIS_CACHE) {
logCall("lset", key, String.valueOf(index), value);
}
Jedis jedis = pool.getResource();
try {
return (new RedisValue<String>()).setValue(jedis.lset(key, index, value));
} finally {
if (jedis != null) {
jedis.close();
};
}
}
/*
* (non-Javadoc)
*
* @see dw.core.redis.provider.RedisProvider#lrange(dw.cache.provider.CacheKey, java.lang.String, int, int)
*/
@Override
public RedisValue<List<String>> lrange(CacheKey cacheKey, String key, int start, int end) {
if (DEBUG_REDIS_CACHE) {
logCall("lset", key, String.valueOf(start), String.valueOf(end));
}
Jedis jedis = pool.getResource();
try {
return (new RedisValue<List<String>>()).setValue(jedis.lrange(key, start, end));
} finally {
if (jedis != null) {
jedis.close();
};
}
}
/*
* (non-Javadoc)
*
* @see dw.core.redis.provider.RedisProvider#lindex(dw.cache.provider.CacheKey, java.lang.String, int)
*/
@Override
public RedisValue<String> lindex(CacheKey cacheKey, String key, int index) {
if (DEBUG_REDIS_CACHE) {
logCall("lindex", key, String.valueOf(index));
}
Jedis jedis = pool.getResource();
try {
return (new RedisValue<String>()).setValue(jedis.lindex(key, index));
} finally {
if (jedis != null) {
jedis.close();
};
}
}
/*
* (non-Javadoc)
*
* @see dw.core.redis.provider.RedisProvider#lrem(dw.cache.provider.CacheKey, java.lang.String, int, java.lang.String)
*/
@Override
public RedisValue<Long> lrem(CacheKey cacheKey, String key, int count, String value) {
if (DEBUG_REDIS_CACHE) {
logCall("lrem", key, String.valueOf(count), value);
}
Jedis jedis = pool.getResource();
try {
return (new RedisValue<Long>()).setValue(jedis.lrem(key, count, value));
} finally {
if (jedis != null) {
jedis.close();
};
}
}
/*
* (non-Javadoc)
*
* @see dw.core.redis.provider.RedisProvider#ltrim(dw.cache.provider.CacheKey, java.lang.String, int, int)
*/
@Override
public RedisValue<String> ltrim(CacheKey cacheKey, String key, int start, int end) {
if (DEBUG_REDIS_CACHE) {
logCall("ltrim", key, String.valueOf(start), String.valueOf(end));
}
Jedis jedis = pool.getResource();
try {
return (new RedisValue<String>()).setValue(jedis.ltrim(key, start, end));
} finally {
if (jedis != null) {
jedis.close();
};
}
}
/*
* (non-Javadoc)
*
* @see dw.core.redis.provider.RedisProvider#llen(dw.cache.provider.CacheKey, java.lang.String)
*/
@Override
public RedisValue<Long> llen(CacheKey cacheKey, String key) {
if (DEBUG_REDIS_CACHE) {
logCall("llen", key);
}
Jedis jedis = pool.getResource();
try {
return (new RedisValue<Long>()).setValue(jedis.llen(key));
} finally {
if (jedis != null) {
jedis.close();
};
}
}
/*
* (non-Javadoc)
*
* @see dw.core.redis.provider.RedisProvider#sadd(dw.cache.provider.CacheKey, java.lang.String, java.lang.String[])
*/
@Override
public RedisValue<Long> sadd(CacheKey cacheKey, String key, String... members) {
if (DEBUG_REDIS_CACHE) {
String[] memberList = new String[members.length + 1];
memberList[0] = key;
for (int i = 0; i < members.length; i++) {
memberList[i + 1] = members[i];
}
logCall("sadd", memberList);
}
Jedis jedis = pool.getResource();
try {
return (new RedisValue<Long>()).setValue(jedis.sadd(key, members));
} finally {
if (jedis != null) {
jedis.close();
};
}
}
/*
* (non-Javadoc)
*
* @see dw.core.redis.provider.RedisProvider#srem(dw.cache.provider.CacheKey, java.lang.String, java.lang.String[])
*/
@Override
public RedisValue<Long> srem(CacheKey cacheKey, String key, String... members) {
if (DEBUG_REDIS_CACHE) {
String[] memberList = new String[members.length + 1];
memberList[0] = key;
for (int i = 0; i < members.length; i++) {
memberList[i + 1] = members[i];
}
logCall("srem", memberList);
}
Jedis jedis = pool.getResource();
try {
return (new RedisValue<Long>()).setValue(jedis.srem(key, members));
} finally {
if (jedis != null) {
jedis.close();
};
}
}
/*
* (non-Javadoc)
*
* @see dw.core.redis.provider.RedisProvider#sismember(dw.cache.provider.CacheKey, java.lang.String, java.lang.String)
*/
@Override
public RedisValue<Boolean> sismember(CacheKey cacheKey, String key, String member) {
if (DEBUG_REDIS_CACHE) {
logCall("sismember", key, member);
}
Jedis jedis = pool.getResource();
try {
return (new RedisValue<Boolean>()).setValue(jedis.sismember(key, member));
} finally {
if (jedis != null) {
jedis.close();
};
}
}
/*
* (non-Javadoc)
*
* @see dw.core.redis.provider.RedisProvider#smembers(dw.cache.provider.CacheKey, java.lang.String)
*/
@Override
public RedisValue<Set<String>> smembers(CacheKey cacheKey, String key) {
if (DEBUG_REDIS_CACHE) {
logCall("smembers", key);
}
Jedis jedis = pool.getResource();
try {
return (new RedisValue<Set<String>>()).setValue(jedis.smembers(key));
} finally {
if (jedis != null) {
jedis.close();
};
}
}
/*
* (non-Javadoc)
*
* @see dw.core.redis.provider.RedisProvider#scard(dw.cache.provider.CacheKey, java.lang.String)
*/
@Override
public RedisValue<Long> scard(CacheKey cacheKey, String key) {
if (DEBUG_REDIS_CACHE) {
logCall("scard", key);
}
Jedis jedis = pool.getResource();
try {
return (new RedisValue<Long>()).setValue(jedis.scard(key));
} finally {
if (jedis != null) {
jedis.close();
};
}
}
/*
* (non-Javadoc)
*
* @see dw.core.redis.provider.RedisProvider#sinterstore(dw.cache.provider.CacheKey, java.lang.String, java.lang.String[])
*/
@Override
public RedisValue<Long> sinterstore(CacheKey cacheKey, String dstkey, String... sets) {
if (DEBUG_REDIS_CACHE) {
String[] setList = new String[sets.length + 1];
setList[0] = dstkey;
for (int i = 0; i < sets.length; i++) {
setList[i + 1] = sets[i];
}
logCall("sinterstore", setList);
}
Jedis jedis = pool.getResource();
try {
return (new RedisValue<Long>()).setValue(jedis.sinterstore(dstkey, sets));
} finally {
if (jedis != null) {
jedis.close();
};
}
}
/*
* (non-Javadoc)
*
* @see dw.core.redis.provider.RedisProvider#sinter(dw.cache.provider.CacheKey, java.lang.String[])
*/
@Override
public RedisValue<Set<String>> sinter(CacheKey cacheKey, String... sets) {
if (DEBUG_REDIS_CACHE) {
logCall("sinter", sets);
}
Jedis jedis = pool.getResource();
try {
return (new RedisValue<Set<String>>()).setValue(jedis.sinter(sets));
} finally {
if (jedis != null) {
jedis.close();
};
}
}
/*
* (non-Javadoc)
*
* @see dw.core.redis.provider.RedisProvider#sunionstore(dw.cache.provider.CacheKey, java.lang.String, java.lang.String[])
*/
@Override
public RedisValue<Long> sunionstore(CacheKey cacheKey, String dstkey, String... sets) {
if (DEBUG_REDIS_CACHE) {
String[] setList = new String[sets.length + 1];
setList[0] = dstkey;
for (int i = 0; i < sets.length; i++) {
setList[i + 1] = sets[i];
}
logCall("sunionstore", setList);
}
Jedis jedis = pool.getResource();
try {
return (new RedisValue<Long>()).setValue(jedis.sunionstore(dstkey, sets));
} finally {
if (jedis != null) {
jedis.close();
};
}
}
/*
* (non-Javadoc)
*
* @see dw.core.redis.provider.RedisProvider#sunion(dw.cache.provider.CacheKey, java.lang.String[])
*/
@Override
public RedisValue<Set<String>> sunion(CacheKey cacheKey, String... sets) {
if (DEBUG_REDIS_CACHE) {
logCall("sunion", sets);
}
Jedis jedis = pool.getResource();
try {
return (new RedisValue<Set<String>>()).setValue(jedis.sunion(sets));
} finally {
if (jedis != null) {
jedis.close();
};
}
}
/*
* (non-Javadoc)
*
* @see dw.core.redis.provider.RedisProvider#sort(dw.cache.provider.CacheKey, java.lang.String, redis.clients.jedis.SortingParams)
*/
@Override
public RedisValue<List<String>> sort(CacheKey cacheKey, String key, SortingParams sortingParameters) {
if (DEBUG_REDIS_CACHE) {
logCall("sort", key, sortingParameters.toString());
}
Jedis jedis = pool.getResource();
try {
return (new RedisValue<List<String>>()).setValue(jedis.sort(key, sortingParameters));
} finally {
if (jedis != null) {
jedis.close();
};
}
}
/*
* (non-Javadoc)
*
* @see dw.core.redis.provider.RedisProvider#evalsha(dw.cache.provider.CacheKey, java.lang.String, java.util.List, java.util.List)
*/
@Override
public RedisValue<Object> evalsha(CacheKey cacheKey, String sha1, List<String> keys, List<String> args) {
if (DEBUG_REDIS_CACHE) {
logCall("evalsha", sha1);
}
Jedis jedis = pool.getResource();
try {
return (new RedisValue<Object>()).setValue(jedis.evalsha(sha1, keys, args));
} finally {
if (jedis != null) {
jedis.close();
};
}
}
/**
* Log call.
*
* @param methodId the method id
* @param params the params
*/
private void logCall(String methodId, String... params) {
String paramString = concat(methodId, params);
logger.info("REAL : " + paramString);
}
/**
* Generates a string concat.
*
* @param methodId The method id
* @param fields The method keys
* @return The concat
*/
private static String concat(String methodId, String... fields) {
StringBuilder builder = new StringBuilder();
builder.append(methodId);
for (String item : fields) {
builder.append("[");
builder.append(item == null ? "nil" : item);
}
return builder.toString();
}
}