Class JedisConnectionFactory
- All Implemented Interfaces:
DisposableBean, InitializingBean, Lifecycle, Phased, SmartLifecycle, PersistenceExceptionTranslator, RedisConnectionFactory
JedisConnectionFactory should be configured using an environmental configuration and the
client configuration. Jedis supports the following environmental configurations:
This connection factory implements InitializingBean and SmartLifecycle for flexible lifecycle
control. It must be initialized and started before you can obtain a
connection. Initialization starts this bean
early by default. You can Lifecycle.stop() and restart this connection factory if needed. Disabling early startup leaves lifecycle
management to the container refresh if auto-startup is enabled.
Note that JedisConnection and its clustered variant are not Thread-safe and
instances should not be shared across threads. Refer to the
Jedis
documentation for guidance on configuring Jedis in a multithreaded environment.
This factory prefers Jedis 7 UnifiedJedis and usage can be downgraded to Jedis and
JedisCluster by setting setUseUnifiedJedis(false). Jedis
RedisClient and RedisClusterClient handle connection pooling within the driver. Jedis
connection pooling is managed by the factory. Both modes provide equivalent functionality through an adapter layer.
- Author:
- Costin Leau, Thomas Darimont, Christoph Strobl, Mark Paluch, Fu Jian, Ajith Kumar, Tihomir Mateev
- See Also:
-
Field Summary
Fields inherited from interface SmartLifecycle
DEFAULT_PHASE -
Constructor Summary
ConstructorsConstructorDescriptionConstructs a newJedisConnectionFactoryinstance with default settings (default connection pooling).JedisConnectionFactory(@Nullable RedisSentinelConfiguration sentinelConfiguration, @Nullable redis.clients.jedis.JedisPoolConfig poolConfig) Deprecated.JedisConnectionFactory(RedisClusterConfiguration clusterConfiguration) Constructs a newJedisConnectionFactoryinstance using the givenRedisClusterConfigurationapplied to create aRedisClusterClient.JedisConnectionFactory(RedisClusterConfiguration clusterConfiguration, JedisClientConfiguration clientConfiguration) Constructs a newJedisConnectionFactoryinstance using the givenRedisClusterConfigurationandJedisClientConfiguration.JedisConnectionFactory(RedisClusterConfiguration clusterConfiguration, redis.clients.jedis.JedisPoolConfig poolConfig) Deprecated.since 4.1 useJedisConnectionFactory(RedisClusterConfiguration, JedisClientConfiguration)instead.JedisConnectionFactory(RedisSentinelConfiguration sentinelConfiguration) Constructs a newJedisConnectionFactoryinstance.JedisConnectionFactory(RedisSentinelConfiguration sentinelConfiguration, JedisClientConfiguration clientConfiguration) Constructs a newJedisConnectionFactoryinstance using the givenRedisSentinelConfigurationandJedisClientConfiguration.JedisConnectionFactory(RedisStandaloneConfiguration standaloneConfiguration) Constructs a newJedisConnectionFactoryinstance using the givenRedisStandaloneConfiguration.JedisConnectionFactory(RedisStandaloneConfiguration standaloneConfiguration, JedisClientConfiguration clientConfiguration) Constructs a newJedisConnectionFactoryinstance using the givenRedisStandaloneConfigurationandJedisClientConfiguration.JedisConnectionFactory(redis.clients.jedis.JedisPoolConfig poolConfig) Deprecated.since 4.1 useJedisConnectionFactory(JedisClientConfiguration)instead. -
Method Summary
Modifier and TypeMethodDescriptionvoidprotected redis.clients.jedis.JedisClustercreateCluster(RedisClusterConfiguration clusterConfig, org.apache.commons.pool2.impl.GenericObjectPoolConfig<redis.clients.jedis.Connection> poolConfig) Deprecated, for removal: This API element is subject to removal in a future version.since 4.1, usecreateRedisClusterClient(RedisClusterConfiguration).protected redis.clients.jedis.RedisClientcreateRedisClient(RedisStandaloneConfiguration configuration) Creates a newRedisClientinstance.protected redis.clients.jedis.RedisClusterClientcreateRedisClusterClient(RedisClusterConfiguration configuration) Creates a newRedisClusterClient.protected redis.clients.jedis.util.Pool<redis.clients.jedis.Jedis> CreatesJedisPool.protected redis.clients.jedis.RedisSentinelClientcreateRedisSentinelClient(RedisSentinelConfiguration configuration) Creates a newRedisSentinelClientinstance.protected redis.clients.jedis.util.Pool<redis.clients.jedis.Jedis> CreatesJedisSentinelPool.protected ClusterTopologyProvidercreateTopologyProvider(redis.clients.jedis.JedisCluster cluster) Deprecated, for removal: This API element is subject to removal in a future version.since 2.2, usecreateTopologyProvider(UnifiedJedis)instead.protected ClusterTopologyProvidercreateTopologyProvider(redis.clients.jedis.UnifiedJedis cluster) Template method to create aClusterTopologyProvidergivenUnifiedJedis.voiddestroy()protected redis.clients.jedis.JedisDeprecated.since 4.1, usegetRequiredRedisClient()instead.@Nullable StringReturns the client name.@Nullable RedisClusterConfigurationReturns a suitableconnectionfor interacting with Redis Cluster.Returns a suitableconnectionfor interacting with Redis.booleanSpecifies if pipelined results should be converted to the expected data type.intReturns the index of the database.Returns the Redis hostname.@Nullable StringReturns the password used for authenticating with the Redis server.intgetPhase()<T> @Nullable org.apache.commons.pool2.impl.GenericObjectPoolConfig<T> Returns the poolConfig.intgetPort()Returns the port used to connect to the Redis instance.protected redis.clients.jedis.UnifiedJedisReturns the requiredRedisClientinstance.@Nullable RedisSentinelConfigurationReturns a suitableconnectionfor interacting with Redis Sentinel.@Nullable RedisStandaloneConfigurationintReturns the timeout.booleanDeprecated.since 4.1 all Jedis single node connections are always using connection poolingbooleanbooleanbooleanbooleanbooleanbooleanisUseSsl()Returns whether to use SSL.booleanReturns true if the factory should useUnifiedJedisnatively (default).protected JedisClusterConnectionpostProcessConnection(JedisClusterConnection connection) Post process a newly retrieved connection.protected JedisConnectionpostProcessConnection(JedisConnection connection) Post process a newly retrieved connection.voidsetAutoStartup(boolean autoStartup) Configure if this Lifecycle connection factory should get started automatically by the container at the time that the containing ApplicationContext gets refreshed.voidsetClientName(String clientName) Deprecated.since 2.0, configure the client name usingJedisClientConfiguration.voidsetConvertPipelineAndTxResults(boolean convertPipelineAndTxResults) Specifies if pipelined results should be converted to the expected data type.voidsetDatabase(int index) Deprecated.since 2.0, configure the database index usingRedisStandaloneConfigurationorRedisSentinelConfiguration.voidsetEarlyStartup(boolean earlyStartup) Configure if this InitializingBean's component Lifecycle should get started early byafterPropertiesSet()at the time that the bean is initialized.voidsetExecutor(AsyncTaskExecutor executor) Configures theexecutorused to execute commands asynchronously across the cluster.voidsetHostName(String hostName) Deprecated.since 2.0, configure the hostname usingRedisStandaloneConfiguration.voidsetPassword(String password) Deprecated.since 2.0, configure the password usingRedisStandaloneConfiguration,RedisSentinelConfigurationorRedisClusterConfiguration.voidsetPhase(int phase) Specify the lifecycle phase for pausing and resuming this executor.voidsetPoolConfig(redis.clients.jedis.JedisPoolConfig poolConfig) Deprecated, for removal: This API element is subject to removal in a future version.since 2.0, configureJedisPoolConfigusingJedisClientConfiguration.voidsetPort(int port) Deprecated.since 2.0, configure the port usingRedisStandaloneConfiguration.voidsetTimeout(int timeout) Deprecated.since 2.0, configure the timeout usingJedisClientConfiguration.voidsetUsePool(boolean usePool) Deprecated.since 2.0, configure pooling usage withJedisClientConfiguration.voidsetUseSsl(boolean useSsl) Deprecated.since 2.0, configure the SSL usage withJedisClientConfiguration.voidsetUseUnifiedJedis(boolean useUnifiedJedis) Configure whether to useRedisClientandRedisClusterClientthrough theUnifiedJedisinterface (defaults to true).voidstart()voidstop()@Nullable DataAccessExceptionMethods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface SmartLifecycle
isPauseable, stop
-
Constructor Details
-
JedisConnectionFactory
public JedisConnectionFactory()Constructs a newJedisConnectionFactoryinstance with default settings (default connection pooling). -
JedisConnectionFactory
@Deprecated(since="4.1") public JedisConnectionFactory(redis.clients.jedis.JedisPoolConfig poolConfig) Deprecated.since 4.1 useJedisConnectionFactory(JedisClientConfiguration)instead.Constructs a newJedisConnectionFactoryinstance using the given pool configuration. Defaults to use the deprecatedJedisclient.- Parameters:
poolConfig- pool configuration
-
JedisConnectionFactory
Constructs a newJedisConnectionFactoryinstance using the givenRedisClusterConfigurationapplied to create aRedisClusterClient.- Parameters:
clusterConfiguration- must not be null.- Since:
- 1.7
-
JedisConnectionFactory
public JedisConnectionFactory(RedisClusterConfiguration clusterConfiguration, JedisClientConfiguration clientConfiguration) Constructs a newJedisConnectionFactoryinstance using the givenRedisClusterConfigurationandJedisClientConfiguration.- Parameters:
clusterConfiguration- must not be null.clientConfiguration- must not be null.- Since:
- 2.0
-
JedisConnectionFactory
@Deprecated(since="4.1") public JedisConnectionFactory(RedisClusterConfiguration clusterConfiguration, redis.clients.jedis.JedisPoolConfig poolConfig) Deprecated.since 4.1 useJedisConnectionFactory(RedisClusterConfiguration, JedisClientConfiguration)instead.Constructs a newJedisConnectionFactoryinstance using the givenRedisClusterConfigurationapplied to create aJedisCluster.- Parameters:
clusterConfiguration- must not be null.- Since:
- 1.7
-
JedisConnectionFactory
Constructs a newJedisConnectionFactoryinstance.- Parameters:
sentinelConfiguration- must not be null.- Since:
- 1.4
-
JedisConnectionFactory
public JedisConnectionFactory(RedisSentinelConfiguration sentinelConfiguration, JedisClientConfiguration clientConfiguration) Constructs a newJedisConnectionFactoryinstance using the givenRedisSentinelConfigurationandJedisClientConfiguration.- Parameters:
sentinelConfiguration- must not be null.clientConfiguration- must not be null.- Since:
- 2.0
-
JedisConnectionFactory
@Deprecated(since="4.1") public JedisConnectionFactory(@Nullable RedisSentinelConfiguration sentinelConfiguration, @Nullable redis.clients.jedis.JedisPoolConfig poolConfig) Deprecated.since 4.1 useJedisConnectionFactory(RedisSentinelConfiguration, JedisClientConfiguration)instead.Constructs a newJedisConnectionFactoryinstance using the givenJedisPoolConfigapplied toJedisSentinelPool.- Parameters:
sentinelConfiguration- the sentinel configuration to use.poolConfig- pool configuration. Defaulted to new instance if null.- Since:
- 1.4
-
JedisConnectionFactory
Constructs a newJedisConnectionFactoryinstance using the givenRedisStandaloneConfiguration.- Parameters:
standaloneConfiguration- must not be null.- Since:
- 2.0
-
JedisConnectionFactory
public JedisConnectionFactory(RedisStandaloneConfiguration standaloneConfiguration, JedisClientConfiguration clientConfiguration) Constructs a newJedisConnectionFactoryinstance using the givenRedisStandaloneConfigurationandJedisClientConfiguration.- Parameters:
standaloneConfiguration- must not be null.clientConfiguration- must not be null.- Since:
- 2.0
-
-
Method Details
-
setExecutor
-
getHostName
-
setHostName
Deprecated.since 2.0, configure the hostname usingRedisStandaloneConfiguration.Sets the Redis hostname.- Parameters:
hostName- the hostname to set.
-
isUseSsl
public boolean isUseSsl()Returns whether to use SSL.- Returns:
- use of SSL.
- Since:
- 1.8
-
setUseSsl
Deprecated.since 2.0, configure the SSL usage withJedisClientConfiguration.Sets whether to use SSL.- Parameters:
useSsl- true to use SSL.- Throws:
IllegalStateException- ifJedisClientConfigurationis immutable.- Since:
- 1.8
-
getPassword
Returns the password used for authenticating with the Redis server.- Returns:
- password for authentication.
-
setPassword
Deprecated.since 2.0, configure the password usingRedisStandaloneConfiguration,RedisSentinelConfigurationorRedisClusterConfiguration.Sets the password used for authenticating with the Redis server.- Parameters:
password- the password to set.
-
getPort
public int getPort()Returns the port used to connect to the Redis instance.- Returns:
- the Redis port.
-
setPort
Deprecated.since 2.0, configure the port usingRedisStandaloneConfiguration.Sets the port used to connect to the Redis instance.- Parameters:
port- the Redis port.
-
getTimeout
public int getTimeout()Returns the timeout.- Returns:
- the timeout.
-
setTimeout
Deprecated.since 2.0, configure the timeout usingJedisClientConfiguration.Sets the timeout.- Parameters:
timeout- the timeout to set.- Throws:
IllegalStateException- ifJedisClientConfigurationis immutable.
-
getUsePool
Deprecated.since 4.1 all Jedis single node connections are always using connection poolingIndicates the use of a connection pool.Applies only to single-node Redis. Sentinel and Cluster modes use always connection-pooling regardless of the pooling setting.
- Returns:
- the use of connection pooling.
-
setUsePool
Deprecated.since 2.0, configure pooling usage withJedisClientConfiguration.Turns on or off the use of connection pooling.- Parameters:
usePool- the usePool to set.- Throws:
IllegalStateException- ifJedisClientConfigurationis immutable.IllegalStateException- if configured to use sentinel andusePoolis false as Jedis requires pooling for Redis sentinel use.
-
getPoolConfig
public <T> @Nullable org.apache.commons.pool2.impl.GenericObjectPoolConfig<T> getPoolConfig()Returns the poolConfig.- Returns:
- the poolConfig
-
setPoolConfig
@Deprecated(forRemoval=true) public void setPoolConfig(redis.clients.jedis.JedisPoolConfig poolConfig) Deprecated, for removal: This API element is subject to removal in a future version.since 2.0, configureJedisPoolConfigusingJedisClientConfiguration.Sets the pool configuration for this factory.- Parameters:
poolConfig- the poolConfig to set.- Throws:
IllegalStateException- ifJedisClientConfigurationis immutable.
-
getDatabase
public int getDatabase()Returns the index of the database.- Returns:
- the database index.
-
setDatabase
Deprecated.since 2.0, configure the database index usingRedisStandaloneConfigurationorRedisSentinelConfiguration.Sets the index of the database used by this connection factory. Default is 0.- Parameters:
index- database index.
-
getClientName
Returns the client name.- Returns:
- the client name.
- Since:
- 1.8
-
setClientName
Deprecated.since 2.0, configure the client name usingJedisClientConfiguration.Sets the client name used by this connection factory. Defaults to none which does not set a client name.- Parameters:
clientName- the client name.- Throws:
IllegalStateException- ifJedisClientConfigurationis immutable.- Since:
- 1.8
-
isUseUnifiedJedis
public boolean isUseUnifiedJedis()Returns true if the factory should useUnifiedJedisnatively (default).- Returns:
- true to use
UnifiedJedisnatively; false to use the deprecatedJedisandJedisClusterclients. - Since:
- 4.1
-
setUseUnifiedJedis
public void setUseUnifiedJedis(boolean useUnifiedJedis) Configure whether to useRedisClientandRedisClusterClientthrough theUnifiedJedisinterface (defaults to true). Set to false to use the deprecatedJedisandJedisClusterAPI.- Parameters:
useUnifiedJedis- true to useUnifiedJedisnatively; false to use the deprecatedJedisandJedisClusterclients.- Since:
- 4.1
-
getClientConfiguration
- Returns:
- the
JedisClientConfiguration. - Since:
- 2.0
-
getStandaloneConfiguration
- Returns:
- the
RedisStandaloneConfiguration. - Since:
- 2.0
-
getSentinelConfiguration
- Returns:
- the
RedisStandaloneConfiguration, may be null. - Since:
- 2.0
-
getClusterConfiguration
- Returns:
- the
RedisClusterConfiguration, may be null. - Since:
- 2.0
-
getPhase
public int getPhase()- Specified by:
getPhasein interfacePhased- Specified by:
getPhasein interfaceSmartLifecycle
-
setPhase
public void setPhase(int phase) Specify the lifecycle phase for pausing and resuming this executor. The default is0.- Since:
- 3.2
- See Also:
-
isAutoStartup
public boolean isAutoStartup()- Specified by:
isAutoStartupin interfaceSmartLifecycle- Since:
- 3.3
-
setAutoStartup
public void setAutoStartup(boolean autoStartup) Configure if this Lifecycle connection factory should get started automatically by the container at the time that the containing ApplicationContext gets refreshed.This connection factory defaults to early auto-startup during
afterPropertiesSet()and can potentially create Redis connections early on in the lifecycle. SeesetEarlyStartup(boolean)for delaying connection creation to the ApplicationContext refresh if auto-startup is enabled.- Parameters:
autoStartup- true to automaticallystart()the connection factory; false otherwise.- Since:
- 3.3
- See Also:
-
isEarlyStartup
public boolean isEarlyStartup()- Returns:
- whether to
start()the component duringafterPropertiesSet(). - Since:
- 3.3
-
setEarlyStartup
public void setEarlyStartup(boolean earlyStartup) Configure if this InitializingBean's component Lifecycle should get started early byafterPropertiesSet()at the time that the bean is initialized. The component defaults to auto-startup.This method is related to
auto-startupand can be used to delay Redis client startup until the ApplicationContext refresh. Disabling early startup does not disable auto-startup.- Parameters:
earlyStartup- true to earlystart()the component; false otherwise.- Since:
- 3.3
- See Also:
-
getConvertPipelineAndTxResults
public boolean getConvertPipelineAndTxResults()Specifies if pipelined results should be converted to the expected data type. Iffalse, results ofJedisConnection.closePipeline()andJedisConnection.exec()will be of the type returned by the Jedis driver.- Specified by:
getConvertPipelineAndTxResultsin interfaceRedisConnectionFactory- Returns:
trueto convert pipeline and transaction results;falseotherwise.
-
setConvertPipelineAndTxResults
public void setConvertPipelineAndTxResults(boolean convertPipelineAndTxResults) Specifies if pipelined results should be converted to the expected data type. Iffalse, results ofJedisConnection.closePipeline()andJedisConnection.exec()will be of the type returned by the Jedis driver.- Parameters:
convertPipelineAndTxResults-trueto convert pipeline and transaction results;falseotherwise.
-
isRedisSentinelAware
public boolean isRedisSentinelAware()- Returns:
- true when
RedisSentinelConfigurationis present. - Since:
- 1.4
-
isRedisClusterAware
public boolean isRedisClusterAware()- Returns:
- true when
RedisClusterConfigurationis present. - Since:
- 2.0
-
afterPropertiesSet
public void afterPropertiesSet()- Specified by:
afterPropertiesSetin interfaceInitializingBean
-
start
-
stop
-
isRunning
-
createRedisSentinelPool
protected redis.clients.jedis.util.Pool<redis.clients.jedis.Jedis> createRedisSentinelPool(RedisSentinelConfiguration config) CreatesJedisSentinelPool.- Parameters:
config- the actualRedisSentinelConfiguration. Never null.- Returns:
- the
Poolto use. Never null. - Since:
- 1.4
-
createRedisPool
protected redis.clients.jedis.util.Pool<redis.clients.jedis.Jedis> createRedisPool()CreatesJedisPool.- Returns:
- the
Poolto use. Never null. - Since:
- 1.4
-
createTopologyProvider
@Deprecated(since="2.2", forRemoval=true) protected ClusterTopologyProvider createTopologyProvider(redis.clients.jedis.JedisCluster cluster) Deprecated, for removal: This API element is subject to removal in a future version.since 2.2, usecreateTopologyProvider(UnifiedJedis)instead.Template method to create aClusterTopologyProvidergivenJedisCluster. CreatesJedisClusterConnection.JedisClusterTopologyProviderby default.- Parameters:
cluster- theJedisCluster(typically a cluster client), must not be null.- Returns:
- the
ClusterTopologyProvider. - Since:
- 2.2
- See Also:
-
createTopologyProvider
Template method to create aClusterTopologyProvidergivenUnifiedJedis. CreatesJedisClusterConnection.JedisClusterTopologyProviderby default.- Parameters:
cluster- theUnifiedJedis(typically a cluster client), must not be null.- Returns:
- the
ClusterTopologyProvider. - Since:
- 4.1
- See Also:
-
createCluster
@Deprecated(since="4.1", forRemoval=true) protected redis.clients.jedis.JedisCluster createCluster(RedisClusterConfiguration clusterConfig, org.apache.commons.pool2.impl.GenericObjectPoolConfig<redis.clients.jedis.Connection> poolConfig) Deprecated, for removal: This API element is subject to removal in a future version.since 4.1, usecreateRedisClusterClient(RedisClusterConfiguration).- Parameters:
clusterConfig- must not be null.poolConfig- can be null.- Returns:
- the actual
JedisCluster. - Since:
- 1.7
-
createRedisClusterClient
protected redis.clients.jedis.RedisClusterClient createRedisClusterClient(RedisClusterConfiguration configuration) Creates a newRedisClusterClient.- Parameters:
configuration- the cluster configuration to use for creating the client.- Returns:
- the
RedisClusterClientinstance - Since:
- 4.1
-
destroy
public void destroy()- Specified by:
destroyin interfaceDisposableBean
-
getConnection
Description copied from interface:RedisConnectionFactoryReturns a suitableconnectionfor interacting with Redis.- Specified by:
getConnectionin interfaceRedisConnectionFactory- Returns:
connectionfor interacting with Redis.
-
fetchJedisConnector
Deprecated.since 4.1, usegetRequiredRedisClient()instead.Returns a Jedis instance to be used as a Redis connection. The instance can be newly created or retrieved from a pool.- Returns:
- Jedis instance ready for wrapping into a
RedisConnection.
-
postProcessConnection
Post process a newly retrieved connection. Useful for decorating or executing initialization commands on a new connection. This implementation simply returns the connection.- Parameters:
connection- the jedis connection.- Returns:
- processed connection
-
getRequiredRedisClient
protected redis.clients.jedis.UnifiedJedis getRequiredRedisClient()Returns the requiredRedisClientinstance. The client is initialized duringstart().- Throws:
IllegalStateException- if the client has not been initialized- Since:
- 4.1
-
createRedisClient
protected redis.clients.jedis.RedisClient createRedisClient(RedisStandaloneConfiguration configuration) Creates a newRedisClientinstance.- Returns:
- the
RedisClientinstance. - Since:
- 4.1
-
createRedisSentinelClient
protected redis.clients.jedis.RedisSentinelClient createRedisSentinelClient(RedisSentinelConfiguration configuration) Creates a newRedisSentinelClientinstance.- Parameters:
configuration- the cluster configuration to use for creating the client.- Returns:
- the
RedisSentinelClientinstance. - Since:
- 4.1
-
getClusterConnection
Description copied from interface:RedisConnectionFactoryReturns a suitableconnectionfor interacting with Redis Cluster.- Specified by:
getClusterConnectionin interfaceRedisConnectionFactory- Returns:
- a
connectionfor interacting with Redis Cluster.
-
postProcessConnection
Post process a newly retrieved connection. Useful for decorating or executing initialization commands on a new connection. This implementation simply returns the connection.- Parameters:
connection- the jedis connection.- Returns:
- processed connection.
- Since:
- 3.2
-
translateExceptionIfPossible
- Specified by:
translateExceptionIfPossiblein interfacePersistenceExceptionTranslator
-
getSentinelConnection
Description copied from interface:RedisConnectionFactoryReturns a suitableconnectionfor interacting with Redis Sentinel.- Specified by:
getSentinelConnectionin interfaceRedisConnectionFactory- Returns:
- a
connectionfor interacting with Redis Sentinel.
-
JedisConnectionFactory(RedisSentinelConfiguration, JedisClientConfiguration)instead.