//package com.weiqi.mis;
//
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.context.annotation.Bean;
//import org.springframework.context.annotation.Configuration;
//import org.springframework.context.annotation.PropertySource;
//import redis.clients.jedis.Jedis;
//import redis.clients.jedis.JedisPool;
//import redis.clients.jedis.JedisPoolConfig;
//
//import java.util.function.Consumer;
//
///**
// * Created by sky on 2019/7/24.
// */
//
//
//@Configuration
////@PropertySource("classpath:redis.properties")
//public class RedisUtil {
//
//    @Value("${spring.redis.host:192.168.0.1}")
//    private String host;
//
//    @Value("${spring.redis.port:6793}")
//    private int port;
//
//    @Value("${spring.redis.timeout:5000}")
//    private int timeout;
//
//    @Value("${spring.redis.jedis.pool.max-idle:1}")
//    private int maxIdle;
//
//    @Value("${spring.redis.jedis.pool.max-wait:0}")
//    private long maxWaitMillis;
//
//    @Value("${spring.redis.block-when-exhausted:0}")
//    private boolean  blockWhenExhausted;
//
//    @Bean
//    public JedisPool redisPoolFactory()  throws Exception{
//
//        JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
//        jedisPoolConfig.setMaxIdle(maxIdle);
//        jedisPoolConfig.setMaxWaitMillis(maxWaitMillis);
//        // 连接耗尽时是否阻塞, false报异常,ture阻塞直到超时, 默认true
//        jedisPoolConfig.setBlockWhenExhausted(blockWhenExhausted);
//        // 是否启用pool的jmx管理功能, 默认true
//        jedisPoolConfig.setJmxEnabled(true);
//        JedisPool jedisPool = new JedisPool(jedisPoolConfig, host, port, timeout);
//        return jedisPool;
//
//    }
//
//
//    public static JedisPool pool=null;
//    @Autowired
//    void init(JedisPool _pool)
//    {
//        pool=_pool;
//    }
//    public static void call(Consumer<Jedis> fun)
//    {
//        try (Jedis jedis = pool.getResource()) {
//            fun.accept(jedis);
//        }
//    }
//
//
//
//    private static final String SCRIPT="local t= redis.call('time')[1]\n return redis.call('incrby',KEYS[1]..':'..KEYS[2]..':'..t,ARGV[1])";
//    public static Long qpsOK(String key, Integer value) {
//        try (Jedis jedis = pool.getResource()) {
//            return (Long) jedis.eval(SCRIPT,2,"incrOK",key, String.valueOf(value));
//        }
//    }
//    public static Long qpsERROR(String key, Integer value) {
//        try (Jedis jedis = pool.getResource()) {
//            return (Long) jedis.eval(SCRIPT,2,"incrERROR",key, String.valueOf(value));
//        }
//    }
//
//
//}
//
//
