redis数据集插件。
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

121 lines
3.2 KiB

package com.fr.plugin.db.redis.core.accessor.category;
import com.fanruan.api.log.LogKit;
import com.fr.plugin.db.redis.core.accessor.EmbedRedis;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisCluster;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.Tuple;
import java.io.IOException;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeSet;
/**
* @author richie
* @version 10.0
* Created by richie on 2019-09-18
*/
public class ClusterRedisClient implements EmbedRedis {
private JedisCluster jedisCluster;
public ClusterRedisClient(JedisCluster jedisCluster) {
this.jedisCluster = jedisCluster;
}
@Override
public Set<String> keys(String pattern) {
TreeSet<String> keys = new TreeSet<String>();
Map<String, JedisPool> clusterNodes = jedisCluster.getClusterNodes();
for (String k : clusterNodes.keySet()) {
JedisPool jp = clusterNodes.get(k);
Jedis connection = jp.getResource();
try {
keys.addAll(connection.keys(pattern));
} catch (Exception e) {
LogKit.error(e.getMessage(), e);
} finally {
connection.close();
}
}
return keys;
}
@Override
public String get(String key) {
return jedisCluster.get(key);
}
@Override
public String hget(String key, String field) {
return jedisCluster.hget(key, field);
}
@Override
public List<String> hmget(String key, String... fields) {
return jedisCluster.hmget(key, fields);
}
@Override
public Map<String, String> hgetAll(String key) {
return jedisCluster.hgetAll(key);
}
@Override
public Set<String> hkeys(String key) {
return jedisCluster.hkeys(key);
}
@Override
public List<String> lrange(String key, long start, long end) {
return jedisCluster.lrange(key, start, end);
}
@Override
public List<String> mget(String... keys) {
return jedisCluster.mget(keys);
}
@Override
public Set<String> smembers(String key) {
return jedisCluster.smembers(key);
}
@Override
public Set<Tuple> zrangeWithScores(String key, long start, long end) {
return jedisCluster.zrangeWithScores(key, start, end);
}
@Override
public void select(int index) {
Map<String, JedisPool> clusterNodes = jedisCluster.getClusterNodes();
for (Map.Entry<String, JedisPool> entry : clusterNodes.entrySet()) {
entry.getValue().getResource().select(index);
}
}
@Override
public String ping() {
Map<String, JedisPool> clusterNodes = jedisCluster.getClusterNodes();
for (String k : clusterNodes.keySet()) {
JedisPool jp = clusterNodes.get(k);
Jedis connection = jp.getResource();
try {
return connection.ping();
} catch (Exception e) {
LogKit.error(e.getMessage(), e);
} finally {
connection.close();
}
}
return null;
}
@Override
public void close() throws IOException {
jedisCluster.close();
}
}