//package com.sunyard.ssp.server;
//
//import lombok.extern.slf4j.Slf4j;
//import redis.clients.jedis.BinaryJedisPubSub;
//import redis.clients.jedis.Jedis;
//import redis.clients.jedis.JedisCluster;
//import redis.clients.jedis.JedisPool;
//
//import java.util.Set;
//
//// 包装集群和单点
//@Slf4j
//public class Redis {
//    private JedisCluster jedisCluster;
//
//    private JedisPool jedisPool;
//
//    private String mode;
//
//    private String password;
//
//    public void close() {
//        if ("solo".equals(mode)) {
//            if (null != jedisPool) {
//                try {
//                    jedisPool.close();
//                } catch (Exception e) {
//                }
//            }
//        } else {
//            if (null != jedisCluster) {
//                try {
//                    jedisCluster.close();
//                } catch (Exception e) {
//                }
//            }
//            jedisCluster = null;
//        }
//    }
//
//    public Redis(JedisCluster jedisCluster, JedisPool jedisPool, String password, String mode) {
//        this.jedisCluster = jedisCluster;
//        this.jedisPool = jedisPool;
//        this.mode = mode;
//        this.password = password;
//    }
//
//    public String get(String key) {
//        if ("solo".equals(mode)) {
//            Jedis jedis = jedisPool.getResource();
//            log.info("jedis publish[{}]",jedis);
//            try {
//
//                return jedis.get(key);
//            } finally {
//                if(jedis!=null){
//                    jedis.close();
//                }
//                //close();
//            }
//        } else {
//            return jedisCluster.get( key );
//        }
//    }
//
//    public void subscribe(BinaryJedisPubSub jedisPubSub, final byte[]... channels) {
//
//
//        if ("solo".equals(mode)) {
//            Jedis jedis = jedisPool.getResource();
//            log.info("jedis publish[{}]",jedis);
//            try {
//                jedis.auth(password);
//
//                jedis.subscribe(jedisPubSub, channels);
//            } finally {
//                if(jedis!=null){
//                    jedis.close();
//                }
//                //close();
//            }
//        } else {
//            jedisCluster.subscribe(jedisPubSub, channels);
//        }
//
//    }
//
//    public Long zrem(final String key, final String... members) {
//        if ("solo".equals(mode)) {
//            Jedis jedis = jedisPool.getResource();
//            try {
//                jedis.auth(password);
//                return jedis.zrem(key, members);
//            } finally {
//                if (jedis != null) {
//                    jedis.close();
//                    //close();
//                }
//            }
//        } else {
//            return jedisCluster.zrem(key, members);
//        }
//    }
//
//    public Long zremrangeByScore(final byte[] key, final double min, final double max) {
//        if ("solo".equals(mode)) {
//            Jedis jedis = jedisPool.getResource();
//            try {
//                jedis.auth(password);
//                return jedis.zremrangeByScore(key, min, max);
//            } finally {
//                if (jedis != null) {
//                    jedis.close();
//                    //close();
//                }
//            }
//        } else {
//            return jedisCluster.zremrangeByScore(key, min, max);
//        }
//    }
//
//    public Long zremrangeByScore(final String key, final double min, final double max) {
//        if ("solo".equals(mode)) {
//            Jedis jedis = jedisPool.getResource();
//            try {
//                jedis.auth(password);
//                return jedis.zremrangeByScore(key, min, max);
//            } finally {
//                if (jedis != null) {
//                    jedis.close();
//                    //close();
//                }
//            }
//        } else {
//            return jedisCluster.zremrangeByScore(key, min, max);
//        }
//    }
//
//    public Set<String> zrevrangeByScore(String key, double min, double max) {
//        if ("solo".equals(mode)) {
//            Jedis jedis = jedisPool.getResource();
//            try {
//                jedis.auth(password);
//                return jedis.zrevrangeByScore(key, min, max);
//            } finally {
//                if (jedis != null) {
//                    jedis.close();
//                    //close();
//                }
//            }
//        } else {
//            return jedisCluster.zrevrangeByScore(key, min, max);
//        }
//    }
//
//    public Set<String> zrangeByScore(String key, double min, double max) {
//        if ("solo".equals(mode)) {
//            Jedis jedis = jedisPool.getResource();
//            try {
//                jedis.auth(password);
//                return jedis.zrangeByScore(key, min, max);
//            } finally {
//                if (jedis != null) {
//                    jedis.close();
//                    //close();
//                }
//            }
//        } else {
//            return jedisCluster.zrangeByScore(key, min, max);
//        }
//    }
//
//    public Long zadd(final String key, final double score, final String member) {
//        if ("solo".equals(mode)) {
//            Jedis jedis = jedisPool.getResource();
//            jedis.auth(password);
//            return jedis.zadd(key, score, member);
//        } else {
//            return jedisCluster.zadd(key, score, member);
//        }
//    }
//
//    public Long zadd(final byte[] key, final double score, final byte[] member) {
//        if ("solo".equals(mode)) {
//            Jedis jedis = jedisPool.getResource();
//            jedis.auth(password);
//            return jedis.zadd(key, score, member);
//        } else {
//            return jedisCluster.zadd(key, score, member);
//        }
//    }
//
//    public Set<String> zrevrange(final String key, final long start, final long stop) {
//
//
//        Set<String> zrange;
//        if ("solo".equals(mode)) {
//            Jedis jedis = jedisPool.getResource();
//            try {
//                jedis.auth(password);
//                zrange = jedis.zrevrange(key, start, stop);
//            } finally {
//                if (jedis != null) {
//                    jedis.close();
//                    //close();
//                }
//            }
//        } else {
//            zrange = jedisCluster.zrevrange(key, start, stop);
//
//        }
//        return zrange;
//
//    }
//    public Set<String> zrange(final String key, final long start, final long stop) {
//
//
//        Set<String> zrange;
//        if ("solo".equals(mode)) {
//            Jedis jedis = jedisPool.getResource();
//            try {
//                jedis.auth(password);
//                zrange = jedis.zrange(key, start, stop);
//            } finally {
//                if (jedis != null) {
//                    jedis.close();
//                    //close();
//                }
//            }
//        } else {
//            zrange = jedisCluster.zrange(key, start, stop);
//
//        }
//        return zrange;
//
//    }
//
//    public Long sadd(final String key, final String... members) {
//        if ("solo".equals(mode)) {
//            Jedis jedis = jedisPool.getResource();
//            jedis.auth(password);
//            return jedis.sadd(key, members);
//        } else {
//            return jedisCluster.sadd(key, members);
//        }
//    }
//
//    public Long del(final String key) {
//        if ("solo".equals(mode)) {
//            Jedis jedis = jedisPool.getResource();
//            try {
//                jedis.auth(password);
//                return jedis.del(key);
//            } finally {
//                if (jedis != null) {
//                    jedis.close();
//                    //close();
//                }
//            }
//        } else {
//            return jedisCluster.del(key);
//        }
//    }
//
//
//    public Long publish(final byte[] channel, final byte[] message) {
//        Long publish = null;
//        if ("solo".equals(mode)) {
//            Jedis jedis = jedisPool.getResource();
//            log.info("jedis publish[{}]",jedis);
//            try {
//                jedis.auth(password);
//                publish = jedis.publish(channel, message);
//
//            }catch (Exception e){
//                e.printStackTrace();
//            }finally {
//                if (jedis != null) {
//                    jedis.close();
//                    //close();
//                }
//            }
//        } else {
//            publish = jedisCluster.publish(channel, message);
//        }
//        return publish;
//    }
//}
