We now emit InvalidDataAccessApiUsageException when a RedisElementReader returns null in the context of a top-level stream to indicate invalid API usage although RedisElementReader.read can generally return null values if these are being collected in a container or value wrapper or parent complex object.
Apply consistent wording to operations documentation.
Adapt to API changes in the Jedis 5.0 driver.
Fix bzPopMaxShouldWorkCorrectly() and bzPopMinShouldWorkCorrectly() tests in JedisClusterConnectionTests.
Jedis 5.0 changed the bzpopmax and bzpopmin Redis commands to no longer return an empty (Array)List internally when evaluating and popping from an empty sorted set. A NullPointerException will be thrown if either bzpopmax or bzpopmin commands are executd on an empty Redis sorted set in Jedis 5.0 (vs. Jedis 4.x):
Closes#2612
Original pull request: #2716
Move executor from ClusterConfiguration to connection factories as the executor is a Spring concept that isn't tied to endpoint details or the client config.
Reorder static factory methods after constructors and property accessors after static factory methods. Inline single-line single-use methods that aren't intended as extension hooks for easier readability.
Disable TaskExecutor disposal on ClusterCommandExecutor.destroy().
Remove NonNull annotations as default non-nullability is defined on the package level.
Simplify tests to use integration tests to avoid excessive mocking.
See #2594
Original pull request: #2669
This change allows users to leverage the VirtualThread facilities and AsyncTaskExecutor implementations provided in and by the core Spring Framework as part of our Loom support theme.
Closes#2594
Original pull request: #2669
Replace qualified class name access of inner classes with simple names and imports.
Remove Java 8 guards. Extend supported temporal types in Jsr310Converters. Remove superfluous converter annotations.
Simplify tests.
See #2677
Original pull request: #2681
We now appropriately handle OffsetDateTime and OffsetTime the same as all other java.time types, supported as simple types on Spring application (persistent) entity classes.
Closes#2677
We now support time-to-idle (TTI) expiration policies for cache reads.
The TTI implementation is achieved with the use of the Redis GETEX command on Cache.get(key) operations as well as consistently using the same TTL configuration for all cache operations when TTI is enabled and TTL expiration has been configured,
with the use of a TtlFunction or fixed Duration.
Closes#2351
Original pull request: #2643
Make fields final where possible. Reintroduce end of line comment markers to avoid reformatting into unreadable format. Replace HashSet per command instance with String to reduce memory footprint.
Tweak Javadoc wording to represent what we actually expect. Reorder methods.
See #2640
Original pull request: #2644
Add tests that assert initialization constraints, use early return to default value in case of null and align code format.
Original Pull Request: #2637
We now cross-check the existing key type against the specified CollectionType to avoid collection creation that doesn't match the configured CollectionType. If the existing key type doesn't match the configured CollectionType, collection creation fails with a validation error.
Closes#2633
Original Pull Request: #2637
This commit restores the behaviour of RedisConnectionFactories eager initialization via afterPropertiesSet.
Additionally it is now possible to modify the lifecycle phase.
Closes#2635
Original pull request: #2636
Reorder factory fields according to immutable configuration, mutable configuration and connection factory state. Reorder methods and switch Jedis references to its current GitHub repository.
Refine assertions. Update documentation.
See: #2503
Original pull request: #2627