We now invoke the correct PEXPIRE(AT) command. Previously, we invoked EXPIRE/EXPIREAT commands resulting in the wrong command being called.
Original Pull Request: #474
Consistently use getClientName() instead of qualified configuration accessor. Add missing Nullable annotation to getPassword() method. Reformat.
Original pull request: #472.
LettuceConnectionFactory.destroy() now disposes also the reactive LettuceConnectionProvider to free resources of a connection pool.
Original Pull Request: #470
We now use the correct generic parameters for raw serialization via RedisSerializationContext returning ByteBuffer.
Introduce RedisSerializer.raw() and cleanups.
Original Pull Request: #459
The AsArrayTypeDeserializer causes date values to be rendered as an array like [java.util.Date, 1561543964015] an therefore is 1. skipped when flattening and 2. if not skipped cannot be read back.
We now register an error handler along with a custom deserializer aware of the used date format to write and read date values without having to store an array but just the date msec.
Original pull request: #467.
LettuceConnection, LettuceClusterConnection, and LettuceSubscription can now be properly subclassed so they can be extended and created by LettuceConnectionFactory.
LettuceConnectionFactory provides template methods doCreateLettuceConnection and doCreateLettuceClusterConnection.
Original pull request: #450 & #457
We now appropriately set SSL configuration when using the Lettuce driver with Redis Sentinel to enable Sentinel usage with SSL. Using Sentinel with SSL requires Lettuce 5.2 or newer.
Original Pull Request: #462
We now consider RedisTemplate's enableTransactionSupport configuration when releasing connections. Previously, we released bound connections when being in a read-only transaction regardless the configuration in RedisTemplate. This broke session callbacks that expected to remain on the same connection all but the first command were executed on a different connection.
Releasing a connection now no longer unbinds a connection if transaction support is disabled.
Original Pull Request: #453
We now check on connection release whether a connection is in MULTI state. If so, then we discard (rollback) the transaction to reset the connection to a fresh state.
Original Pull Request: #453
We now use Flux.usingWhen() to apply functions on reactive Redis connections and to release connections calling non-blocking methods.
Original Pull Request: #461
We now use GETRANGE with the Jedis client instead of the deprecated SUBSTR command. This allows us to natively use long values for start/end and removes the need for String/byte conversion on command level.
We now correctly set the requested database using RedisURI so the driver performs the database selection. We no longer need to call select ourselves.
For shared connections (pooled and single shared connection) we now no longer call select. This can leave connections with a different database associated.
Original Pull Request: #451
Add author tags. Provide override for clientName(…) in LettucePoolingClientConfigurationBuilder. Extend Javadoc. Add and simplify tests.
Original pull request: #446.
We now release a connection after a failed validation only once. Previously, a connection was released twice which caused a failure if the connection was obtained from a pool.
Original Pull Request: #445
We now made JedisClusterTopologyProvider public and configurable through overriding JedisConnectionFactory.createTopologyProvider(…).
The topology provider accepts a configurable timeout to configure the cache timeout. Alternatively, custom ClusterTopologyProvider implementations can be returned through JedisConnectionFactory.createTopologyProvider(…).
Original Pull Request: #383
LettuceConnectionFactory now considers the maximal redirection limit for Redis Cluster redirections.
Previously, the max-redirects limit was not configured in Lettuce.
Original Pull Request: #417