![JAR search and dependency download from the Maven repository](/logo.png)
com.weicoder.redis.impl.RedisCluster Maven / Gradle / Ivy
package com.weicoder.redis.impl;
import java.util.List;
import java.util.Map;
import java.util.Set;
import com.weicoder.common.constants.C;
import com.weicoder.common.interfaces.Calls;
import com.weicoder.common.lang.W;
import com.weicoder.common.log.Logs;
import com.weicoder.redis.base.BaseRedis;
import com.weicoder.redis.builder.JedisBuilder;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisCluster;
import redis.clients.jedis.JedisPubSub;
import redis.clients.jedis.Transaction;
import redis.clients.jedis.resps.Tuple;
import redis.clients.jedis.util.JedisClusterCRC16;
/**
* redis 集群
*
* @author wudi
*/
public final class RedisCluster extends BaseRedis {
// 声明JedisCluster
private JedisCluster cluster;
/**
* 构造
*
* @param name 名称
*/
public RedisCluster(String name) {
super(name);
cluster = JedisBuilder.buildCluster(name);
}
@Override
public long append(String key, Object value) {
return cluster.append(W.B.toBytes(key), W.B.toBytes(value));
}
@Override
public String set(String key, String value) {
return cluster.set(key, value);
}
@Override
public long hset(String key, String field, String value) {
return cluster.hset(key, field, value);
}
@Override
public String set(byte[] key, byte[] value) {
return cluster.set(key, value);
}
@Override
public String setex(String key, long seconds, String value) {
return cluster.setex(key, seconds, value);
}
@Override
public String get(String key) {
return cluster.get(key);
}
@Override
public String hget(String key, String field) {
return cluster.hget(key, field);
}
@Override
public long hlen(String key) {
return cluster.hlen(key);
}
@Override
public Map hgetAll(String key) {
return cluster.hgetAll(key);
}
@Override
public byte[] get(byte[] key) {
return cluster.get(key);
}
@Override
public List mget(byte[][] key) {
return cluster.mget(key);
}
@Override
public long del(String... key) {
return cluster.del(key);
}
@Override
public long hdel(String key, String... field) {
return cluster.hdel(key, field);
}
@Override
public boolean exists(String key) {
return cluster.exists(key);
}
@Override
public boolean sexists(String key, String value) {
return cluster.sismember(key, value);
}
@Override
public boolean hexists(String key, String field) {
return cluster.hexists(key, field);
}
@Override
public long hsetnx(String key, String field, String value) {
return cluster.hsetnx(key, field, value);
}
@Override
public long ttl(String key) {
return cluster.ttl(key);
}
@Override
public void subscribe(Subscribe sub, String... channels) {
getJedis().subscribe(new JedisPubSub() {
@Override
public void onMessage(String channel, String message) {
long time = System.currentTimeMillis();
sub.onMessage(channel, message);
Logs.debug("redis subscribe={} channel={} message={} time={} thread={}",
sub.getClass().getSimpleName(), channel, message, System.currentTimeMillis() - time);
}
}, channels);
}
@Override
public long publish(String channel, String message) {
return cluster.publish(channel, message);
}
@Override
public long publish(byte[] channel, byte[] message) {
return cluster.publish(channel, message);
}
@Override
public Long rpush(String key, String... strings) {
return cluster.rpush(key, strings);
}
@Override
public String lpop(String key) {
return cluster.lpop(key);
}
@Override
public Long lpush(String key, String... strings) {
return cluster.lpush(key, strings);
}
@Override
public long llen(String key) {
return cluster.llen(key);
}
@Override
public long zcard(String key) {
return cluster.zcard(key);
}
@Override
public Double zscore(String key, String member) {
return cluster.zscore(key, member);
}
@Override
public List zrevrange(String key, long start, long end) {
return cluster.zrevrange(key, start, end);
}
@Override
public List zrange(String key, long start, long end) {
return cluster.zrange(key, start, end);
}
@Override
public List zrangeByScore(String key, String min, String max) {
return cluster.zrangeByScore(key, min, max);
}
@Override
public Long zadd(String key, double score, String member) {
return cluster.zadd(key, score, member);
}
@Override
public Long sadd(String key, String... members) {
return cluster.sadd(key, members);
}
@Override
public Set smembers(String key) {
return cluster.smembers(key);
}
@Override
public long scard(String key) {
return cluster.scard(key);
}
@Override
public Long zrem(String key, String... members) {
return cluster.zrem(key, members);
}
@Override
public Long srem(String key, String... members) {
return cluster.srem(key, members);
}
@Override
public Double zincrby(String key, double increment, String member) {
return cluster.zincrby(key, increment, member);
}
@Override
public void exec(Calls.EoV callback) {
callback.call(getResource(C.S.EMPTY));
}
@Override
public List lrange(String key, long start, long stop) {
return cluster.lrange(key, start, stop);
}
@Override
public Jedis getResource(String key) {
return new Jedis(cluster.getConnectionFromSlot(JedisClusterCRC16.getCRC16(key)));
}
@Override
public List zrevrangeByScoreWithScores(String key, double max, double min, int offset, int count) {
return cluster.zrevrangeByScoreWithScores(key, max, min, offset, count);
}
@Override
public String rpop(String key) {
return cluster.rpop(key);
}
@Override
public void multi(Calls.EoV callback) {
try (Jedis jedis = getJedis()) {
Transaction t = jedis.multi();
try {
callback.call(t);
t.exec();
} catch (Exception e) {
t.discard();
Logs.error(e);
} finally {
t.close();
}
}
}
private Jedis getJedis() {
return new Jedis(cluster.getConnectionFromSlot(0));
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy