Commit Graph

915 Commits

Author SHA1 Message Date
Mark Paluch
7cd0669e86 Polishing.
Extend copy(…) command with replace argument. Add support for reactive copy(…). Fix connection unit tests. Reorder methods.

Add since tags.

See #2040
Original pull request: #2059.
2021-06-15 11:55:17 +02:00
ihaohong
1a4eef347e Add support for COPY.
Closes #2040
Original pull request: #2059.
2021-06-15 11:53:56 +02:00
Mark Paluch
ba767fa86d Polishing.
Inline valueFromLoader method. Refine tests to not rely on the number of runtime CPU cores.

See #2079
Original pull request: #2082.
2021-06-15 09:30:45 +02:00
Piotr Mionskowski
30aeda562b Synchronize RedisCache.get(…) with ValueLoader only if value is absent.
RedisCache.get(…) now optimistically fetches the cache value before entering cache-wide synchronization. The previous version synchronized all calls to `get(key, valueLoader)`.

Closes #2079
Original pull request: #2082.
2021-06-15 09:29:20 +02:00
Mark Paluch
5747c7d5e6 Polishing.
Add leftPop/rightPop methods to BoundListOperations. Tweak Javadoc and add since tags. Extend tests.

Closes #1987
2021-06-14 10:51:37 +02:00
dengliming
3b146cc2cb Add support for LPOP and RPOP with count option.
Closes #1987
2021-06-14 10:51:23 +02:00
Mark Paluch
866010e71d Fix XREVRANGE using Lettuce to use the same connection.
XREVRANGE using Lettuce uses now the same connection instead of pinning execution to a dedicated connection.

Closes #2078
2021-06-09 15:58:21 +02:00
Christoph Strobl
2711181ec8 Polishing.
Add explicit cast update documentation and rename SubcriptionListener instance to NO_OP_...
Fix Java 16 compile error.

Original Pull Request: #2052
2021-05-21 10:14:38 +02:00
Mark Paluch
9480851a2e Add ReactiveRedisOperations.listenToLater(…) to await subscriptions.
Original Pull Request: #2052
2021-05-21 10:12:02 +02:00
Mark Paluch
fe51d78537 Add ReactiveRedisMessageListenerContainer.receiveLater(…) to await subscriptions.
Original Pull Request: #2052
2021-05-21 10:08:38 +02:00
Mark Paluch
328de94d85 Polishing.
Replace MonoProcessor with Sinks.

Original Pull Request: #2052
2021-05-21 10:08:15 +02:00
Mark Paluch
58e7aa57a2 Add support for SubscriptionListener using ReactiveRedisMessageListenerContainer.
Original Pull Request: #2052
2021-05-21 10:06:42 +02:00
Mark Paluch
0f1c59813e Polishing.
Add missing (at)Override annotations.

Original Pull Request: #2052
2021-05-21 10:06:05 +02:00
Mark Paluch
48d80e0fd4 Add support for subscription ready/unsubscription done events.
Original Pull Request: #2052
2021-05-21 10:05:14 +02:00
Christoph Strobl
8c05f198da Transition BatchStrategy to interface.
...and use long return type instead of int for cleanCache.
Original Pull Request: #2051
2021-05-20 13:04:45 +02:00
Mark Paluch
1a290c3a96 Revise RedisCache documentation.
Original Pull Request: #2051
2021-05-20 13:03:30 +02:00
Mark Paluch
0dc89b8001 Add support for configurable batch strategies using RedisCache.
We now support a configurable BatchStrategy for RedisCache. The implementations consist of KEYS (default) and SCAN. Since SCAN is not supported with Jedis Cluster and SCAN requires a batch size, we default to KEYS.

Closes: #1721
Original Pull Request: #2051
2021-05-20 13:02:38 +02:00
Mark Paluch
a525fc1fd9 Add ScanOptions.pattern(…) accepting a byte[] pattern.
We now accept a byte array as pattern for scan operations in addition to String patterns.

Also, use binary Jedis scan method to avoid bytes to String conversion.

Closes: #2006
Original Pull Request: #2051
2021-05-20 13:01:57 +02:00
Mark Paluch
b4e75e5f96 Guard non-initialized RedisConnectionFactory.getConnection() with IllegalStateException.
Obtaining a Connection from RedisConnectionFactory and its reactive variant is now guarded by IllegalStateException that is thrown if the connection factory was not yet initialized.

Previously, connections could be obtained where configuration was partially applied.

Closes #2057
2021-05-12 11:56:32 +02:00
Mark Paluch
284dfbcca6 Adapt to changes in Jedis 3.6.
Closes #2017
Original Pull Request: #2021
2021-03-31 15:00:06 +02:00
Mark Paluch
4a2abdcd9b Provide TLS support for Sentinel clients in Jedis driver.
Closes #1560
Original Pull Request: #2021
2021-03-31 14:59:46 +02:00
Mark Paluch
0f6a152295 Polishing.
Reorder methods. Move rewriteConfig directly implemented on connection to DefaultedRedisConnection respective DefaultedRedisClusterConnection.

Add overload to run config rewrite on individual cluster nodes. Add tests. Add since tags and update Javadoc.

See #1992
Original pull request: #2012.
2021-03-29 11:40:51 +02:00
Manousos Mathioudakis
2d56eaf3c6 Add support for CONFIG REWRITE.
Signed-off-by: Manousos Mathioudakis <manoumathioudakis@yahoo.gr>

Closes #1992
Original pull request: #2012.
2021-03-29 11:40:50 +02:00
Christoph Strobl
3a1fbe1cf7 Remove limit(long) from Cursor and hint users to stream().limit(...)
Original Pull Request: #2014
2021-03-25 13:11:53 +01:00
Mark Paluch
b0dd3cda6c Deprecate Cursor.open().
This method should not be called from code consuming the Cursor.

See: #1575
Original Pull Request: #2014
2021-03-25 12:49:10 +01:00
Mark Paluch
0061d6c7af Polishing.
Let Cursor extend CloseableCursor. Refine nullability annotations and align nullability behavior in tests with actual nullability usage.

See: #1575
Original Pull Request: #2014
2021-03-25 12:48:09 +01:00
Mark Paluch
b7f2d68d73 Add limit option to ScanCursor.
ScanCursor can be now limited to a maximum number of elements to be retrieved.

Closes: #1575
Original Pull Request: #2014
2021-03-25 12:47:21 +01:00
Christoph Strobl
daa99f8698 Simplify return path for reading collections.
Reduce the nesting level of byte[] checks and processing.

Original Pull Request: #2015
2021-03-25 09:22:46 +01:00
Mark Paluch
4e9f4bc4ad Polishing.
Move off deprecated StringUtils.isEmpty method. Fix type reference using the component type and not the component's component type. Add early return for null values.

Original Pull Request: #2015
2021-03-25 09:22:35 +01:00
Mark Paluch
d5ba93cc25 Pass-thru byte arrays in entities into Bucket.
MappingRedisConverter now accepts data for byte arrays as single property to avoid flattening out binary data into a collection form. We still accept data in a collection form to retain compatibility.

Closes: #1981
Original Pull Request: #2015
2021-03-25 09:22:00 +01:00
Christoph Strobl
7207305637 Update state check error message to include failure hint.
Original Pull Request: #2013
2021-03-24 13:49:01 +01:00
Mark Paluch
73650cf943 Return AbstractRedisClient from LettuceConnectionFactory.
Closes #1745
Original Pull Request: #2013
2021-03-24 13:48:49 +01:00
Mark Paluch
503d639c5d Make RedisConnectionProxy public.
RedisConnectionProxy is now public so it can be used properly for Java proxy creation across different class loaders. Previously, creating a Java proxy from a different class loader failed because of visibility/access restrictions.

Closes #2016
2021-03-24 09:33:02 +01:00
Mark Paluch
9b39c09389 Polishing.
Add support for Jedis Streams using JedisCluster. Add fromMany(…) for non-pipelined usage to JedisInvoker.

Reformat code, add author tags. Extract Jedis-specific stream type converters to StreamConverters. Properly convert StreamEntry and StreamEntryID into list/map. Update tests.

See #1711
Original pull request: #1977.
2021-03-16 09:45:06 +01:00
dengliming
a31c739ab6 Add support to Redis Streams using Jedis.
Closes #1711
Original pull request: #1977.
2021-03-16 09:44:53 +01:00
Mark Paluch
4dd5a7a4fa Fix JedisClusterZSetCommands.reverseRangeByLex(…) parameter order.
max/min parameter are now used in the correct order.

Closes #1998
2021-03-15 17:30:59 +01:00
Christoph Strobl
04dae74c8b Update JavaDoc.
Original Pull Request: #1996
2021-03-15 08:31:09 +01:00
Mark Paluch
e496c19021 Consider target type when calling getAllOf(…).
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
2021-03-15 08:30:55 +01:00
Mark Paluch
535ee68d95 Move off deprecated API.
Original Pull Request: #1991
2021-03-08 10:11:17 +01:00
Mark Paluch
b5ea3f6826 Accept cluster nodes without hostname.
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
2021-03-08 10:09:56 +01:00
Mark Paluch
b8eabee2b0 Polishing.
Tweak Javadoc. Extract comparator as constant. Remove Map copying for toString usage.

Closes #1982
2021-03-03 11:15:03 +01:00
Stefan Berger
bfc720f30d Improved performance of Bucket.extract().
By using a TreeMap, entries starting with a certain prefix can be found
much faster than before.

Closes #1982
2021-03-03 11:14:52 +01:00
dengliming
cf2cce8fbf Use Jedis SetParams.KEEPTTL instead of injecting byte[] args.
Closes #1986.
2021-03-03 10:19:07 +01:00
Mark Paluch
7cbeca1f48 Polishing.
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.
2021-03-03 10:11:13 +01:00
Christoph Strobl
4d77392c9d Support ZADD params for Reactive-/RedisConnection and add addIfAbsent methods.
Closes: #1794
Original pull request: #1988.
2021-03-03 10:10:39 +01:00
Mark Paluch
102ee017aa Add support for microseconds using TIME.
Closes #526.
Original pull request: #526.
2021-03-03 09:34:27 +01:00
Mark Paluch
773acd09b2 Pass-thru custom Redis commands using Lettuce.
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
2021-02-23 09:38:10 +01:00
Christoph Strobl
4df8e44818 Move expires check to dedicated method.
Introduce helper method to unify expiry check and simplify control flow.

Original Pull Request: #1961
2021-02-16 11:52:40 +01:00
Muchnik Andrey
e46246721f Remove phantom copy of expiring data when source gets persisted.
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
2021-02-16 11:51:41 +01:00
Mark Paluch
febdb82e58 Polishing.
Reformat code. Tweak Javadoc

See #1816.
Original pull request: #1968.
2021-02-15 14:56:49 +01:00