Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.tosan.client.redis.configuration;

import com.tosan.client.redis.configuration.redisson.TedissonProperties;
import com.tosan.client.redis.configuration.redisson.TedissonPropertiesCustomizer;
import com.tosan.client.redis.exception.TedissonException;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
Expand All @@ -23,9 +24,11 @@ public class RedissonClientFactory {
private static final String REDISS_PROTOCOL_PREFIX = "rediss://";
private final TedissonProperties tedissonProperties;
private RedissonClient redisClient;
private List<TedissonPropertiesCustomizer> customizers;

public RedissonClientFactory(TedissonProperties tedissonProperties) throws TedissonException {
public RedissonClientFactory(TedissonProperties tedissonProperties, List<TedissonPropertiesCustomizer> customizers) throws TedissonException {
this.tedissonProperties = tedissonProperties;
this.customizers = customizers;
createInstance();
}

Expand Down Expand Up @@ -54,6 +57,11 @@ private void createInstance() throws TedissonException {
try {
config.setThreads(tedissonProperties.getRedis().getThreads());
config.setNettyThreads(tedissonProperties.getRedis().getNettyThreads());
if (CollectionUtils.isNotEmpty(customizers)) {
for (TedissonPropertiesCustomizer customizer : customizers) {
customizer.customize(config);
}
}
redisClient = Redisson.create(config);
} catch (Exception e) {
throw new TedissonException("Could not connect to redis server!");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import com.tosan.client.redis.api.LocalCacheManager;
import com.tosan.client.redis.api.TedissonCacheManager;
import com.tosan.client.redis.configuration.redisson.TedissonProperties;
import com.tosan.client.redis.configuration.redisson.TedissonPropertiesCustomizer;
import com.tosan.client.redis.exception.TedissonException;
import com.tosan.client.redis.impl.TedissonLocalCacheManagerImpl;
import com.tosan.client.redis.impl.localCacheManager.LocalCacheManagerBase;
Expand Down Expand Up @@ -32,6 +33,7 @@
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.scheduling.config.TaskManagementConfigUtils;

import java.util.List;
import java.util.Optional;
import java.util.concurrent.ThreadPoolExecutor;

Expand All @@ -45,6 +47,8 @@ public class TedissonAutoConfiguration {

@Autowired
private TedissonProperties tedissonProperties;
@Autowired(required = false)
private List<TedissonPropertiesCustomizer> customizerList;

@Bean
@ConditionalOnProperty(name = "tedisson.redis.enabled", havingValue = "false", matchIfMissing = true)
Expand Down Expand Up @@ -97,14 +101,14 @@ public CaffeineCacheManager caffeineLocalCacheManager(Optional<MessageQueueManag
@ConditionalOnMissingBean(RedissonClient.class)
@ConditionalOnProperty(name = "tedisson.redis.enabled", havingValue = "true")
public RedissonClient redissonClient() throws TedissonException {
return new RedissonClientFactory(tedissonProperties).getInstance();
return new RedissonClientFactory(tedissonProperties, customizerList).getInstance();
}

@Bean(destroyMethod = "shutdown")
@ConditionalOnMissingBean(RedissonClient.class)
@ConditionalOnProperty(name = "tedisson.redis.stream.enabled", havingValue = "true")
public RedissonClient streamRedissonClient() throws TedissonException {
return new RedissonClientFactory(tedissonProperties).getInstance();
return new RedissonClientFactory(tedissonProperties, customizerList).getInstance();
}

@Bean
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.tosan.client.redis.configuration.redisson;

import org.redisson.config.Config;

/**
* @author R.Mehri
* @since 12/5/2023
*/
@FunctionalInterface
public interface TedissonPropertiesCustomizer {

void customize(final Config config);
}
Original file line number Diff line number Diff line change
Expand Up @@ -296,7 +296,7 @@ public void updateItemExpiration(String cacheName, String key, Long timeToLive,
if (timeToIdle == null) {
timeToIdle = 0L;
}
map.updateEntryExpiration(key, timeToLive, timeUnit, timeToIdle, timeUnit);
map.expireEntry(key, Duration.ofSeconds(timeUnit.toSeconds(timeToLive)), Duration.ofSeconds(timeUnit.toSeconds(timeToIdle)));
}

@Override
Expand Down
Loading