EzyRedis Configuration
1. Configuration List
EzyRedis provides a list of configurations in bellow table:
# | Property | Default Value | Description |
1 | redis.atomic_long_map_name | ___ezydata.atomic_longs___ | Name of atomic long map |
2 | redis.maps | empty list | List of redis map settings |
3 | redis.map_naming.case | NATURE | Map name style. The map name will be class name by default |
4 | redis.map_naming.ignored_suffix | null | Suffix to remove from map's name |
5 | redis.max_connection_attempts | 0 | Maximum retry connect times (this configuration is valid from version 1.2.4 ) |
6 | redis.channels | empty list | List of redis channels |
2. An Example
You can put bellow configuration to your
application.yaml
file: redis:
uri: redis://localhost:6379
max_connection_attempts: 1000000
atomic_long_map_name: atomic_long_map
map_naming:
case: DASH
ignored_suffix: true
maps:
map1:
key_type: java.lang.String
value_type: java.lang.Integer
map2:
key_type: java.lang.String
value_type: java.lang.Integer
channels:
channel1:
thread_pool_size: 2
message_type: java.lang.String
channel2:
thread_pool_size: 2
message_type: java.lang.String
Or you can put to your
application.properties
file: redis.uri=redis://localhost:6379
redis.max_connection_attempts=1000000
redis.atomic_long_map_name=atomic_long_map
redis.map_naming.case=DASH
redis.map_naming.ignored_suffix=true
redis.maps.map1.key_type=java.lang.String
redis.maps.map1.value_type=java.lang.Integer
redis.maps.map2.key_type=java.lang.String
redis.maps.map2.value_type=java.lang.Integer
redis.channels.channel1.thread_pool_size=2
redis.channels.channel1.message_type=java.lang.String
redis.channels.channel2.thread_pool_size=2
redis.channels.channel2.message_type=java.lang.String
3. Auto Configuration
To configure automatically, you just need add configuration and add
ezyfox-boot-autoconfigure
to your project dependency like this: <dependency>
<groupId>com.tvd12</groupId>
<artifactId>ezyfox-boot-autoconfigure</artifactId>
<version>1.0.4</version>
</dependency>
4. Configure Manually
For some reason, you can not use
ezyfox-boot-autoconfigure
you can config like this: import com.tvd12.ezydata.redis.EzyRedisClientPool;
import com.tvd12.ezydata.redis.EzyRedisProxy;
import com.tvd12.ezydata.redis.EzyRedisProxyFactory;
import com.tvd12.ezydata.redis.loader.EzyJedisClientPoolLoader;
import com.tvd12.ezyfox.bean.EzyBeanAutoConfig;
import com.tvd12.ezyfox.bean.EzySingletonFactory;
import com.tvd12.ezyfox.bean.EzySingletonFactoryAware;
import com.tvd12.ezyfox.bean.annotation.EzyConfigurationBefore;
import com.tvd12.ezyfox.util.EzyPropertiesAware;
import lombok.Setter;
import java.util.Properties;
import java.util.Set;
@Setter
@EzyConfigurationBefore
public class EzyRedisConfiguration implements
EzyBeanConfig,
EzyPropertiesAware,
EzySingletonFactoryAware {
private Properties properties;
private EzySingletonFactory singletonFactory;
@Override
public void autoConfig() {
singletonFactory.addSingleton("redisProxy", newRedisProxy());
}
private EzyRedisProxy newRedisProxy() {
return EzyRedisProxyFactory.builder()
.properties(properties)
.scan("your packages to scan")
.clientPool(newClientPool())
.build()
.newRedisProxy();
}
protected EzyRedisClientPool newClientPool() {
return new EzyJedisClientPoolLoader()
.properties(properties)
.load();
}
}
5. Configure Max Connection Attemps
There is a bug in version
1.2.3
, so for this version, you will need configure redis.max_connection_attempts
like this: import com.tvd12.ezydata.redis.setting.EzyRedisSettings;
import com.tvd12.ezyfox.bean.EzyBeanConfig;
import com.tvd12.ezyfox.bean.annotation.EzyConfigurationBefore;
import com.tvd12.ezyfox.util.EzyPropertiesAware;
import lombok.Setter;
@Setter
@EzyConfigurationBefore(priority = Integer.MIN_VALUE)
public class RedisConfig implements EzyPropertiesAware, EzyBeanConfig {
private Properties properties;
@Override
public void config() {
properties.put(
EzyRedisSettings.MAX_CONNECTION_ATTEMPTS,
Integer.parseInt(
properties.getOrDefault(
EzyRedisSettings.MAX_CONNECTION_ATTEMPTS,
Integer.MAX_VALUE
).toString()
)
);
}
}