We now accept a type hint when calling getAllOf(…) to avoid materializing null instances when the actual type hint cannot resolve to an entity.
Closes#1995
Original Pull Request: #1996
RedisNode can now be constructed using an empty hostname. This can happen when a node is in failover state. RedisNode exposes hasValidHost() to check whether the node has a valid hostname.
Also, introduce copy constructor to avoid mutations caused by the builder.
Closes#1985
Original Pull Request: #1991
Remove ZAddArgs.empty() method to avoid confusion with none() method. Use NONE constant only internally. Adapt calling methods.
Reformat code.
See #1794
Original pull request: #1988.
We now accept unknown custom Redis commands when using the Lettuce driver. Previously, custom commands were required to exist in Lettuce's CommandType enumeration and unknown commands (such as modules) failed to run.
Closes#1979
Fix example to create an instance of the LettuceClientConfiguration type with the appropriate constant variable.
Closes#1964
Original pull request: #1966.
This commit makes sure to clean up resources when a previously expiring entity is persisted by setting the time to live to zero or negative.
In case a phantom copy exists for the changed entity, it is removed to free space on the server and prevent expiration events from being sent.
Closes#1955
Original Pull Request: #1961
We now support ZREMRANGEBYLEX for Synchronous, Reactive, ZSetOperations and RedisZSet.
Also provide a Kotlin coroutines variant via the extension for ReactiveZSetOperations.
Closes#1816.
Original pull request: #1968.
This commit fixes an issue where the order of elements in a set is not preserved when converting elements of the set.
Closes#1969.
Original pull request: #1968.
Move the no op identity converter to Converters and reuse those across the connection package.
Fix nullables and minor code format issues along the way.
See: #1951
Original Pull Request: #1960
We now use JedisInvoker to call Jedis and Pipeline methods for synchronous, pipelining, and transactional execution models. JedisInvoker captures the method invocation as functional utility and allows conversion of results:
Long result = invoker.just(BinaryJedis::geoadd, MultiKeyPipelineBase:geoadd, key, point.getX(), point.getY(), member);
Closes#1951
Original Pull Request: #1960
Use lambdas where possible. Deprecate unused methods. Favor LettuceInvoker conversion methods over List to List/List to Set converters.
See #1797
Original Pull Request #1948
We now use LettuceInvoker to call Lettuce API methods for synchronous, pipelining, and transactional execution models. LettuceInvoker captures the method invocation as functional utility and allows conversion of results:
Long result = invoker.just(RedisGeoAsyncCommands::geoadd, key, point.getX(), point.getY(), member);
List<byte[]> result = invoker.fromMany(RedisGeoAsyncCommands::geohash, key, members)
.toList(it -> it.getValueOrElse(null));
Closes#1797
Original Pull Request #1948