forked from fanruan/demo-tabledata-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
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(); |
|
} |
|
}
|
|
|