1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171
| package com.liboshuai.slr.engine.biz.util;
import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import redis.clients.jedis.*;
import java.time.Duration; import java.util.*;
@Slf4j public class RedisUtil {
private static final JedisCluster jedisCluster; private static final String NAMESPACE;
static { String clusterNodes = ParameterUtil.getParameters().get("redis.cluster.nodes"); String[] nodes = clusterNodes.split(","); Set<HostAndPort> jedisClusterNodes = new HashSet<>(); for (String node : nodes) { String[] hostPort = node.trim().split(":"); jedisClusterNodes.add(new HostAndPort(hostPort[0], Integer.parseInt(hostPort[1]))); }
String decryptedPassword = ParameterUtil.getParameters().get("redis.password"); String password = JasyptUtil.decrypt(decryptedPassword);
NAMESPACE = ParameterUtil.getParameters().get("redis.namespace", "starlink_risk") + ":";
int connectionTimeout = Integer.parseInt(ParameterUtil.getParameters().get("redis.connectionTimeout")); int soTimeout = Integer.parseInt(ParameterUtil.getParameters().get("redis.soTimeout")); int maxAttempts = Integer.parseInt(ParameterUtil.getParameters().get("redis.maxAttempts"));
JedisPoolConfig poolConfig = new JedisPoolConfig(); poolConfig.setMaxWait(Duration.ofMillis(Long.parseLong(ParameterUtil.getParameters().get("redis.pool.maxWait")))); poolConfig.setTimeBetweenEvictionRuns(Duration.ofMillis(Long.parseLong(ParameterUtil.getParameters().get("redis.pool.timeBetweenEvictionRuns")))); poolConfig.setNumTestsPerEvictionRun(Integer.parseInt(ParameterUtil.getParameters().get("redis.pool.numTestsPerEvictionRun"))); poolConfig.setMaxTotal(Integer.parseInt(ParameterUtil.getParameters().get("redis.pool.maxTotal"))); poolConfig.setMaxIdle(Integer.parseInt(ParameterUtil.getParameters().get("redis.pool.maxIdle"))); poolConfig.setMinIdle(Integer.parseInt(ParameterUtil.getParameters().get("redis.pool.minIdle"))); poolConfig.setTestWhileIdle(true);
if (StringUtils.isNotBlank(password)) { jedisCluster = new JedisCluster(jedisClusterNodes, connectionTimeout, soTimeout, maxAttempts, password, poolConfig); } else { jedisCluster = new JedisCluster(jedisClusterNodes, connectionTimeout, soTimeout, maxAttempts, poolConfig); } log.info("RedisUtil 已初始化,使用命名空间:{}", NAMESPACE); }
public static boolean exists(String key) { return jedisCluster.exists(NAMESPACE + key); }
public static void del(String key) { jedisCluster.del(NAMESPACE + key); }
public static long ttl(String key) { return jedisCluster.ttl(NAMESPACE + key); }
public static void expire(String key, long seconds) { jedisCluster.expire(NAMESPACE + key, (int) seconds); }
public static String getString(String key) { return jedisCluster.get(NAMESPACE + key); }
public static void setString(String key, String value) { jedisCluster.set(NAMESPACE + key, value); }
public static void setStringWithExpiry(String key, String value, long seconds) { jedisCluster.setex(NAMESPACE + key, (int) seconds, value); }
public static void lpush(String key, String... values) { jedisCluster.lpush(NAMESPACE + key, values); }
public static List<String> lrange(String key, long start, long end) { return jedisCluster.lrange(NAMESPACE + key, start, end); }
public static void lpushWithExpiry(String key, long seconds, String... values) { lpush(key, values); expire(key, seconds); }
public static void sadd(String key, String... members) { jedisCluster.sadd(NAMESPACE + key, members); }
public static Set<String> smembers(String key) { return jedisCluster.smembers(NAMESPACE + key); }
public static void saddWithExpiry(String key, long seconds, String... members) { sadd(key, members); expire(key, seconds); }
public static void hset(String key, String field, String value) { jedisCluster.hset(NAMESPACE + key, field, value); }
public static String hget(String key, String field) { return jedisCluster.hget(NAMESPACE + key, field); }
public static Map<String, String> hgetAll(String key) { return jedisCluster.hgetAll(NAMESPACE + key); }
public static void hsetWithExpiry(String key, long seconds, String field, String value) { hset(key, field, value); expire(key, seconds); }
public static void hdel(String key, String... fields) { jedisCluster.hdel(NAMESPACE + key, fields); }
public static void zadd(String key, double score, String member) { jedisCluster.zadd(NAMESPACE + key, score, member); }
public static Set<String> zrange(String key, long start, long end) { return jedisCluster.zrange(NAMESPACE + key, start, end); }
public static void zaddWithExpiry(String key, long seconds, double score, String member) { zadd(key, score, member); expire(key, seconds); }
public static void close() { try { jedisCluster.close(); log.info("JedisCluster 资源已关闭"); } catch (Exception e) { log.error("关闭 JedisCluster 异常", e); } } }
|