LettuceConnectionFactory.destroy() now disposes also the reactive LettuceConnectionProvider to free resources of a connection pool.
Original Pull Request: #470
To resolve XSD files properly from the classpath, their HTTPS reference must be present in the spring.schemas to avoid internet interaction for resolving an XSD file.
We now use the correct generic parameters for raw serialization via RedisSerializationContext returning ByteBuffer.
Introduce RedisSerializer.raw() and cleanups.
Original Pull Request: #459
Replace some AtTest(expected = …) and ExpectedException with the corresponding AssertJ assertThatExceptionOfType(…) and assertThatIllegalArgumentException().isThrownBy(…).
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.
Use connection factory customizer for setting db index when creating new connection. This allows to grasp the tests setup more quickly and improves readability.
Original Pull Request: #451
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