88 lines
2.5 KiB
Java
88 lines
2.5 KiB
Java
|
|
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));
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
|