We now apply the password to all Sentinel endpoints described through RedisURI.
We also apply all remaining settings to all Sentinel endpoints to ensure configuration propagation.
Original Pull Request: #490
Empty Strings changed to be considered null throwing an exception on getRequiredAttribute so we now set the value explicitly for this attribute when considered empty.
Original pull request: #491.
Cleanup publishers are now subscribed to instead of setting the subscribeOn Scheduler to ensure connections get closed after canceling the stream.
Original Pull Request: #488
Previously it was possible in multi-threaded environment to:
* get a `null` from `opsFor*` methods in RedisTemplate.
* fail with a `NullPointerException` when working with a not-`null` reference returned from `RedisTemplate.opsFor*` methods.
Introduced changes initialize the fields eagerly to avoid visibility issues when accessing them and add a `final` modifier to the `AbstractOperations#template` field.
Original pull request: #479.
Add early return in cache key is a String. Convert convertCollectionLikeOrMapKey to non-nullable method by throwing an exception on a non-collection-like and Map-like type.
Original pull request: #475.
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