jedis源码阅读
package redis.clients.jedis; import java.util.ArrayList; import java.util.HashSet; import java.util.Iterator; import java.util.LinkedHashSet; import java.util.List; import java.util.Map; import java.util.Set; import redis.clients.util.SafeEncoder; import redis.clients.util.Slowlog; public class Jedis extends BinaryJedis implements JedisCommands { public Jedis(String host) { super(host); } public Jedis(String host, int port) { super(host, port); } public Jedis(String host, int port, int timeout) { super(host, port, timeout); } public Jedis(JedisShardInfo shardInfo) { super(shardInfo); } public String ping() { checkIsInMulti(); this.client.ping(); return this.client.getStatusCodeReply(); } public String set(String key, String value) { checkIsInMulti(); this.client.set(key, value); return this.client.getStatusCodeReply(); } public String get(String key) { checkIsInMulti(); this.client.sendCommand(Protocol.Command.GET, new String[] { key }); return this.client.getBulkReply(); } public String quit() { checkIsInMulti(); this.client.quit(); return this.client.getStatusCodeReply(); } public Boolean exists(String key) { checkIsInMulti(); this.client.exists(key); return Boolean.valueOf(this.client.getIntegerReply().longValue() == 1L); } public Long del(String... keys) { checkIsInMulti(); this.client.del(keys); return this.client.getIntegerReply(); } public String type(String key) { checkIsInMulti(); this.client.type(key); return this.client.getStatusCodeReply(); } public String flushDB() { checkIsInMulti(); this.client.flushDB(); return this.client.getStatusCodeReply(); } public Set<String> keys(String pattern) { checkIsInMulti(); this.client.keys(pattern); return (Set)BuilderFactory.STRING_SET.build(this.client.getBinaryMultiBulkReply()); } public String randomKey() { checkIsInMulti(); this.client.randomKey(); return this.client.getBulkReply(); } public String rename(String oldkey, String newkey) { checkIsInMulti(); this.client.rename(oldkey, newkey); return this.client.getStatusCodeReply(); } public Long renamenx(String oldkey, String newkey) { checkIsInMulti(); this.client.renamenx(oldkey, newkey); return this.client.getIntegerReply(); } public Long expire(String key, int seconds) { checkIsInMulti(); this.client.expire(key, seconds); return this.client.getIntegerReply(); } public Long expireAt(String key, long unixTime) { checkIsInMulti(); this.client.expireAt(key, unixTime); return this.client.getIntegerReply(); } public Long ttl(String key) { checkIsInMulti(); this.client.ttl(key); return this.client.getIntegerReply(); } public String select(int index) { checkIsInMulti(); this.client.select(index); return this.client.getStatusCodeReply(); } public Long move(String key, int dbIndex) { checkIsInMulti(); this.client.move(key, dbIndex); return this.client.getIntegerReply(); } public String flushAll() { checkIsInMulti(); this.client.flushAll(); return this.client.getStatusCodeReply(); } public String getSet(String key, String value) { checkIsInMulti(); this.client.getSet(key, value); return this.client.getBulkReply(); } public List<String> mget(String... keys) { checkIsInMulti(); this.client.mget(keys); return this.client.getMultiBulkReply(); } public Long setnx(String key, String value) { checkIsInMulti(); this.client.setnx(key, value); return this.client.getIntegerReply(); } public String setex(String key, int seconds, String value) { checkIsInMulti(); this.client.setex(key, seconds, value); return this.client.getStatusCodeReply(); } public String mset(String... keysvalues) { checkIsInMulti(); this.client.mset(keysvalues); return this.client.getStatusCodeReply(); } public Long msetnx(String... keysvalues) { checkIsInMulti(); this.client.msetnx(keysvalues); return this.client.getIntegerReply(); } public Long decrBy(String key, long integer) { checkIsInMulti(); this.client.decrBy(key, integer); return this.client.getIntegerReply(); } public Long decr(String key) { checkIsInMulti(); this.client.decr(key); return this.client.getIntegerReply(); } public Long incrBy(String key, long integer) { checkIsInMulti(); this.client.incrBy(key, integer); return this.client.getIntegerReply(); } public Long incr(String key) { checkIsInMulti(); this.client.incr(key); return this.client.getIntegerReply(); } public Long append(String key, String value) { checkIsInMulti(); this.client.append(key, value); return this.client.getIntegerReply(); } public String substr(String key, int start, int end) { checkIsInMulti(); this.client.substr(key, start, end); return this.client.getBulkReply(); } public Long hset(String key, String field, String value) { checkIsInMulti(); this.client.hset(key, field, value); return this.client.getIntegerReply(); } public String hget(String key, String field) { checkIsInMulti(); this.client.hget(key, field); return this.client.getBulkReply(); } public Long hsetnx(String key, String field, String value) { checkIsInMulti(); this.client.hsetnx(key, field, value); return this.client.getIntegerReply(); } public String hmset(String key, Map<String, String> hash) { checkIsInMulti(); this.client.hmset(key, hash); return this.client.getStatusCodeReply(); } public List<String> hmget(String key, String... fields) { checkIsInMulti(); this.client.hmget(key, fields); return this.client.getMultiBulkReply(); } public Long hincrBy(String key, String field, long value) { checkIsInMulti(); this.client.hincrBy(key, field, value); return this.client.getIntegerReply(); } public Boolean hexists(String key, String field) { checkIsInMulti(); this.client.hexists(key, field); return Boolean.valueOf(this.client.getIntegerReply().longValue() == 1L); } public Long hdel(String key, String... fields) { checkIsInMulti(); this.client.hdel(key, fields); return this.client.getIntegerReply(); } public Long hlen(String key) { checkIsInMulti(); this.client.hlen(key); return this.client.getIntegerReply(); } public Set<String> hkeys(String key) { checkIsInMulti(); this.client.hkeys(key); return (Set)BuilderFactory.STRING_SET.build(this.client.getBinaryMultiBulkReply()); } public List<String> hvals(String key) { checkIsInMulti(); this.client.hvals(key); List<String> lresult = this.client.getMultiBulkReply(); return lresult; } public Map<String, String> hgetAll(String key) { checkIsInMulti(); this.client.hgetAll(key); return (Map)BuilderFactory.STRING_MAP.build(this.client.getBinaryMultiBulkReply()); } public Long rpush(String key, String... strings) { checkIsInMulti(); this.client.rpush(key, strings); return this.client.getIntegerReply(); } public Long lpush(String key, String... strings) { checkIsInMulti(); this.client.lpush(key, strings); return this.client.getIntegerReply(); } public Long llen(String key) { checkIsInMulti(); this.client.llen(key); return this.client.getIntegerReply(); } public List<String> lrange(String key, long start, long end) { checkIsInMulti(); this.client.lrange(key, start, end); return this.client.getMultiBulkReply(); } public String ltrim(String key, long start, long end) { checkIsInMulti(); this.client.ltrim(key, start, end); return this.client.getStatusCodeReply(); } public String lindex(String key, long index) { checkIsInMulti(); this.client.lindex(key, index); return this.client.getBulkReply(); } public String lset(String key, long index, String value) { checkIsInMulti(); this.client.lset(key, index, value); return this.client.getStatusCodeReply(); } public Long lrem(String key, long count, String value) { checkIsInMulti(); this.client.lrem(key, count, value); return this.client.getIntegerReply(); } public String lpop(String key) { checkIsInMulti(); this.client.lpop(key); return this.client.getBulkReply(); } public String rpop(String key) { checkIsInMulti(); this.client.rpop(key); return this.client.getBulkReply(); } public String rpoplpush(String srckey, String dstkey) { checkIsInMulti(); this.client.rpoplpush(srckey, dstkey); return this.client.getBulkReply(); } public Long sadd(String key, String... members) { checkIsInMulti(); this.client.sadd(key, members); return this.client.getIntegerReply(); } public Set<String> smembers(String key) { checkIsInMulti(); this.client.smembers(key); List<String> members = this.client.getMultiBulkReply(); return new HashSet(members); } public Long srem(String key, String... members) { checkIsInMulti(); this.client.srem(key, members); return this.client.getIntegerReply(); } public String spop(String key) { checkIsInMulti(); this.client.spop(key); return this.client.getBulkReply(); } public Long smove(String srckey, String dstkey, String member) { checkIsInMulti(); this.client.smove(srckey, dstkey, member); return this.client.getIntegerReply(); } public Long scard(String key) { checkIsInMulti(); this.client.scard(key); return this.client.getIntegerReply(); } public Boolean sismember(String key, String member) { checkIsInMulti(); this.client.sismember(key, member); return Boolean.valueOf(this.client.getIntegerReply().longValue() == 1L); } public Set<String> sinter(String... keys) { checkIsInMulti(); this.client.sinter(keys); List<String> members = this.client.getMultiBulkReply(); return new HashSet(members); } public Long sinterstore(String dstkey, String... keys) { checkIsInMulti(); this.client.sinterstore(dstkey, keys); return this.client.getIntegerReply(); } public Set<String> sunion(String... keys) { checkIsInMulti(); this.client.sunion(keys); List<String> members = this.client.getMultiBulkReply(); return new HashSet(members); } public Long sunionstore(String dstkey, String... keys) { checkIsInMulti(); this.client.sunionstore(dstkey, keys); return this.client.getIntegerReply(); } public Set<String> sdiff(String... keys) { checkIsInMulti(); this.client.sdiff(keys); return (Set)BuilderFactory.STRING_SET.build(this.client.getBinaryMultiBulkReply()); } public Long sdiffstore(String dstkey, String... keys) { checkIsInMulti(); this.client.sdiffstore(dstkey, keys); return this.client.getIntegerReply(); } public String srandmember(String key) { checkIsInMulti(); this.client.srandmember(key); return this.client.getBulkReply(); } public Long zadd(String key, double score, String member) { checkIsInMulti(); this.client.zadd(key, score, member); return this.client.getIntegerReply(); } public Long zadd(String key, Map<Double, String> scoreMembers) { checkIsInMulti(); this.client.zadd(key, scoreMembers); return this.client.getIntegerReply(); } public Set<String> zrange(String key, long start, long end) { checkIsInMulti(); this.client.zrange(key, start, end); List<String> members = this.client.getMultiBulkReply(); return new LinkedHashSet(members); } public Long zrem(String key, String... members) { checkIsInMulti(); this.client.zrem(key, members); return this.client.getIntegerReply(); } public Double zincrby(String key, double score, String member) { checkIsInMulti(); this.client.zincrby(key, score, member); String newscore = this.client.getBulkReply(); return Double.valueOf(newscore); } public Long zrank(String key, String member) { checkIsInMulti(); this.client.zrank(key, member); return this.client.getIntegerReply(); } public Long zrevrank(String key, String member) { checkIsInMulti(); this.client.zrevrank(key, member); return this.client.getIntegerReply(); } public Set<String> zrevrange(String key, long start, long end) { checkIsInMulti(); this.client.zrevrange(key, start, end); List<String> members = this.client.getMultiBulkReply(); return new LinkedHashSet(members); } public Set<Tuple> zrangeWithScores(String key, long start, long end) { checkIsInMulti(); this.client.zrangeWithScores(key, start, end); Set<Tuple> set = getTupledSet(); return set; } public Set<Tuple> zrevrangeWithScores(String key, long start, long end) { checkIsInMulti(); this.client.zrevrangeWithScores(key, start, end); Set<Tuple> set = getTupledSet(); return set; } public Long zcard(String key) { checkIsInMulti(); this.client.zcard(key); return this.client.getIntegerReply(); } public Double zscore(String key, String member) { checkIsInMulti(); this.client.zscore(key, member); String score = this.client.getBulkReply(); return score != null ? new Double(score) : null; } public String watch(String... keys) { this.client.watch(keys); return this.client.getStatusCodeReply(); } public List<String> sort(String key) { checkIsInMulti(); this.client.sort(key); return this.client.getMultiBulkReply(); } public List<String> sort(String key, SortingParams sortingParameters) { checkIsInMulti(); this.client.sort(key, sortingParameters); return this.client.getMultiBulkReply(); } public List<String> blpop(int timeout, String... keys) { checkIsInMulti(); List<String> args = new ArrayList(); for (String arg : keys) { args.add(arg); } args.add(String.valueOf(timeout)); this.client.blpop((String[])args.toArray(new String[args.size()])); this.client.setTimeoutInfinite(); List<String> multiBulkReply = this.client.getMultiBulkReply(); this.client.rollbackTimeout(); return multiBulkReply; } public Long sort(String key, SortingParams sortingParameters, String dstkey) { checkIsInMulti(); this.client.sort(key, sortingParameters, dstkey); return this.client.getIntegerReply(); } public Long sort(String key, String dstkey) { checkIsInMulti(); this.client.sort(key, dstkey); return this.client.getIntegerReply(); } public List<String> brpop(int timeout, String... keys) { checkIsInMulti(); List<String> args = new ArrayList(); for (String arg : keys) { args.add(arg); } args.add(String.valueOf(timeout)); this.client.brpop((String[])args.toArray(new String[args.size()])); this.client.setTimeoutInfinite(); List<String> multiBulkReply = this.client.getMultiBulkReply(); this.client.rollbackTimeout(); return multiBulkReply; } public String auth(String password) { checkIsInMulti(); this.client.auth(password); return this.client.getStatusCodeReply(); } public void subscribe(JedisPubSub jedisPubSub, String... channels) { checkIsInMulti(); connect(); this.client.setTimeoutInfinite(); jedisPubSub.proceed(this.client, channels); this.client.rollbackTimeout(); } public Long publish(String channel, String message) { checkIsInMulti(); this.client.publish(channel, message); return this.client.getIntegerReply(); } public void psubscribe(JedisPubSub jedisPubSub, String... patterns) { checkIsInMulti(); connect(); this.client.setTimeoutInfinite(); jedisPubSub.proceedWithPatterns(this.client, patterns); this.client.rollbackTimeout(); } public Long zcount(String key, double min, double max) { checkIsInMulti(); this.client.zcount(key, min, max); return this.client.getIntegerReply(); } public Long zcount(String key, String min, String max) { checkIsInMulti(); this.client.zcount(key, min, max); return this.client.getIntegerReply(); } public Set<String> zrangeByScore(String key, double min, double max) { checkIsInMulti(); this.client.zrangeByScore(key, min, max); return new LinkedHashSet(this.client.getMultiBulkReply()); } public Set<String> zrangeByScore(String key, String min, String max) { checkIsInMulti(); this.client.zrangeByScore(key, min, max); return new LinkedHashSet(this.client.getMultiBulkReply()); } public Set<String> zrangeByScore(String key, double min, double max, int offset, int count) { checkIsInMulti(); this.client.zrangeByScore(key, min, max, offset, count); return new LinkedHashSet(this.client.getMultiBulkReply()); } public Set<String> zrangeByScore(String key, String min, String max, int offset, int count) { checkIsInMulti(); this.client.zrangeByScore(key, min, max, offset, count); return new LinkedHashSet(this.client.getMultiBulkReply()); } public Set<Tuple> zrangeByScoreWithScores(String key, double min, double max) { checkIsInMulti(); this.client.zrangeByScoreWithScores(key, min, max); Set<Tuple> set = getTupledSet(); return set; } public Set<Tuple> zrangeByScoreWithScores(String key, String min, String max) { checkIsInMulti(); this.client.zrangeByScoreWithScores(key, min, max); Set<Tuple> set = getTupledSet(); return set; } public Set<Tuple> zrangeByScoreWithScores(String key, double min, double max, int offset, int count) { checkIsInMulti(); this.client.zrangeByScoreWithScores(key, min, max, offset, count); Set<Tuple> set = getTupledSet(); return set; } public Set<Tuple> zrangeByScoreWithScores(String key, String min, String max, int offset, int count) { checkIsInMulti(); this.client.zrangeByScoreWithScores(key, min, max, offset, count); Set<Tuple> set = getTupledSet(); return set; } private Set<Tuple> getTupledSet() { checkIsInMulti(); List<String> membersWithScores = this.client.getMultiBulkReply(); Set<Tuple> set = new LinkedHashSet(); Iterator<String> iterator = membersWithScores.iterator(); while (iterator.hasNext()) { set.add(new Tuple((String)iterator.next(), Double.valueOf((String)iterator.next()))); } return set; } public Set<String> zrevrangeByScore(String key, double max, double min) { checkIsInMulti(); this.client.zrevrangeByScore(key, max, min); return new LinkedHashSet(this.client.getMultiBulkReply()); } public Set<String> zrevrangeByScore(String key, String max, String min) { checkIsInMulti(); this.client.zrevrangeByScore(key, max, min); return new LinkedHashSet(this.client.getMultiBulkReply()); } public Set<String> zrevrangeByScore(String key, double max, double min, int offset, int count) { checkIsInMulti(); this.client.zrevrangeByScore(key, max, min, offset, count); return new LinkedHashSet(this.client.getMultiBulkReply()); } public Set<Tuple> zrevrangeByScoreWithScores(String key, double max, double min) { checkIsInMulti(); this.client.zrevrangeByScoreWithScores(key, max, min); Set<Tuple> set = getTupledSet(); return set; } public Set<Tuple> zrevrangeByScoreWithScores(String key, double max, double min, int offset, int count) { checkIsInMulti(); this.client.zrevrangeByScoreWithScores(key, max, min, offset, count); Set<Tuple> set = getTupledSet(); return set; } public Set<Tuple> zrevrangeByScoreWithScores(String key, String max, String min, int offset, int count) { checkIsInMulti(); this.client.zrevrangeByScoreWithScores(key, max, min, offset, count); Set<Tuple> set = getTupledSet(); return set; } public Set<String> zrevrangeByScore(String key, String max, String min, int offset, int count) { checkIsInMulti(); this.client.zrevrangeByScore(key, max, min, offset, count); return new LinkedHashSet(this.client.getMultiBulkReply()); } public Set<Tuple> zrevrangeByScoreWithScores(String key, String max, String min) { checkIsInMulti(); this.client.zrevrangeByScoreWithScores(key, max, min); Set<Tuple> set = getTupledSet(); return set; } public Long zremrangeByRank(String key, long start, long end) { checkIsInMulti(); this.client.zremrangeByRank(key, start, end); return this.client.getIntegerReply(); } public Long zremrangeByScore(String key, double start, double end) { checkIsInMulti(); this.client.zremrangeByScore(key, start, end); return this.client.getIntegerReply(); } public Long zremrangeByScore(String key, String start, String end) { checkIsInMulti(); this.client.zremrangeByScore(key, start, end); return this.client.getIntegerReply(); } public Long zunionstore(String dstkey, String... sets) { checkIsInMulti(); this.client.zunionstore(dstkey, sets); return this.client.getIntegerReply(); } public Long zunionstore(String dstkey, ZParams params, String... sets) { checkIsInMulti(); this.client.zunionstore(dstkey, params, sets); return this.client.getIntegerReply(); } public Long zinterstore(String dstkey, String... sets) { checkIsInMulti(); this.client.zinterstore(dstkey, sets); return this.client.getIntegerReply(); } public Long zinterstore(String dstkey, ZParams params, String... sets) { checkIsInMulti(); this.client.zinterstore(dstkey, params, sets); return this.client.getIntegerReply(); } public Long strlen(String key) { this.client.strlen(key); return this.client.getIntegerReply(); } public Long lpushx(String key, String string) { this.client.lpushx(key, string); return this.client.getIntegerReply(); } public Long persist(String key) { this.client.persist(key); return this.client.getIntegerReply(); } public Long rpushx(String key, String string) { this.client.rpushx(key, string); return this.client.getIntegerReply(); } public String echo(String string) { this.client.echo(string); return this.client.getBulkReply(); } public Long linsert(String key, BinaryClient.LIST_POSITION where, String pivot, String value) { this.client.linsert(key, where, pivot, value); return this.client.getIntegerReply(); } public String brpoplpush(String source, String destination, int timeout) { this.client.brpoplpush(source, destination, timeout); this.client.setTimeoutInfinite(); String reply = this.client.getBulkReply(); this.client.rollbackTimeout(); return reply; } public Boolean setbit(String key, long offset, boolean value) { this.client.setbit(key, offset, value); return Boolean.valueOf(this.client.getIntegerReply().longValue() == 1L); } public Boolean getbit(String key, long offset) { this.client.getbit(key, offset); return Boolean.valueOf(this.client.getIntegerReply().longValue() == 1L); } public Long setrange(String key, long offset, String value) { this.client.setrange(key, offset, value); return this.client.getIntegerReply(); } public String getrange(String key, long startOffset, long endOffset) { this.client.getrange(key, startOffset, endOffset); return this.client.getBulkReply(); } public List<String> configGet(String pattern) { this.client.configGet(pattern); return this.client.getMultiBulkReply(); } public String configSet(String parameter, String value) { this.client.configSet(parameter, value); return this.client.getStatusCodeReply(); } public Object eval(String script, int keyCount, String... params) { this.client.setTimeoutInfinite(); this.client.eval(script, keyCount, params); return getEvalResult(); } private String[] getParams(List<String> keys, List<String> args) { int keyCount = keys.size(); int argCount = args.size(); String[] params = new String[keyCount + args.size()]; for (int i = 0; i < keyCount; i++) { params[i] = ((String)keys.get(i)); } for (int i = 0; i < argCount; i++) { params[(keyCount + i)] = ((String)args.get(i)); } return params; } public Object eval(String script, List<String> keys, List<String> args) { return eval(script, keys.size(), getParams(keys, args)); } public Object eval(String script) { return eval(script, 0, new String[0]); } public Object evalsha(String script) { return evalsha(script, 0, new String[0]); } private Object getEvalResult() { Object result = this.client.getOne(); if ((result instanceof byte[])) { return SafeEncoder.encode((byte[])result); } if ((result instanceof List)) { List<?> list = (List)result; List<String> listResult = new ArrayList(list.size()); for (Iterator i$ = list.iterator(); i$.hasNext();) { Object bin = i$.next(); listResult.add(SafeEncoder.encode((byte[])bin)); } return listResult; } return result; } public Object evalsha(String sha1, List<String> keys, List<String> args) { return evalsha(sha1, keys.size(), getParams(keys, args)); } public Object evalsha(String sha1, int keyCount, String... params) { checkIsInMulti(); this.client.evalsha(sha1, keyCount, params); return getEvalResult(); } public Boolean scriptExists(String sha1) { String[] a = new String[1]; a[0] = sha1; return (Boolean)scriptExists(a).get(0); } public List<Boolean> scriptExists(String... sha1) { this.client.scriptExists(sha1); List<Long> result = this.client.getIntegerMultiBulkReply(); List<Boolean> exists = new ArrayList(); for (Long value : result) { exists.add(Boolean.valueOf(value.longValue() == 1L)); } return exists; } public String scriptLoad(String script) { this.client.scriptLoad(script); return this.client.getBulkReply(); } public List<Slowlog> slowlogGet() { this.client.slowlogGet(); return Slowlog.from(this.client.getObjectMultiBulkReply()); } public List<Slowlog> slowlogGet(long entries) { this.client.slowlogGet(entries); return Slowlog.from(this.client.getObjectMultiBulkReply()); } public Long objectRefcount(String string) { this.client.objectRefcount(string); return this.client.getIntegerReply(); } public String objectEncoding(String string) { this.client.objectEncoding(string); return this.client.getBulkReply(); } public Long objectIdletime(String string) { this.client.objectIdletime(string); return this.client.getIntegerReply(); } }