car-mis/car-common/src/main/java/com/weiqi/mis/RedisUtil.java

88 lines
2.5 KiB
Java
Raw Normal View History

2024-10-26 15:28:51 +08:00
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));
}
}
}