package com.easyooo.framework.support.redis; import java.util.List; import java.util.Map; import java.util.Set; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import redis.clients.jedis.JedisCommands; import redis.clients.jedis.Tuple; /** * 抽象缓存操作类实现,实现了单机或分布式集群环境下共有的操作, * 在单机和集群环境有差异的操作留给子类去实现 * * @author Killer */ public abstract class AbstractRedisOperation implements RedisOperation{ protected Logger logger = LoggerFactory.getLogger(getClass()); @Override public String get(final String key) { return exec(new RedisCallback<String>() { @Override public String doCallback(JedisCommands jedis) { return jedis.get(key); } }); } @Override public String set(final String key, final int seconds, final String value) { return exec(new RedisCallback<String>() { @Override public String doCallback(JedisCommands jedis) { return jedis.setex(key, seconds, value); } }); } @Override public String set(final String key, final String value) { return exec(new RedisCallback<String>() { @Override public String doCallback(JedisCommands jedis) { return jedis.set(key, value); } }); } @Override public Long expire(final String key, final Integer seconds){ return exec(new RedisCallback<Long>() { @Override public Long doCallback(JedisCommands jedis) { return jedis.expire(key, seconds); } }); } @Override public Long expireAt(final String key, final long unixTime){ return exec(new RedisCallback<Long>() { @Override public Long doCallback(JedisCommands jedis) { return jedis.expireAt(key, unixTime); } }); } @Override public Long persist(final String key){ return exec(new RedisCallback<Long>() { @Override public Long doCallback(JedisCommands jedis) { return jedis.persist(key); } }); } @Override public Long ttl(final String key){ return exec(new RedisCallback<Long>() { @Override public Long doCallback(JedisCommands jedis) { return jedis.ttl(key); } }); } @Override public Long incr(final String key) { return exec(new RedisCallback<Long>() { @Override public Long doCallback(JedisCommands jedis) { return jedis.incr(key); } }); } @Override public Long incrby(final String key, final Long increment) { return exec(new RedisCallback<Long>() { @Override public Long doCallback(JedisCommands jedis) { return jedis.incrBy(key, increment); } }); } @Override public Long decr(final String key) { return exec(new RedisCallback<Long>() { @Override public Long doCallback(JedisCommands jedis) { return jedis.decr(key); } }); } @Override public Long decrby(final String key, final Long decrement) { return exec(new RedisCallback<Long>() { @Override public Long doCallback(JedisCommands jedis) { return jedis.decrBy(key, decrement); } }); } @Override public boolean exists(final String key) { return exec(new RedisCallback<Boolean>() { @Override public Boolean doCallback(JedisCommands jedis) { return jedis.exists(key); } }); } @Override public Long lrem(final String key, final Long count, final String value) { return exec(new RedisCallback<Long>() { @Override public Long doCallback(JedisCommands jedis) { return jedis.lrem(key, count, value); } }); } @Override public Long rpush(final String key, final String... values) { return exec(new RedisCallback<Long>() { @Override public Long doCallback(JedisCommands jedis) { return jedis.rpush(key, values); } }); } @Override public Long lpush(final String key, final String ...values){ return exec(new RedisCallback<Long>() { @Override public Long doCallback(JedisCommands jedis) { return jedis.lpush(key, values); } }); } @Override public String lpop(final String key){ return exec(new RedisCallback<String>() { @Override public String doCallback(JedisCommands jedis) { return jedis.lpop(key); } }); } @Override public String rpop(final String key){ return exec(new RedisCallback<String>() { @Override public String doCallback(JedisCommands jedis) { return jedis.rpop(key); } }); } @Override public List<String> lrange(final String key, final Long start, final Long end) { return exec(new RedisCallback<List<String>>() { @Override public List<String> doCallback(JedisCommands jedis) { return jedis.lrange(key, start, end); } }); } @Override public String lset(final String key, final Long index, final String value) { return exec(new RedisCallback<String>() { @Override public String doCallback(JedisCommands jedis) { return jedis.lset(key, index, value); } }); } @Override public String ltrim(final String key, final Long start, final Long end) { return exec(new RedisCallback<String>() { @Override public String doCallback(JedisCommands jedis) { return jedis.ltrim(key, start, end); } }); } @Override public Long llen(final String key) { return exec(new RedisCallback<Long>() { @Override public Long doCallback(JedisCommands jedis) { return jedis.llen(key); } }); } @Override public String hmset(final String key, final Map<String, String> fieldValues) { return exec(new RedisCallback<String>() { @Override public String doCallback(JedisCommands jedis) { return jedis.hmset(key, fieldValues); } }); } @Override public Long hincrBy(final String key,final String field, final Long increment) { return exec(new RedisCallback<Long>() { @Override public Long doCallback(JedisCommands jedis) { return jedis.hincrBy(key, field, increment); } }); } @Override public List<String> hmget(final String key, final String... fields) { return exec(new RedisCallback<List<String>>() { @Override public List<String> doCallback(JedisCommands jedis) { return jedis.hmget(key, fields); } }); } @Override public Map<String, String> hgetAll(final String key) { return exec(new RedisCallback<Map<String,String>>() { @Override public Map<String, String> doCallback(JedisCommands jedis) { return jedis.hgetAll(key); } }); } @Override public Set<String> hkeys(final String key) { return exec(new RedisCallback<Set<String>>() { @Override public Set<String> doCallback(JedisCommands jedis) { return jedis.hkeys(key); } }); } @Override public Long hdel(final String key, final String... fields) { return exec(new RedisCallback<Long>() { @Override public Long doCallback(JedisCommands jedis) { return jedis.hdel(key, fields); } }); } @Override public boolean hset(final String key, final String field, final String value) { return exec(new RedisCallback<Boolean>() { @Override public Boolean doCallback(JedisCommands jedis) { return jedis.hset(key, field, value) > 0; } }); } @Override public Long sadd(final String key, final String... members) { return exec(new RedisCallback<Long>() { @Override public Long doCallback(JedisCommands jedis) { return jedis.sadd(key, members); } }); } @Override public Long scard(final String key) { return exec(new RedisCallback<Long>() { @Override public Long doCallback(JedisCommands jedis) { return jedis.scard(key); } }); } @Override public Set<String> smembers(final String key) { return exec(new RedisCallback<Set<String>>() { @Override public Set<String> doCallback(JedisCommands jedis) { return jedis.smembers(key); } }); } @Override public Long srem(final String key, final String... members) { return exec(new RedisCallback<Long>() { @Override public Long doCallback(JedisCommands jedis) { return jedis.srem(key, members); } }); } @Override public List<String> srandmember(final String key, final Integer count) { return exec(new RedisCallback<List<String>>() { @Override public List<String> doCallback(JedisCommands jedis) { return jedis.srandmember(key, count); } }); } @Override public Long zadd(final String key, final Double score, final String member){ return exec(new RedisCallback<Long>() { @Override public Long doCallback(JedisCommands jedis) { return jedis.zadd(key, score, member); } }); } @Override public Long zadd(final String key, final Map<String, Double> scoreMembers){ return exec(new RedisCallback<Long>() { @Override public Long doCallback(JedisCommands jedis) { return jedis.zadd(key, scoreMembers); } }); } public Long zrem(final String key, final String... member){ return exec(new RedisCallback<Long>() { @Override public Long doCallback(JedisCommands jedis) { return jedis.zrem(key, member); } }); } public Double zincrby(final String key, final double score, final String member){ return exec(new RedisCallback<Double>() { @Override public Double doCallback(JedisCommands jedis) { return jedis.zincrby(key, score, member); } }); } public Long zrank(final String key, final String member){ return exec(new RedisCallback<Long>() { @Override public Long doCallback(JedisCommands jedis) { return jedis.zrank(key, member); } }); } public Long zrevrank(final String key, final String member){ return exec(new RedisCallback<Long>() { @Override public Long doCallback(JedisCommands jedis) { return jedis.zrank(key, member); } }); } public Long zcount(final String key, final double min, final double max){ return exec(new RedisCallback<Long>() { @Override public Long doCallback(JedisCommands jedis) { return jedis.zcount(key, min, max); } }); } public Double zscore(final String key, final String member){ return exec(new RedisCallback<Double>() { @Override public Double doCallback(JedisCommands jedis) { return jedis.zscore(key, member); } }); } public Set<String> zrangeByIndex(final String key, final long start, final long end){ return exec(new RedisCallback<Set<String>>() { @Override public Set<String> doCallback(JedisCommands jedis) { return jedis.zrange(key, start, end); } }); } public Set<String> zrangeByScore(final String key, final double min, final double max){ return exec(new RedisCallback<Set<String>>() { @Override public Set<String> doCallback(JedisCommands jedis) { return jedis.zrangeByScore(key, min, max); } }); } public Set<String> zrevrangeByIndex(final String key,final long start, final long end){ return exec(new RedisCallback<Set<String>>() { @Override public Set<String> doCallback(JedisCommands jedis) { return jedis.zrevrange(key, start, end); } }); } public Set<String> zrevrangeByScore(final String key, final double max, final double min){ return exec(new RedisCallback<Set<String>>() { @Override public Set<String> doCallback(JedisCommands jedis) { return jedis.zrevrangeByScore(key, max, min); } }); } public Set<String> zrangeByScore(final String key, final double min, final double max, final int offset, final int count){ return exec(new RedisCallback<Set<String>>() { @Override public Set<String> doCallback(JedisCommands jedis) { return jedis.zrangeByScore(key, min, max, offset, count); } }); } public Set<String> zrevrangeByScore(final String key, final double max, final double min, final int offset, final int count){ return exec(new RedisCallback<Set<String>>() { @Override public Set<String> doCallback(JedisCommands jedis) { return jedis.zrevrangeByScore(key, min, max, offset, count); } }); } public Set<Tuple> zrangeWithScores(final String key, final long start, final long end){ return exec(new RedisCallback<Set<Tuple>>() { @Override public Set<Tuple> doCallback(JedisCommands jedis) { return jedis.zrangeWithScores(key, start, end); } }); } public Set<Tuple> zrevrangeWithScores(final String key, final long start, final long end){ return exec(new RedisCallback<Set<Tuple>>() { @Override public Set<Tuple> doCallback(JedisCommands jedis) { return jedis.zrevrangeWithScores(key, start, end); } }); } /** * * @param callback * @return */ public abstract <T> T exec(final RedisCallback<T> callback); }