Skip to content

Commit 81ef85e

Browse files
committed
Merge remote-tracking branch 'origin/V4.0' into V5
2 parents 06072e1 + 3dc0b0f commit 81ef85e

File tree

8 files changed

+63
-87
lines changed

8 files changed

+63
-87
lines changed

publiccms-parent/publiccms-analyzer/src/main/java/com/publiccms/views/method/tools/GetIpRegionMethod.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ public class GetIpRegionMethod extends BaseMethod {
4949

5050
private void init() {
5151
if (null == ip2Region) {
52-
synchronized (ip2Region) {
52+
synchronized (GetIpRegionMethod.class) {
5353
try {
5454
if (null == ip2Region) {
5555
Config v4Config = null;

publiccms-parent/publiccms-cache/src/main/java/com/publiccms/common/redis/RedisCacheEntity.java

Lines changed: 17 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,7 @@
1313
import com.publiccms.common.tools.CommonUtils;
1414
import com.publiccms.common.tools.RedisUtils;
1515

16-
import redis.clients.jedis.Jedis;
17-
import redis.clients.jedis.JedisPool;
16+
import redis.clients.jedis.RedisClient;
1817

1918
/**
2019
*
@@ -29,7 +28,7 @@ public class RedisCacheEntity<K, V> implements CacheEntity<K, V>, java.io.Serial
2928
*
3029
*/
3130
private static final long serialVersionUID = 1L;
32-
private JedisPool jedisPool;
31+
private RedisClient redisClient;
3332
private String region;
3433
private static final StringSerializer stringSerializer = new StringSerializer();
3534
private final Serializer<V> valueSerializer = new ValueSerializer<>();
@@ -38,73 +37,58 @@ public class RedisCacheEntity<K, V> implements CacheEntity<K, V>, java.io.Serial
3837

3938
@Override
4039
public List<V> put(K key, V value) {
41-
Jedis jedis = jedisPool.getResource();
42-
jedis.set(getKey(key), valueSerializer.serialize(value));
43-
jedis.close();
40+
redisClient.set(getKey(key), valueSerializer.serialize(value));
4441
return null;
4542
}
4643

4744
@Override
4845
public void put(K key, V value, Long expiryInSeconds) {
49-
Jedis jedis = jedisPool.getResource();
5046
if (null == expiryInSeconds) {
51-
jedis.set(getKey(key), valueSerializer.serialize(value));
47+
redisClient.set(getKey(key), valueSerializer.serialize(value));
5248
} else {
53-
jedis.setex(getKey(key), expiryInSeconds, valueSerializer.serialize(value));
49+
redisClient.setex(getKey(key), expiryInSeconds, valueSerializer.serialize(value));
5450
}
55-
jedis.close();
5651
}
5752

5853
@Override
5954
public V get(K key) {
60-
Jedis jedis = jedisPool.getResource();
61-
V value = valueSerializer.deserialize(jedis.get(getKey(key)));
62-
jedis.close();
63-
return value;
55+
return valueSerializer.deserialize(redisClient.get(getKey(key)));
6456
}
6557

6658
@Override
6759
public V remove(K key) {
68-
Jedis jedis = jedisPool.getResource();
6960
byte[] byteKey = getKey(key);
70-
V value = valueSerializer.deserialize(jedis.get(byteKey));
71-
jedis.del(byteKey);
72-
jedis.close();
61+
V value = valueSerializer.deserialize(redisClient.get(byteKey));
62+
redisClient.del(byteKey);
7363
return value;
7464
}
7565

7666
@Override
7767
public List<V> clear(boolean recycling) {
7868
if (recycling) {
7969
List<V> list = new ArrayList<>();
80-
Jedis jedis = jedisPool.getResource();
81-
Set<String> keyList = jedis.keys(CommonUtils.joinString(region, Constants.COLON, "*"));
70+
Set<String> keyList = redisClient.keys(CommonUtils.joinString(region, Constants.COLON, "*"));
8271
keyList.forEach(k -> {
8372
byte[] byteKey = stringSerializer.serialize(k);
84-
V value = valueSerializer.deserialize(jedis.get(byteKey));
85-
if (0 < jedis.del(k)) {
73+
V value = valueSerializer.deserialize(redisClient.get(byteKey));
74+
if (0 < redisClient.del(k)) {
8675
list.add(value);
8776
}
8877
});
89-
jedis.close();
78+
redisClient.close();
9079
return list;
9180
} else {
92-
Jedis jedis = jedisPool.getResource();
93-
Set<String> keyList = jedis.keys(CommonUtils.joinString(region, Constants.COLON, "*"));
81+
Set<String> keyList = redisClient.keys(CommonUtils.joinString(region, Constants.COLON, "*"));
9482
keyList.forEach(k -> {
95-
jedis.del(k);
83+
redisClient.del(k);
9684
});
97-
jedis.close();
9885
return null;
9986
}
10087
}
10188

10289
@Override
10390
public boolean contains(K key) {
104-
Jedis jedis = jedisPool.getResource();
105-
boolean exits = jedis.exists(getKey(key));
106-
jedis.close();
107-
return exits;
91+
return redisClient.exists(getKey(key));
10892
}
10993

11094
private byte[] getKey(K key) {
@@ -116,9 +100,9 @@ public RedisCacheEntity<K, V> init(String region, Properties properties) {
116100
return init(region, RedisUtils.createOrGetJedisPool(properties));
117101
}
118102

119-
public RedisCacheEntity<K, V> init(String region, JedisPool pool) {
103+
public RedisCacheEntity<K, V> init(String region, RedisClient redisClient) {
120104
this.region = region;
121-
this.jedisPool = pool;
105+
this.redisClient = redisClient;
122106
return this;
123107
}
124108

publiccms-parent/publiccms-cache/src/main/java/com/publiccms/common/redis/RedisClient.java renamed to publiccms-parent/publiccms-cache/src/main/java/com/publiccms/common/redis/RedisClientOperational.java

Lines changed: 11 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -8,37 +8,33 @@
88

99
import com.publiccms.common.tools.CommonUtils;
1010

11-
import redis.clients.jedis.Jedis;
12-
import redis.clients.jedis.JedisPool;
11+
import redis.clients.jedis.RedisClient;
1312

1413
/**
15-
* RedisClient
14+
* RedisClientOperational
1615
*/
17-
public class RedisClient {
16+
public class RedisClientOperational {
1817
/**
1918
*
2019
*/
2120
public static final int DEFAULT_EXPIRY_IN_SECONDS = 120;
2221

2322
protected final Log log = LogFactory.getLog(getClass());
24-
private JedisPool jedisPool;
23+
private RedisClient redisClient;
2524
private Map<String, RedisCacheEntity<Object, Object>> regionMap = new HashMap<>();
2625

2726
/**
28-
* @param jedisPool
27+
* @param redisClient
2928
*/
30-
public RedisClient(JedisPool jedisPool) {
31-
this.jedisPool = jedisPool;
29+
public RedisClientOperational(RedisClient redisClient) {
30+
this.redisClient = redisClient;
3231
}
3332

3433
/**
3534
* @return
3635
*/
3736
public long dbSize() {
38-
Jedis jedis = jedisPool.getResource();
39-
long size = jedis.dbSize();
40-
jedis.close();
41-
return size;
37+
return redisClient.dbSize();
4238
}
4339

4440
/**
@@ -111,22 +107,10 @@ public void removeRegion(String region) {
111107
* @return
112108
*/
113109
public RedisCacheEntity<Object, Object> createOrGetCache(String region) {
114-
return regionMap.computeIfAbsent(region, k -> new RedisCacheEntity<>().init(k, jedisPool));
110+
return regionMap.computeIfAbsent(region, k -> new RedisCacheEntity<>().init(k, redisClient));
115111
}
116112

117-
/**
118-
* @return
119-
*/
120-
public boolean isShutdown() {
121-
return null != jedisPool && jedisPool.isClosed();
122-
}
123-
124-
/**
125-
*
126-
*/
127-
public void shutdown() {
128-
if (null != jedisPool) {
129-
jedisPool.destroy();
130-
}
113+
public void close() {
114+
redisClient.close();
131115
}
132116
}

publiccms-parent/publiccms-cache/src/main/java/com/publiccms/common/redis/hibernate/RedisDomainDataStorageAccessImpl.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
import org.hibernate.cache.spi.support.DomainDataStorageAccess;
66
import org.hibernate.engine.spi.SharedSessionContractImplementor;
77

8-
import com.publiccms.common.redis.RedisClient;
98
import com.publiccms.common.redis.RedisCacheEntity;
9+
import com.publiccms.common.redis.RedisClientOperational;
1010

1111
/**
1212
* Redis 访问实现
@@ -16,10 +16,10 @@
1616
*/
1717
public class RedisDomainDataStorageAccessImpl implements DomainDataStorageAccess {
1818
protected final Log log = LogFactory.getLog(getClass());
19-
protected final RedisClient redisClient;
19+
protected final RedisClientOperational redisClient;
2020
protected final RedisCacheEntity<Object, Object> cache;
2121

22-
public RedisDomainDataStorageAccessImpl(RedisClient redisClient, RedisCacheEntity<Object, Object> cache) {
22+
public RedisDomainDataStorageAccessImpl(RedisClientOperational redisClient, RedisCacheEntity<Object, Object> cache) {
2323
this.redisClient = redisClient;
2424
this.cache = cache;
2525
}

publiccms-parent/publiccms-cache/src/main/java/com/publiccms/common/redis/hibernate/RedisRegionFactory.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,11 @@
2424
import org.springframework.core.io.support.PropertiesLoaderUtils;
2525

2626
import com.publiccms.common.redis.RedisCacheEntity;
27-
import com.publiccms.common.redis.RedisClient;
27+
import com.publiccms.common.redis.RedisClientOperational;
2828
import com.publiccms.common.tools.RedisUtils;
2929

30+
import redis.clients.jedis.RedisClient;
31+
3032
/**
3133
* Redis领域工厂
3234
*
@@ -44,7 +46,7 @@ public class RedisRegionFactory extends RegionFactoryTemplate {
4446
/**
4547
* {@link RedisClient} instance.
4648
*/
47-
protected transient RedisClient redisClient;
49+
protected transient RedisClientOperational redisClient;
4850

4951
public RedisRegionFactory() {
5052
this(DefaultCacheKeysFactory.INSTANCE);
@@ -136,11 +138,11 @@ protected void prepareForUse(SessionFactoryOptions settings, @SuppressWarnings("
136138
}
137139
}
138140

139-
protected RedisClient resolveRedisClient(@SuppressWarnings("rawtypes") Map configValues) throws IOException {
141+
protected RedisClientOperational resolveRedisClient(@SuppressWarnings("rawtypes") Map configValues) throws IOException {
140142
String configurationResourceName = (String) configValues.get("hibernate.redis.configurationResourceName");
141143
if (null != configurationResourceName) {
142144
Properties redisProperties = PropertiesLoaderUtils.loadAllProperties(configurationResourceName);
143-
return new RedisClient(RedisUtils.createOrGetJedisPool(redisProperties));
145+
return new RedisClientOperational(RedisUtils.createOrGetJedisPool(redisProperties));
144146
} else {
145147
return null;
146148
}
@@ -150,7 +152,7 @@ protected RedisClient resolveRedisClient(@SuppressWarnings("rawtypes") Map confi
150152
protected void releaseFromUse() {
151153
if (null != redisClient) {
152154
try {
153-
redisClient.shutdown();
155+
redisClient.close();
154156
redisClient = null;
155157
log.info("RedisRegionFactory is stopped.");
156158
} catch (Exception ignored) {

publiccms-parent/publiccms-cache/src/main/java/com/publiccms/common/redis/hibernate/SingletonRedisRegionFactory.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
import org.springframework.core.io.support.PropertiesLoaderUtils;
99

10-
import com.publiccms.common.redis.RedisClient;
10+
import com.publiccms.common.redis.RedisClientOperational;
1111
import com.publiccms.common.tools.RedisUtils;
1212

1313
/**
@@ -23,13 +23,13 @@ public class SingletonRedisRegionFactory extends RedisRegionFactory {
2323
private static final long serialVersionUID = 1L;
2424
private final AtomicInteger referenceCount = new AtomicInteger();
2525

26-
protected RedisClient resolveRedisClient(@SuppressWarnings("rawtypes") Map configValues) throws IOException {
26+
protected RedisClientOperational resolveRedisClient(@SuppressWarnings("rawtypes") Map configValues) throws IOException {
2727
String configurationResourceName = (String) configValues.get("hibernate.redis.configurationResourceName");
2828
if (null != configurationResourceName) {
2929
try {
3030
referenceCount.incrementAndGet();
3131
Properties redisProperties = PropertiesLoaderUtils.loadAllProperties(configurationResourceName);
32-
return new RedisClient(RedisUtils.createOrGetJedisPool(redisProperties));
32+
return new RedisClientOperational(RedisUtils.createOrGetJedisPool(redisProperties));
3333
} catch (RuntimeException e) {
3434
referenceCount.decrementAndGet();
3535
throw e;

publiccms-parent/publiccms-cache/src/main/java/com/publiccms/common/redis/mybatis/MybatisRedisCache.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
import org.apache.ibatis.cache.Cache;
77

8-
import com.publiccms.common.redis.RedisClient;
8+
import com.publiccms.common.redis.RedisClientOperational;
99

1010
/**
1111
*
@@ -16,7 +16,7 @@ public class MybatisRedisCache implements Cache {
1616

1717
private final ReadWriteLock readWriteLock = new ReentrantReadWriteLock();
1818

19-
protected RedisClient redisClient;
19+
protected RedisClientOperational redisClient;
2020

2121
private String id;
2222

publiccms-parent/publiccms-cache/src/main/java/com/publiccms/common/tools/RedisUtils.java

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,24 @@
22

33
import java.util.Properties;
44

5-
import redis.clients.jedis.JedisPool;
6-
import redis.clients.jedis.JedisPoolConfig;
5+
import redis.clients.jedis.ConnectionPoolConfig;
6+
import redis.clients.jedis.DefaultJedisClientConfig;
7+
import redis.clients.jedis.RedisClient;
78

89
/**
910
*
1011
* RedisUtils
1112
*
1213
*/
1314
public class RedisUtils {
14-
private static volatile JedisPool pool;
15+
private static volatile RedisClient redisClient;
1516

1617
/**
1718
* @param redisProperties
1819
* @return
1920
*/
20-
public static JedisPool createJedisPool(Properties redisProperties) {
21+
public static RedisClient createJedisPool(Properties redisProperties) {
22+
2123
String host = redisProperties.getProperty("redis.host", "localhost");
2224
int port = Integer.parseInt(redisProperties.getProperty("redis.port", "6379"));
2325
int timeout = Integer.parseInt(redisProperties.getProperty("redis.timeout", "3000"));
@@ -29,24 +31,28 @@ public static JedisPool createJedisPool(Properties redisProperties) {
2931
if (CommonUtils.notEmpty(database)) {
3032
database = Integer.parseInt(databaseValue);
3133
}
32-
JedisPoolConfig config = new JedisPoolConfig();
33-
config.setMaxIdle(maxidle);
34-
return new JedisPool(config, host, port, timeout, CommonUtils.empty(user) ? null : user,
35-
CommonUtils.empty(password) ? null : password, database);
34+
35+
ConnectionPoolConfig poolConfig = new ConnectionPoolConfig();
36+
poolConfig.setMaxIdle(maxidle);
37+
return RedisClient.builder().hostAndPort(host, port)
38+
.clientConfig(DefaultJedisClientConfig.builder().socketTimeoutMillis(timeout).connectionTimeoutMillis(timeout)
39+
.user(CommonUtils.empty(user) ? null : user).password(CommonUtils.empty(password) ? null : password)
40+
.database(database).build())
41+
.poolConfig(poolConfig).build();
3642
}
3743

3844
/**
3945
* @param redisProperties
4046
* @return
4147
*/
42-
public static JedisPool createOrGetJedisPool(Properties redisProperties) {
43-
if (null == pool) {
48+
public static RedisClient createOrGetJedisPool(Properties redisProperties) {
49+
if (null == redisClient) {
4450
synchronized (RedisUtils.class) {
45-
if (null == pool) {
46-
pool = createJedisPool(redisProperties);
51+
if (null == redisClient) {
52+
redisClient = createJedisPool(redisProperties);
4753
}
4854
}
4955
}
50-
return pool;
56+
return redisClient;
5157
}
5258
}

0 commit comments

Comments
 (0)