2. Configuration - ALANSUDA/redisson GitHub Wiki
Contents:
2.1. Programmatic configuration
2.2. Declarative configuration
Programmatic configuration performed by Config
object instance. For example:
Config config = new Config();
config.setTransportMode(TransportMode.EPOLL);
config.useClusterServers()
// use "rediss://" for SSL connection
.addNodeAddress("perredis://127.0.0.1:7181");
RedissonClient redisson = Redisson.create(config);
Redisson can also be configured in a declarative way by using a user supplied text file in YAML format.
Redisson configuration could be stored in YAML format.
Use config.fromYAML
method to read configuration stored in YAML format:
Config config = Config.fromYAML(new File("config-file.yaml"));
RedissonClient redisson = Redisson.create(config);
Use config.toYAML
method to write configuration in YAML format:
Config config = new Config();
// ... many settings are set here
String yamlFormat = config.toYAML();
Environmental variables should be wrapped in ${...}
. Example:
singleServerConfig:
address: "redis://127.0.0.1:${REDIS_PORT}"
Default values complies with shell format. Example:
singleServerConfig:
address: "redis://127.0.0.1:${REDIS_PORT:-6379}"
Follow settings belong to org.redisson.Config
object and common for all modes:
Default value: org.redisson.codec.MarshallingCodec
Redis data codec. Used during read and write Redis data. Several implementations are available.
Default value: null
connection listener which is triggered when Redisson connected/disconnected to Redis server.
Default value: 32
Threads amount shared between all internal redis clients used by Redisson. Netty threads used in Redis response decoding and command sending. 0
= cores_amount * 2
Default value: empty object
Netty hook applied to Netty Bootstrap and Channel objects.
Use external ExecutorService which process all listeners of RTopic
, RRemoteService
invocation handlers and RExecutorService
tasks.
Use external EventLoopGroup. EventLoopGroup processes all Netty connection tied with Redis servers by own threads. Each Redisson client creates own EventLoopGroup by default. So if there are multiple Redisson instances in same JVM it would be useful to share one EventLoopGroup among them.
Only io.netty.channel.epoll.EpollEventLoopGroup
, io.netty.channel.kqueue.KQueueEventLoopGroup
and io.netty.channel.nio.NioEventLoopGroup
are allowed for usage.
Default value: TransportMode.NIO
Available values:
TransportMode.NIO
,
TransportMode.EPOLL
- requires netty-transport-native-epoll
lib in classpath
TransportMode.KQUEUE
- requires netty-transport-native-kqueue
lib in classpath
Default value: 16
Threads amount shared across all listeners of RTopic
object, invocation handlers of RRemoteService
, RTopic
object and RExecutorService
tasks.
Default value: 30000
Lock watchdog timeout in milliseconds. This parameter is only used if lock has been acquired without leaseTimeout
parameter definition. Lock will be expired after lockWatchdogTimeout
if watchdog didn't extend it to the next lockWatchdogTimeout
time interval. This prevents against infinity locked locks due to Redisson client crush or any other reason when lock can't be released in proper way.
Default value: 600000
Reliable Topic watchdog timeout in milliseconds. Reliable Topic subscriber expires after timeout
if watchdog didn't extend it to next timeout
time interval. This prevents against infinity grow of stored messages in topic due to Redisson client crush or any other reason when subscriber can't consumer messages anymore.
Default value: org.redisson.connection.DnsAddressResolverGroupFactory
Allows to specify customized implementation of DnsAddressResolverGroup.
Available implementations:
-
org.redisson.connection.DnsAddressResolverGroupFactory
- uses default DNS servers list provided by OS. -
org.redisson.connection.RoundRobinDnsAddressResolverGroupFactory
- uses default DNS servers list provided by OS in round robin mode.
Default value: false
Defines whether to use Lua-script cache on Redis side. Most Redisson methods are Lua-script based and this setting turned on could increase speed of such methods execution and save network traffic.
Default value: true
Defines whether keep PubSub messages handling in arrival order or handle messages concurrently. This setting applied only for PubSub messages per channel.
Default value: 5
Defines minimum delay in seconds for clean up process of expired entries. Applied to JCache
, RSetCache
, RMapCache
, RListMultimapCache
, RSetMultimapCache
objects.
Default value: 1800
Defines maximum delay in seconds for clean up process of expired entries. Applied to JCache
, RSetCache
, RMapCache
, RListMultimapCache
, RSetMultimapCache
objects.
Default value: 100
Defines expired keys amount deleted per single operation during clean up process of expired entries. Applied to JCache
, RSetCache
, RMapCache
, RListMultimapCache
, RSetMultimapCache
objects.
Default value: MeterMode.ALL
Defines Micrometer statistics collection mode.
This setting is available only in Redisson PRO edition.
Available values:
-
MeterMode.ALL
- collect both Redis and Redisson objects statistics -
MeterMode.REDIS
- collect only Redis statistics -
MeterMode.OBJECTS
- collect only Redisson objects statistics
Default value: null
Defines Micrometer registry provider used to collect various statistics for Redisson objects. Please refer to statistics monitoring sections for list of all available providers.
This setting is available only in Redisson PRO edition.
Default value: true
Defines whether to supply Thread ContextClassLoader to Codec. Usage of Thread.getContextClassLoader() may resolve ClassNotFoundException error arise during Redis response decoding. This error might arise if Redisson is used in both Tomcat and deployed application.
Default value: LOWER_LATENCY_MODE_2
Defines command processing engine performance mode. Since all values are application specific (except NORMAL
value) it's recommended to try all of them.
This setting is available only in Redisson PRO edition.
Available values:
-
HIGHER_THROUGHPUT
- switches command processor engine to higher throughput mode -
LOWER_LATENCY_AUTO
- switches command processor engine to lower latency mode and detect optimal settings automatically -
LOWER_LATENCY_MODE_2
- switches command processor engine to lower latency mode with predefined settings set #2 -
LOWER_LATENCY_MODE_1
- switches command processor engine to lower latency mode with predefined settings set #1 -
NORMAL
- switches command processor engine to normal mode
Cluster mode could be used with any hosting, but also supports AWS ElastiCache Cluster and Azure Redis Cache.
Programmatic config example:
Config config = new Config();
config.useClusterServers()
.setScanInterval(2000) // cluster state scan interval in milliseconds
// use "rediss://" for SSL connection
.addNodeAddress("redis://127.0.0.1:7000", "redis://127.0.0.1:7001")
.addNodeAddress("redis://127.0.0.1:7002");
RedissonClient redisson = Redisson.create(config);
Documentation covers Redis server cluster configuration is here. Minimal cluster configuration requires to contain at least three master nodes. Cluster connection mode activated by follow line:
ClusterServersConfig clusterConfig = config.useClusterServers();
ClusterServersConfig
settings listed below:
Default value: true
Enables cluster slots check during Redisson startup.
Add Redis cluster node address in host:port
format. Multiple nodes could be added at once. At least one node from Redis Cluster should be specified. Redisson discovers automatically cluster topology. Use rediss://
protocol for SSL connection.
Default value: 1000
Redis cluster scan interval in milliseconds.
Default value: 231
Partitions amount used for data partitioning. Data partitioning supported by Set, Map, BitSet, Bloom filter, Spring Cache and Hibernate Cache structures.
This setting is available only in Redisson PRO edition.
Default value: SLAVE
Set node type used for read operation.
Available values:
SLAVE
- Read from slave nodes, uses MASTER if no SLAVES are available.
MASTER
- Read from master node,
MASTER_SLAVE
- Read from master and slave nodes
Default value: SLAVE
Set node type used for subscription operation.
Available values:
SLAVE
- Subscribe to slave nodes,
MASTER
- Subscribe to master node,
Default value: org.redisson.connection.balancer.RoundRobinLoadBalancer
Сonnection load balancer for multiple Redis servers.
Available implementations:
org.redisson.connection.balancer.WeightedRoundRobinBalancer
org.redisson.connection.balancer.RoundRobinLoadBalancer
org.redisson.connection.balancer.RandomLoadBalancer
Default value: 1
Minimum idle connection pool size for subscription (pub/sub) channels. Used by RTopic
, RPatternTopic
, RLock
, RSemaphore
, RCountDownLatch
, RClusteredLocalCachedMap
, RClusteredLocalCachedMapCache
, RLocalCachedMap
, RLocalCachedMapCache
objects and Hibernate READ_WRITE cache strategy.
Default value: 50
Maximum connection pool size for subscription (pub/sub) channels. Used by RTopic
, RPatternTopic
, RLock
, RSemaphore
, RCountDownLatch
, RClusteredLocalCachedMap
, RClusteredLocalCachedMapCache
, RLocalCachedMap
, RLocalCachedMapCache
objects and Hibernate READ_WRITE cache strategy
Default value: 24
Redis 'slave' node minimum idle connection amount for each slave node.
Default value: 64
Redis 'slave' node maximum connection pool size for each slave node
Default value: 24
Redis 'master' node minimum idle connection amount for each slave node. Redisson idle connections are remain for elected slave as master. Because this node remains in slave connection pool but in non-active state. These connections are preserved for case when your cluster lost all slaves. In this case master used as slave and idle-connections become in use.
Default value: 24
Redis 'master' node maximum connection pool size
Default value: 10000
If pooled connection not used for a timeout
time and current connections amount bigger than minimum idle connections pool size, then it will closed and removed from pool. Value in milliseconds.
Default value: 10000
Timeout in milliseconds during connecting to any Redis server.
Default value: 3000
Redis server response timeout in milliseconds. Starts to countdown when Redis command was succesfully sent.
Default value: 3
Error will be thrown if Redis command can't be sended to Redis server after retryAttempts. But if it sent succesfully then timeout will be started.
Default value: 1500
Time interval in milliseconds after which another one attempt to send Redis command will be executed.
Default value: null
Password for Redis server authentication.
Default value: null
Username for Redis server authentication. Requires Redis 6.0+
Default value: 5
Subscriptions per subscribe connection limit. Used by RTopic
, RPatternTopic
, RLock
, RSemaphore
, RCountDownLatch
, RClusteredLocalCachedMap
, RClusteredLocalCachedMapCache
, RLocalCachedMap
, RLocalCachedMapCache
objects and Hibernate READ_WRITE cache strategy.
Default value: null
Name of client connection.
Default value: true
Enables SSL endpoint identification during handshaking, which prevents man-in-the-middle attacks.
Default value: JDK
Defines SSL provider (JDK or OPENSSL) used to handle SSL connections. OPENSSL considered as faster implementation and requires netty-tcnative-boringssl-static to be added in classpath.
Default value: null
Defines path to SSL truststore. It's stores certificates which is used to identify server side of SSL connection.
Default value: null
Defines password for SSL truststore
Default value: null
Defines path to SSL keystore. It's stores private key and certificates corresponding to their public keys. Used if server side of SSL connection requires client authentication.
Default value: null
Defines password for SSL keystore
Default value: 30000
This setting allows to detect and reconnect broken connections using PING command. PING command sending interval defined in milliseconds. Useful in cases when netty lib doesn't invoke channelInactive
method for closed connections. Set 0
to disable.
Default value: false
Enables TCP keepAlive for connection.
Default value: false
Enables TCP noDelay for connection.
Default value: no mapper
Defines NAT mapper interface which maps Redis URI object. It's applied to all Redis connections. There are few implementations: org.redisson.api.HostPortNatMapper
and org.redisson.api.HostNatMapper
.
Default value: no mapper
Defines Name mapper which maps Redisson object name. Applied to all Redisson objects.
Below is cluster configuration example in YAML format. All property names matches with ClusterServersConfig
and Config
object property names.
---
clusterServersConfig:
idleConnectionTimeout: 10000
connectTimeout: 10000
timeout: 3000
retryAttempts: 3
retryInterval: 1500
failedSlaveReconnectionInterval: 3000
failedSlaveCheckInterval: 60000
password: null
subscriptionsPerConnection: 5
clientName: null
loadBalancer: !<org.redisson.connection.balancer.RoundRobinLoadBalancer> {}
subscriptionConnectionMinimumIdleSize: 1
subscriptionConnectionPoolSize: 50
slaveConnectionMinimumIdleSize: 24
slaveConnectionPoolSize: 64
masterConnectionMinimumIdleSize: 24
masterConnectionPoolSize: 64
readMode: "SLAVE"
subscriptionMode: "SLAVE"
nodeAddresses:
- "redis://127.0.0.1:7004"
- "redis://127.0.0.1:7001"
- "redis://127.0.0.1:7000"
scanInterval: 1000
pingConnectionInterval: 30000
keepAlive: false
tcpNoDelay: false
threads: 16
nettyThreads: 32
codec: !<org.redisson.codec.MarshallingCodec> {}
transportMode: "NIO"
Replicated mode could be used with any hosting, but also supports AWS ElastiCache and Azure Redis Cache.
Programmatic config example:
Config config = new Config();
config.useReplicatedServers()
.setScanInterval(2000) // master node change scan interval
// use "rediss://" for SSL connection
.addNodeAddress("redis://127.0.0.1:7000", "redis://127.0.0.1:7001")
.addNodeAddress("redis://127.0.0.1:7002");
RedissonClient redisson = Redisson.create(config);
Replicated connection mode activated by follow line:
ReplicatedServersConfig replicatedConfig = config.useReplicatedServers();
Replicated ServersConfig
settings listed below:
Add Redis node address in host:port
format. Multiple nodes could be added at once. All nodes (master and slaves) should be defined. Use rediss://
protocol for SSL connection.
Default value: 1000
Replicated node scan interval in milliseconds.
Default value: org.redisson.connection.balancer.RoundRobinLoadBalancer
Сonnection load balancer for multiple Redis servers.
Available implementations:
org.redisson.connection.balancer.WeightedRoundRobinBalancer
org.redisson.connection.balancer.RoundRobinLoadBalancer
org.redisson.connection.balancer.RandomLoadBalancer
Default value: 5000
Interval in milliseconds to check the endpoint's DNS. Applications must ensure the JVM DNS cache TTL is low enough to support this. Set -1
to disable.
Default value: 1
Redis 'slave' node minimum idle subscription (pub/sub) connection amount for each slave node
Default value: 50
Redis 'slave' node maximum subscription (pub/sub) connection pool size for each slave node
Default value: 24
Redis 'slave' node minimum idle connection amount for each slave node
Default value: 64
Redis 'slave' node maximum connection pool size for each slave node
Default value: 24
Redis 'master' node minimum idle connection amount for each slave node. Redisson idle connections are remain for elected slave as master. Because this node remains in slave connection pool but in non-active state. These connections are preserved for case when your cluster lost all slaves. In this case master used as slave and idle-connections become in use.
Default value: 64
Redis 'master' node maximum connection pool size
Default value: 10000
If pooled connection not used for a timeout
time and current connections amount bigger than minimum idle connections pool size, then it will closed and removed from pool. Value in milliseconds.
Default value: SLAVE
Set node type used for read operation.
Available values:
SLAVE
- Read from slave nodes, uses MASTER if no SLAVES are available.
MASTER
- Read from master node,
MASTER_SLAVE
- Read from master and slave nodes
Default value: MASTER
Set node type used for subscription operation.
Available values:
SLAVE
- Subscribe to slave nodes,
MASTER
- Subscribe to master node,
Default value: 10000
Timeout during connecting to any Redis server.
Default value: 3000
Redis server response timeout. Starts to countdown when Redis command was succesfully sent. Value in milliseconds.
Default value: 3
Error will be thrown if Redis command can't be sended to Redis server after retryAttempts. But if it sent succesfully then timeout will be started.
Default value: 1500
Time interval after which another one attempt to send Redis command will be executed. Value in milliseconds.
Default value: 3000
Interval of Redis Slave reconnection attempt when it was excluded from internal list of available servers. On each timeout event Redisson tries to connect to disconnected Redis server. Value in milliseconds.
Default value: 60000
Redis Slave node failing to execute commands is excluded from the internal list of available nodes when the time interval from the moment of first Redis command execution failure on this server reaches defined value. Value in milliseconds.
Default value: 0
Database index used for Redis connection
Default value: null
Password for Redis server authentication.
Default value: 5
Subscriptions per Redis connection limit
Default value: null
Name of client connection
Default value: true
Enables SSL endpoint identification.
Default value: JDK
Defines SSL provider (JDK or OPENSSL) used to handle SSL connections.
Default value: null
Defines path to SSL truststore
Default value: null
Defines password for SSL truststore
Default value: null
Defines path to SSL keystore
Default value: null
Defines password for SSL keystore
Default value: 30000
PING command sending interval per connection to Redis. Defined in milliseconds. Set 0
to disable.
Default value: false
Enables TCP keepAlive for connection.
Default value: false
Enables TCP noDelay for connection.
Default value: no mapper
Defines Name mapper which maps Redisson object name. Applied to all Redisson objects.
Below is replicated configuration example in YAML format. All property names matches with ReplicatedServersConfig
and Config
object property names.
---
replicatedServersConfig:
idleConnectionTimeout: 10000
connectTimeout: 10000
timeout: 3000
retryAttempts: 3
retryInterval: 1500
failedSlaveReconnectionInterval: 3000
failedSlaveCheckInterval: 60000
password: null
subscriptionsPerConnection: 5
clientName: null
loadBalancer: !<org.redisson.connection.balancer.RoundRobinLoadBalancer> {}
subscriptionConnectionMinimumIdleSize: 1
subscriptionConnectionPoolSize: 50
slaveConnectionMinimumIdleSize: 24
slaveConnectionPoolSize: 64
masterConnectionMinimumIdleSize: 24
masterConnectionPoolSize: 64
readMode: "SLAVE"
subscriptionMode: "SLAVE"
nodeAddresses:
- "redis://127.0.0.1:2812"
- "redis://127.0.0.1:2815"
- "redis://127.0.0.1:2813"
scanInterval: 1000
threads: 16
nettyThreads: 32
codec: !<org.redisson.codec.MarshallingCodec> {}
transportMode: "NIO"
Replicated mode could be used with any hosting. Supports Azure Redis Cache and Google Cloud Memorystore for Redis.
Programmatic config example:
// connects to 127.0.0.1:6379 by default
RedissonClient redisson = Redisson.create();
Config config = new Config();
config.useSingleServer().setAddress("redis://myredisserver:6379");
RedissonClient redisson = Redisson.create(config);
Documentation covers Redis single server configuration is here. Multiple IP bindings for single hostname supported in Proxy mode
Single server connection mode activated by follow line:
SingleServerConfig singleConfig = config.useSingleServer();
SingleServerConfig
settings listed below:
Redis server address in host:port
format. Use rediss://
protocol for SSL connection.
Default value: 1
Minimum idle Redis subscription connection amount.
Default value: 50
Redis subscription connection maximum pool size.
Default value: 24
Minimum idle Redis connection amount.
Default value: 64
Redis connection maximum pool size.
Default value: 5000
DNS change monitoring interval. Applications must ensure the JVM DNS cache TTL is low enough to support this. Set -1
to disable. Multiple IP bindings for single hostname supported in Proxy mode.
Default value: 10000
If pooled connection not used for a timeout
time and current connections amount bigger than minimum idle connections pool size, then it will closed and removed from pool. Value in milliseconds.
Default value: 10000
Timeout during connecting to any Redis server.
Default value: 3000
Redis server response timeout. Starts to countdown when Redis command was succesfully sent. Value in milliseconds.
Default value: 3
Error will be thrown if Redis command can't be sended to Redis server after retryAttempts. But if it sent succesfully then timeout will be started.
Default value: 1500
Time interval after which another one attempt to send Redis command will be executed. Value in milliseconds.
Default value: 0
Database index used for Redis connection
Default value: null
Password for Redis server authentication.
Default value: 5
Subscriptions per Redis connection limit
Default value: null
Name of client connection
Default value: true
Enables SSL endpoint identification.
Default value: JDK
Defines SSL provider (JDK or OPENSSL) used to handle SSL connections.
Default value: null
Defines path to SSL truststore
Default value: null
Defines password for SSL truststore
Default value: null
Defines path to SSL keystore
Default value: null
Defines password for SSL keystore
Default value: 30000
PING command sending interval per connection to Redis. Defined in milliseconds. Set 0
to disable.
Default value: false
Enables TCP keepAlive for connection.
Default value: false
Enables TCP noDelay for connection.
Default value: no mapper
Defines Name mapper which maps Redisson object name. Applied to all Redisson objects.
Below is single instance configuration example in YAML format. All property names matches with SingleServerConfig
and Config
object property names.
---
singleServerConfig:
idleConnectionTimeout: 10000
connectTimeout: 10000
timeout: 3000
retryAttempts: 3
retryInterval: 1500
password: null
subscriptionsPerConnection: 5
clientName: null
address: "redis://127.0.0.1:6379"
subscriptionConnectionMinimumIdleSize: 1
subscriptionConnectionPoolSize: 50
connectionMinimumIdleSize: 24
connectionPoolSize: 64
database: 0
dnsMonitoringInterval: 5000
threads: 16
nettyThreads: 32
codec: !<org.redisson.codec.MarshallingCodec> {}
transportMode: "NIO"
Programmatic config example:
Config config = new Config();
config.useSentinelServers()
.setMasterName("mymaster")
// use "rediss://" for SSL connection
.addSentinelAddress("redis://127.0.0.1:26389", "redis://127.0.0.1:26379")
.addSentinelAddress("redis://127.0.0.1:26319");
RedissonClient redisson = Redisson.create(config);
Documentation covers Redis server sentinel configuration is here. Sentinel connection mode activated by follow line:
SentinelServersConfig sentinelConfig = config.useSentinelServers();
SentinelServersConfig
settings listed below:
Default value: true
Enables sentinels list check during Redisson startup.
Default value: 5000
Interval in milliseconds to check the endpoint's DNS. Applications must ensure the JVM DNS cache TTL is low enough to support this. Set -1
to disable.
Default value: true
Check if slave node master-link-status
field has status ok
.
Master server name used by Redis Sentinel servers and master change monitoring task.
Add Redis Sentinel node address in host:port
format. Multiple nodes at once could be added.
Default value: SLAVE
Set node type used for read operation.
Available values:
SLAVE
- Read from slave nodes, uses MASTER if no SLAVES are available.
MASTER
- Read from master node,
MASTER_SLAVE
- Read from master and slave nodes
Default value: SLAVE
Set node type used for subscription operation.
Available values:
SLAVE
- Subscribe to slave nodes,
MASTER
- Subscribe to master node,
Default value: org.redisson.connection.balancer.RoundRobinLoadBalancer
Сonnection load balancer for multiple Redis servers.
Available implementations:
org.redisson.connection.balancer.WeightedRoundRobinBalancer
org.redisson.connection.balancer.RoundRobinLoadBalancer
org.redisson.connection.balancer.RandomLoadBalancer
Default value: 1
Redis 'slave' node minimum idle subscription (pub/sub) connection amount for each slave node
Default value: 50
Redis 'slave' node maximum subscription (pub/sub) connection pool size for each slave node
Default value: 24
Redis 'slave' node minimum idle connection amount for each slave node
Default value: 64
Redis 'slave' node maximum connection pool size for each slave node
Default value: 24
Redis 'master' node minimum idle connection amount for each slave node. Redisson idle connections are remain for elected slave as master. Because this node remains in slave connection pool but in non-active state. These connections are preserved for case when your cluster lost all slaves. In this case master used as slave and idle-connections become in use.
Default value: 64
Redis 'master' node maximum connection pool size
Default value: 10000
If pooled connection not used for a timeout
time and current connections amount bigger than minimum idle connections pool size, then it will closed and removed from pool. Value in milliseconds.
Default value: 10000
Timeout during connecting to any Redis server.
Default value: 3000
Redis server response timeout. Starts to countdown when Redis command was succesfully sent. Value in milliseconds.
Default value: 3
Error will be thrown if Redis command can't be sended to Redis server after retryAttempts. But if it sent succesfully then timeout will be started.
Default value: 1500
Time interval after which another one attempt to send Redis command will be executed. Value in milliseconds.
Default value: 3000
Interval of Redis Slave reconnection attempt when it was excluded from internal list of available servers. On each timeout event Redisson tries to connect to disconnected Redis server. Value in milliseconds.
Default value: 60000
Redis Slave node failing to execute commands is excluded from the internal list of available nodes when the time interval from the moment of first Redis command execution failure on this server reaches defined value. Value in milliseconds.
Default value: 0
Database index used for Redis connection
Default value: null
Password for Redis server authentication.
Default value: 5
Subscriptions per Redis connection limit
Default value: null
Name of client connection
Default value: true
Enables SSL endpoint identification.
Default value: JDK
Defines SSL provider (JDK or OPENSSL) used to handle SSL connections.
Default value: null
Defines path to SSL truststore
Default value: null
Defines password for SSL truststore
Default value: null
Defines path to SSL keystore
Default value: null
Defines password for SSL keystore
Default value: 30000
PING command sending interval per connection to Redis. Defined in milliseconds. Set 0
to disable.
Default value: false
Enables TCP keepAlive for connection.
Default value: false
Enables TCP noDelay for connection.
Default value: no mapper
Defines NAT mapper interface which maps Redis URI object. Ready implementations org.redisson.api.HostPortNatMapper
and org.redisson.api.HostNatMapper
.
Default value: no mapper
Defines Name mapper which maps Redisson object name. Applied to all Redisson objects.
Below is sentinel configuration example in YAML format. All property names matches with SentinelServersConfig
and Config
object property names.
---
sentinelServersConfig:
idleConnectionTimeout: 10000
connectTimeout: 10000
timeout: 3000
retryAttempts: 3
retryInterval: 1500
failedSlaveReconnectionInterval: 3000
failedSlaveCheckInterval: 60000
password: null
subscriptionsPerConnection: 5
clientName: null
loadBalancer: !<org.redisson.connection.balancer.RoundRobinLoadBalancer> {}
subscriptionConnectionMinimumIdleSize: 1
subscriptionConnectionPoolSize: 50
slaveConnectionMinimumIdleSize: 24
slaveConnectionPoolSize: 64
masterConnectionMinimumIdleSize: 24
masterConnectionPoolSize: 64
readMode: "SLAVE"
subscriptionMode: "SLAVE"
sentinelAddresses:
- "redis://127.0.0.1:26379"
- "redis://127.0.0.1:26389"
masterName: "mymaster"
database: 0
threads: 16
nettyThreads: 32
codec: !<org.redisson.codec.MarshallingCodec> {}
transportMode: "NIO"
Programmatic config example:
Config config = new Config();
config.useMasterSlaveServers()
// use "rediss://" for SSL connection
.setMasterAddress("redis://127.0.0.1:6379")
.addSlaveAddress("redis://127.0.0.1:6389", "redis://127.0.0.1:6332", "redis://127.0.0.1:6419")
.addSlaveAddress("redis://127.0.0.1:6399");
RedissonClient redisson = Redisson.create(config);
Documentation covers Redis server master/slave configuration is here. Master slave connection mode activated by follow line:
MasterSlaveServersConfig masterSlaveConfig = config.useMasterSlaveServers();
MasterSlaveServersConfig
settings listed below:
Default value: 5000
Interval in milliseconds to check the endpoint's DNS. Applications must ensure the JVM DNS cache TTL is low enough to support this. Set -1
to disable.
Redis master node address in host:port
format. Use rediss://
protocol for SSL connection.
Add Redis slave node address in host:port
format. Multiple nodes at once could be added. Use rediss://
protocol for SSL connection.
Default value: SLAVE
Set node type used for read operation.
Available values:
SLAVE
- Read from slave nodes, uses MASTER if no SLAVES are available.
MASTER
- Read from master node,
MASTER_SLAVE
- Read from master and slave nodes
Default value: SLAVE
Set node type used for subscription operation.
Available values:
SLAVE
- Subscribe to slave nodes,
MASTER
- Subscribe to master node,
Default value: org.redisson.connection.balancer.RoundRobinLoadBalancer
Сonnection load balancer for multiple Redis servers.
Available implementations:
org.redisson.connection.balancer.WeightedRoundRobinBalancer
org.redisson.connection.balancer.RoundRobinLoadBalancer
org.redisson.connection.balancer.RandomLoadBalancer
Default value: 1
Redis 'slave' node minimum idle subscription (pub/sub) connection amount for each slave node
Default value: 50
Redis 'slave' node maximum subscription (pub/sub) connection pool size for each slave node
Default value: 24
Redis 'slave' node minimum idle connection amount for each slave node
Default value: 64
Redis 'slave' node maximum connection pool size for each slave node
Default value: 24
Redis 'master' node minimum idle connection amount for each slave node. Redisson idle connections are remain for elected slave as master. Because this node remains in slave connection pool but in non-active state. These connections are preserved for case when your cluster lost all slaves. In this case master used as slave and idle-connections become in use.
Default value: 64
Redis 'master' node maximum connection pool size
Default value: 10000
If pooled connection not used for a timeout
time and current connections amount bigger than minimum idle connections pool size, then it will closed and removed from pool. Value in milliseconds.
Default value: 10000
Timeout during connecting to any Redis server.
Default value: 3000
Redis server response timeout. Starts to countdown when Redis command was succesfully sent. Value in milliseconds.
Default value: 3
Error will be thrown if Redis command can't be sended to Redis server after retryAttempts. But if it sent succesfully then timeout will be started.
Default value: 1500
Time interval after which another one attempt to send Redis command will be executed. Value in milliseconds.
Default value: 3000
Interval of Redis Slave reconnection attempt when it was excluded from internal list of available servers. On each timeout event Redisson tries to connect to disconnected Redis server. Value in milliseconds.
Default value: 60000
Redis Slave node failing to execute commands is excluded from the internal list of available nodes when the time interval from the moment of first Redis command execution failure on this server reaches defined value. Value in milliseconds.
Default value: 0
Database index used for Redis connection
Default value: null
Password for Redis server authentication.
Default value: 5
Subscriptions per Redis connection limit
Default value: null
Name of client connection
Default value: true
Enables SSL endpoint identification.
Default value: JDK
Defines SSL provider (JDK or OPENSSL) used to handle SSL connections.
Default value: null
Defines path to SSL truststore
Default value: null
Defines password for SSL truststore
Default value: null
Defines path to SSL keystore
Default value: null
Defines password for SSL keystore
Default value: 30000
PING command sending interval per connection to Redis. Defined in milliseconds. Set 0
to disable.
Default value: false
Enables TCP keepAlive for connection.
Default value: false
Enables TCP noDelay for connection.
Default value: no mapper
Defines Name mapper which maps Redisson object name. Applied to all Redisson objects.
Below is master slave configuration example in YAML format. All property names matches with MasterSlaveServersConfig
and Config
object property names.
---
masterSlaveServersConfig:
idleConnectionTimeout: 10000
connectTimeout: 10000
timeout: 3000
retryAttempts: 3
retryInterval: 1500
failedSlaveReconnectionInterval: 3000
failedSlaveCheckInterval: 60000
password: null
subscriptionsPerConnection: 5
clientName: null
loadBalancer: !<org.redisson.connection.balancer.RoundRobinLoadBalancer> {}
subscriptionConnectionMinimumIdleSize: 1
subscriptionConnectionPoolSize: 50
slaveConnectionMinimumIdleSize: 24
slaveConnectionPoolSize: 64
masterConnectionMinimumIdleSize: 24
masterConnectionPoolSize: 64
readMode: "SLAVE"
subscriptionMode: "SLAVE"
slaveAddresses:
- "redis://127.0.0.1:6381"
- "redis://127.0.0.1:6380"
masterAddress: "redis://127.0.0.1:6379"
database: 0
threads: 16
nettyThreads: 32
codec: !<org.redisson.codec.MarshallingCodec> {}
transportMode: "NIO"
Proxy mode supports multiple mirrors of Redis and fully compatible with RLEC Multiple Active Proxy feature. If Redis address defined as hostname then all resolved IPs are considered as proxy nodes and used with load balancer.
This feature available only in Redisson PRO edition.
Programmatic config example:
Config config = new Config();
// use "rediss://" for SSL connection
config.useProxyServers().addAddress("redis://myredisserver1:6379", "redis://myredisserver2:6379");
RedissonClient redisson = Redisson.create(config);
Proxy servers connection mode activated by follow line:
ProxyServersConfig proxyConfig = config.useProxyServers();
ProxyServersConfig
settings listed below:
Redis proxy servers addresses in host:port
format. If single hostname is defined and DNS monitoring is enabled then all resolved ips are considered as proxy nodes and used by load balancer. Use rediss://
protocol for SSL connection.
Default value: 1
Minimum idle Redis subscription connection amount.
Default value: 50
Redis subscription connection maximum pool size.
Default value: 24
Minimum idle Redis connection amount.
Default value: 64
Redis connection maximum pool size.
Default value: 5000
DNS change monitoring interval. Applications must ensure the JVM DNS cache TTL is low enough to support this. Set -1
to disable.
Default value: 10000
If pooled connection not used for a timeout
time and current connections amount bigger than minimum idle connections pool size, then it will closed and removed from pool. Value in milliseconds.
Default value: 10000
Timeout during connecting to any Redis server.
Default value: 3000
Redis server response timeout. Starts to countdown when Redis command was succesfully sent. Value in milliseconds.
Default value: 3
Error will be thrown if Redis command can't be sended to Redis server after retryAttempts. But if it sent succesfully then timeout will be started.
Default value: 1500
Time interval after which another one attempt to send Redis command will be executed. Value in milliseconds.
Default value: 0
Database index used for Redis connection
Default value: null
Password for Redis server authentication.
Default value: 5
Subscriptions per Redis connection limit
Default value: null
Name of client connection
Default value: true
Enables SSL endpoint identification.
Default value: JDK
Defines SSL provider (JDK or OPENSSL) used to handle SSL connections.
Default value: null
Defines path to SSL truststore
Default value: null
Defines password for SSL truststore
Default value: null
Defines path to SSL keystore
Default value: null
Defines password for SSL keystore
Default value: 30000
PING command sending interval per connection to Redis. Defined in milliseconds. Set 0
to disable.
Default value: false
Enables TCP keepAlive for connection.
Default value: false
Enables TCP noDelay for connection.
Default value: org.redisson.connection.balancer.RoundRobinLoadBalancer
Сonnection load balancer for multiple Redis servers.
Available implementations:
org.redisson.connection.balancer.WeightedRoundRobinBalancer
org.redisson.connection.balancer.RoundRobinLoadBalancer
org.redisson.connection.balancer.RandomLoadBalancer
Default value: no mapper
Defines Name mapper which maps Redisson object name. Applied to all Redisson objects.
Below is proxy mode configuration example in YAML format. All property names matches with ProxyServersConfig
and Config
object property names.
---
proxyServersConfig:
idleConnectionTimeout: 10000
connectTimeout: 10000
timeout: 3000
retryAttempts: 3
retryInterval: 1500
password: null
subscriptionsPerConnection: 5
clientName: null
addresses: "redis://127.0.0.1:6379"
subscriptionConnectionMinimumIdleSize: 1
subscriptionConnectionPoolSize: 50
connectionMinimumIdleSize: 24
connectionPoolSize: 64
database: 0
dnsMonitoringInterval: 5000
loadBalancer: !<org.redisson.connection.balancer.RoundRobinLoadBalancer> {}
threads: 16
nettyThreads: 32
codec: !<org.redisson.codec.MarshallingCodec> {}
transportMode: "NIO"