diff --git a/.github/release-drafter-config.yml b/.github/release-drafter-config.yml
index edc2911f43..4607da071c 100644
--- a/.github/release-drafter-config.yml
+++ b/.github/release-drafter-config.yml
@@ -1,5 +1,7 @@
name-template: '$NEXT_MINOR_VERSION'
tag-template: 'v$NEXT_MINOR_VERSION'
+filter-by-commitish: true
+commitish: master
autolabeler:
- label: 'maintenance'
files:
@@ -35,6 +37,8 @@ categories:
labels:
- 'maintenance'
- 'dependencies'
+ - 'documentation'
+ - 'docs'
- 'testing'
change-template: '- $TITLE (#$NUMBER)'
exclude-labels:
diff --git a/.github/workflows/doctests.yml b/.github/workflows/doctests.yml
index 8122b40b20..daa8858b89 100644
--- a/.github/workflows/doctests.yml
+++ b/.github/workflows/doctests.yml
@@ -2,6 +2,8 @@ name: Documentation Tests
on:
push:
+ tags-ignore:
+ - '*'
pull_request:
workflow_dispatch:
@@ -32,4 +34,4 @@ jobs:
distribution: 'temurin'
- name: Run doctests
run: |
- mvn -Pdoctests test
\ No newline at end of file
+ mvn -Pdoctests test
diff --git a/.github/workflows/integration.yml b/.github/workflows/integration.yml
index e6907dcaef..84da5938f6 100644
--- a/.github/workflows/integration.yml
+++ b/.github/workflows/integration.yml
@@ -10,15 +10,16 @@ on:
- '**/*.rst'
branches:
- master
- - '[0-9].[0-9]'
- '[0-9].x'
+ - '[0-9].[0-9].x'
pull_request:
branches:
- master
- - '[0-9].[0-9]'
- '[0-9].x'
+ - '[0-9].[0-9].x'
schedule:
- cron: '0 1 * * *' # nightly build
+ workflow_dispatch:
jobs:
diff --git a/.github/workflows/snapshot.yml b/.github/workflows/snapshot.yml
index 6c8ad1a962..8a409b8331 100644
--- a/.github/workflows/snapshot.yml
+++ b/.github/workflows/snapshot.yml
@@ -6,7 +6,8 @@ on:
push:
branches:
- master
- - '[0-9].[0-9]'
+ - '[0-9].x'
+ workflow_dispatch:
jobs:
diff --git a/.github/workflows/version-and-release.yml b/.github/workflows/version-and-release.yml
index 007d8875e8..7c996e5bd5 100644
--- a/.github/workflows/version-and-release.yml
+++ b/.github/workflows/version-and-release.yml
@@ -16,7 +16,7 @@ jobs:
run: |
realversion="${GITHUB_REF/refs\/tags\//}"
realversion="${realversion//v/}"
- echo "::set-output name=VERSION::$realversion"
+ echo "VERSION=$realversion" >> $GITHUB_OUTPUT
- name: Set up publishing to maven central
uses: actions/setup-java@v2
@@ -32,14 +32,14 @@ jobs:
- name: Install gpg key
run: |
- cat <(echo -e "${{ secrets.OSSRH_GPG_SECRET_KEY }}") | gpg --batch --import
+ cat <(echo -e "${{ secrets.OSSH_GPG_SECRET_KEY }}") | gpg --batch --import
gpg --list-secret-keys --keyid-format LONG
- name: Publish
run: |
mvn --no-transfer-progress \
--batch-mode \
- -Dgpg.passphrase='${{ secrets.OSSRH_GPG_SECRET_KEY_PASSWORD }}' \
+ -Dgpg.passphrase='${{ secrets.OSSH_GPG_SECRET_KEY_PASSWORD }}' \
-DskipTests deploy -P release
env:
MAVEN_USERNAME: ${{secrets.OSSH_USERNAME}}
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000000..15c4dd523a
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2021-2023, Redis, inc.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/LICENSE.txt b/LICENSE.txt
deleted file mode 100644
index 7b8b1cee63..0000000000
--- a/LICENSE.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-Copyright (c) 2010 Jonathan Leibiusky
-
-Permission is hereby granted, free of charge, to any person
-obtaining a copy of this software and associated documentation
-files (the "Software"), to deal in the Software without
-restriction, including without limitation the rights to use,
-copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the
-Software is furnished to do so, subject to the following
-conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
\ No newline at end of file
diff --git a/Makefile b/Makefile
index 2987ad80dd..6e63f1b6ce 100644
--- a/Makefile
+++ b/Makefile
@@ -209,7 +209,7 @@ daemonize yes
protected-mode no
requirepass cluster
port 7379
-cluster-node-timeout 50
+cluster-node-timeout 15000
pidfile /tmp/redis_cluster_node1.pid
logfile /tmp/redis_cluster_node1.log
save ""
@@ -223,7 +223,7 @@ daemonize yes
protected-mode no
requirepass cluster
port 7380
-cluster-node-timeout 50
+cluster-node-timeout 15000
pidfile /tmp/redis_cluster_node2.pid
logfile /tmp/redis_cluster_node2.log
save ""
@@ -237,7 +237,7 @@ daemonize yes
protected-mode no
requirepass cluster
port 7381
-cluster-node-timeout 50
+cluster-node-timeout 15000
pidfile /tmp/redis_cluster_node3.pid
logfile /tmp/redis_cluster_node3.log
save ""
@@ -251,7 +251,7 @@ daemonize yes
protected-mode no
requirepass cluster
port 7382
-cluster-node-timeout 50
+cluster-node-timeout 15000
pidfile /tmp/redis_cluster_node4.pid
logfile /tmp/redis_cluster_node4.log
save ""
@@ -265,7 +265,7 @@ daemonize yes
protected-mode no
requirepass cluster
port 7383
-cluster-node-timeout 5000
+cluster-node-timeout 15000
pidfile /tmp/redis_cluster_node5.pid
logfile /tmp/redis_cluster_node5.log
save ""
diff --git a/README.md b/README.md
index b853aadd96..4c7c507d21 100644
--- a/README.md
+++ b/README.md
@@ -6,7 +6,7 @@
[![MIT licensed](https://img.shields.io/badge/license-MIT-blue.svg)](./LICENSE.txt)
[![Integration](https://github.com/redis/jedis/actions/workflows/integration.yml/badge.svg?branch=master)](https://github.com/redis/jedis/actions/workflows/integration.yml)
[![codecov](https://codecov.io/gh/redis/jedis/branch/master/graph/badge.svg?token=pAstxAAjYo)](https://codecov.io/gh/redis/jedis)
-[![Discord](https://img.shields.io/discord/697882427875393627?style=flat-square)](https://discord.gg/qRhBuY8Z)
+[![Discord](https://img.shields.io/discord/697882427875393627?style=flat-square)](https://discord.gg/redis)
## What is Jedis?
@@ -14,25 +14,37 @@ Jedis is a Java client for [Redis](https://github.com/redis/redis "Redis") desig
Are you looking for a high-level library to handle object mapping? See [redis-om-spring](https://github.com/redis/redis-om-spring)!
-## Contributing
+## How do I Redis?
-We'd love your contributions!
+[Learn for free at Redis University](https://university.redis.com/)
-**Bug reports** are always welcome! [You can open a bug report on GitHub](https://github.com/redis/jedis/issues/new).
+[Build faster with the Redis Launchpad](https://launchpad.redis.com/)
-You can also **contribute documentation** -- or anything to improve Jedis. Please see
-[contribution guideline](https://github.com/redis/jedis/blob/master/.github/CONTRIBUTING.md) for more details.
+[Try the Redis Cloud](https://redis.com/try-free/)
+
+[Dive in developer tutorials](https://developer.redis.com/)
+
+[Join the Redis community](https://redis.com/community/)
+
+[Work at Redis](https://redis.com/company/careers/jobs/)
## Supported Redis versions
-The most recent version of this library supports redis version [5.0](https://github.com/redis/redis/blob/5.0/00-RELEASENOTES), [6.0](https://github.com/redis/redis/blob/6.0/00-RELEASENOTES), [6.2](https://github.com/redis/redis/blob/6.2/00-RELEASENOTES), and [7.0](https://github.com/redis/redis/blob/7.0/00-RELEASENOTES).
+The most recent version of this library supports redis version
+[5.0](https://github.com/redis/redis/blob/5.0/00-RELEASENOTES),
+[6.0](https://github.com/redis/redis/blob/6.0/00-RELEASENOTES),
+[6.2](https://github.com/redis/redis/blob/6.2/00-RELEASENOTES),
+[7.0](https://github.com/redis/redis/blob/7.0/00-RELEASENOTES) and
+[7.2](https://github.com/redis/redis/blob/7.2/00-RELEASENOTES).
The table below highlights version compatibility of the most-recent library versions and Redis versions. Compatibility means communication features, and Redis command capabilities.
-| Library version | Supported redis versions |
-|-----------------|-------------------|
-| 3.9+ | 5.0 and 6.2 Family of releases |
-| >= 4.0 | Version 5.0 to current |
+
+| Jedis version | Supported Redis versions | JDK Compatibility |
+|---------------|--------------------------------|-------------------|
+| 3.9+ | 5.0 and 6.2 Family of releases | 8, 11 |
+| >= 4.0 | Version 5.0 to current | 8, 11, 17 |
+| >= 5.0 | Version 6.0 to current | 8, 11, 17 |
## Getting started
@@ -42,7 +54,7 @@ To get started with Jedis, first add it as a dependency in your Java project. If
redis.clientsjedis
- 4.4.3
+ 5.0.0
```
@@ -108,6 +120,13 @@ Now you can use the `JedisCluster` instance and send commands like you would wit
jedis.sadd("planets", "Mars");
```
+## Using Redis modules
+
+Jedis includes support for [Redis modules](https://redis.io/docs/modules/) such as
+[RedisJSON](https://oss.redis.com/redisjson/) and [RediSearch](https://oss.redis.com/redisearch/).
+
+See the [RedisJSON Jedis](docs/redisjson.md) or [RediSearch Jedis](docs/redisearch.md) for details.
+
## Failover
Jedis supports retry and failover for your Redis deployments. This is useful when:
@@ -126,25 +145,26 @@ You can also check the [latest Jedis Javadocs](https://www.javadoc.io/doc/redis.
Some specific use-case examples can be found in [`redis.clients.jedis.examples`
package](src/test/java/redis/clients/jedis/examples/) of the test source codes.
-## Using Redis modules
+## Troubleshooting
-Jedis includes support for [Redis modules](https://redis.io/docs/modules/) such as
-[RedisJSON](https://oss.redis.com/redisjson/) and [RediSearch](https://oss.redis.com/redisearch/).
+If you run into trouble or have any questions, we're here to help!
-See the [RedisJSON Jedis](docs/redisjson.md) or [RediSearch Jedis](docs/redisearch.md) for details.
+Hit us up on the [Redis Discord Server](http://discord.gg/redis) or
+[Jedis GitHub Discussions](https://github.com/redis/jedis/discussions) or
+[Jedis mailing list](http://groups.google.com/group/jedis_redis).
-## Troubleshooting
+## Contributing
-If you run into trouble or have any questions, we're here to help!
+We'd love your contributions!
-Hit us up on the [Redis Discord Server](http://discord.gg/redis) or [open an issue on GitHub](https://github.com/redis/jedis).
+Bug reports are always welcome! [You can open a bug report on GitHub](https://github.com/redis/jedis/issues/new).
-You can also find help on the [Jedis mailing list](http://groups.google.com/group/jedis_redis) or the
-[GitHub Discussions](https://github.com/redis/jedis/discussions).
+You can also contribute documentation -- or anything to improve Jedis. Please see
+[contribution guideline](https://github.com/redis/jedis/blob/master/.github/CONTRIBUTING.md) for more details.
## License
-Jedis is licensed under the [MIT license](https://github.com/redis/jedis/blob/master/LICENSE.txt).
+Jedis is licensed under the [MIT license](https://github.com/redis/jedis/blob/master/LICENSE).
## Sponsorship
diff --git a/docs/jedis5-breaking.md b/docs/breaking-5.md
similarity index 83%
rename from docs/jedis5-breaking.md
rename to docs/breaking-5.md
index f9d5df7ad4..4a013c3800 100644
--- a/docs/jedis5-breaking.md
+++ b/docs/breaking-5.md
@@ -1,5 +1,24 @@
# Jedis 5 Breaking Changes
+- All variants of `blmpop` and `bzmpop` methods now take `double timeout` parameter instead of `long timeout` parameter.
+ This is breaking ONLY IF you are using `Long` for timeout.
+
+- `Reducer` abstract class is refactored:
+ - **`Reducer(String field)` constructor is removed; `Reducer(String name, String field)` constructor is added.**
+ - **`Reducer(String name)` constructor is added; it will cause runtime error with older `Reducer(String field)` constructor.**
+ - `getName` method is removed.
+ - `getAlias` method is removed.
+ - `setAlias` method is removed; use `as` method.
+ - `setAliasAsField` method is removed.
+ - `getOwnArgs` method is now abstract.
+ - `getArgs` method is removed.
+
+- `quit()` method has been removed from `Connection` and `ServerCommands` interface and implementations.
+
+- `updatePassword(String password)` method has been removed from `JedisClientConfig` and implementations.
+
+- `setPassword(String password)` method has been removed from both `JedisFactory` and `ConnectionFactory` classes.
+
- Both `bzpopmax(double timeout, String... keys)` and `bzpopmin(double timeout, String... keys)` now return `KeyValue` (instead of `KeyedZSetElement`).
- Both `bzpopmax(double timeout, byte[]... keys)` and `bzpopmin(double timeout, byte[]... keys)` now return `KeyValue` (instead of `List`).
@@ -40,11 +59,35 @@
- `tsMRevRange(long fromTimestamp, long toTimestamp, String... filters)`
- `tsMRevRange(TSMRangeParams multiRangeParams)`
+- `jsonNumIncrBy(String key, Path2 path, double value)` method now returns `Object` instead of `JSONArray`.
+ - The returning object would still be JSONArray for all previous cases. So simple type casting is enough to handle this change.
+ - The returning object will be `List` when running under RESP3 protocol.
+
- `getAgeSeconds()` in `AccessControlLogEntry` now returns `Double` instead of `String`.
+- Both `ftConfigGet(String option)` and `ftConfigGet(String indexName, String option)` methods now return `Map` instead of `Map`.
+
+- `ftList()` method now returns `Set` instead of `List`.
+
- `graphSlowlog(String graphName)` now returns `List>` (instead of `List>`).
-- All _payload_ related parameters are removed from _search_ related classes; namely `Document`, `IndexDefinition`, `Query`.
+- `CommandListFilterByParams` now throws `IllegalArgumentException` (instead of `JedisDataException`) in case of unfulfilling filter.
+
+- `FailoverParams` now throws `IllegalArgumentException` (instead of `IllegalStateException`) in case of unfulfilling optional arguments.
+
+- `XPendingParams` now throws `IllegalArgumentException` (instead of `IllegalStateException`) in case of unfulfilling optional arguments.
+
+- `get()` option has been removed from `SetParams`. Following methods have been added in Jedis/UnifiedJedis for convenience:
+ - `setGet(String key, String value)` method has been added in `StringCommands` interface.
+ - `setGet(byte[] key, byte[] value)` method has been added in `StringBinaryCommands` interface.
+
+- `xpending(String key, String groupName, StreamEntryID start, StreamEntryID end, int count, String consumerName)` method has been removed from everywhere.
+ - Use `xpending(java.lang.String, java.lang.String, redis.clients.jedis.params.XPendingParams)` instead.
+
+- `xpending(byte[] key, byte[] groupName, byte[] start, byte[] end, int count, byte[] consumerName)` method has been removed from everywhere.
+ - Use `xpending(byte[], byte[], redis.clients.jedis.params.XPendingParams)` instead.
+
+- `retentionTime(long retentionTime)` method in `TSAlterParams` has been removed. Use `retention(long)` method instead.
- Following classes have been removed:
- `KeyedZSetElement`
@@ -59,59 +102,39 @@
- `BINARY_MAP_FROM_PAIRS`
- `STRING_ORDERED_SET`
+- All _payload_ related parameters are removed from _search_ related classes; namely `Document`, `IndexDefinition`, `Query`.
+
+- `topkCount(String key, String... items)` method has been removed from everywhere.
+
+- Following methods supporting JSON.RESP command have been removed:
+ - `jsonResp(String key)`
+ - `jsonResp(String key, Path path)`
+ - `jsonResp(String key, Path2 path)`
+
- `RedisJsonCommands` and `RedisJsonPipelineCommands` interfaces have been moved into `redis.clients.jedis.json.commands` package.
+- `AbortedTransactionException` is removed.
+
- `Queable` class is removed.
- `Params` abstract class is removed.
- `toString()` support used by its sub-classes is now unavailable.
-- `CommandListFilterByParams` now throws `IllegalArgumentException` (instead of `JedisDataException`) in case of unfulfilling filter.
-
-- `FailoverParams` now throws `IllegalArgumentException` (instead of `IllegalStateException`) in case of unfulfilling optional arguments.
-
-- `XPendingParams` now throws `IllegalArgumentException` (instead of `IllegalStateException`) in case of unfulfilling optional arguments.
-
- `getParams()` method is removed from `SortingParams` class.
-- `addCommandEncodedArguments` and `addCommandBinaryArguments` methods have been removed from `FieldName` class.
-
-- `getArgs` method is removed from `AggregationBuilder` class.
-
-- `limit` and `getArgs` methods have been removed from `Group` class.
-
-- `Reducer` abstract class is refactored:
- - `Reducer(String field)` constructor is removed; `Reducer(String name, String field)` constructor is added.
- - `Reducer(String name)` constructor is added; it will cause runtime error with older `Reducer(String field)` constructor.
- - `getName` method is removed.
- - `getAlias` method is removed.
- - `setAlias` method is removed; use `as` method.
- - `setAliasAsField` method is removed.
- - `getOwnArgs` method is now abstract.
- - `getArgs` method is removed.
-
-- All variants of `blmpop` and `bzmpop` methods now take `double timeout` parameter instead of `long timeout` parameter.
- This is breaking ONLY IF you are using `Long` for timeout.
+- Both `SEARCH_AGGREGATION_RESULT` and `SEARCH_AGGREGATION_RESULT_WITH_CURSOR` implementations from `SearchBuilderFactory` class have been moved to `AggregationResult` class.
-
+- All `AggregationResult` constructors have been made `private`.
-- `quit()` method has been removed from `Connection` and `ServerCommands` interface and implementations.
+- `getArgs()`, `getArgsString()` and `serializeRedisArgs(List redisArgs)` methods have been removed from `AggregationBuilder`.
-- `updatePassword(String password)` method has been removed from `JedisClientConfig` and implementations.
-
-- `setPassword(String password)` method has been removed from both `JedisFactory` and `ConnectionFactory` classes.
-
-- `get()` option has been removed from `SetParams`. Following methods have been added in Jedis/UnifiedJedis for convenience:
- - `setGet(String key, String value)` method has been added in `StringCommands` interface.
- - `setGet(byte[] key, byte[] value)` method has been added in `StringBinaryCommands` interface.
+- `totalResults` variable in `AggregationResult` has been made private. Use `getTotalResults()` method instead.
-- `xpending(String key, String groupName, StreamEntryID start, StreamEntryID end, int count, String consumerName)` method has been removed from everywhere.
- - Use `xpending(java.lang.String, java.lang.String, redis.clients.jedis.params.XPendingParams)` instead.
+- `getArgs()` and `limit(Limit limit)` methods have been removed from `Group` class.
-- `xpending(byte[] key, byte[] groupName, byte[] start, byte[] end, int count, byte[] consumerName)` method has been removed from everywhere.
- - Use `xpending(byte[], byte[], redis.clients.jedis.params.XPendingParams)` instead.
+- `addCommandEncodedArguments` and `addCommandBinaryArguments` methods have been removed from `FieldName` class.
-- `topkCount(String key, String... items)` method has been removed from everywhere.
+- `addObjects(int[] ints)` method has been removed from `CommandArguments`.
- Following methods have been removed:
- `strAlgoLCSStrings(String strA, String strB, StrAlgoLCSParams params)`
@@ -119,7 +142,7 @@
- `strAlgoLCSKeys(String keyA, String keyB, StrAlgoLCSParams params)`
- `strAlgoLCSKeys(byte[] keyA, byte[] keyB, StrAlgoLCSParams params)`
-- `StrAlgoLCSParams` has been removed.
+- `StrAlgoLCSParams` class has been removed.
- Following methods have been removed from all Pipeline classes:
- `ftCursorRead(String indexName, long cursorId, int count)`
@@ -130,14 +153,6 @@
- `ftAliasUpdate(String aliasName, String indexName)`
- `ftAliasDel(String aliasName)`
-- `addObjects(int[] ints)` method has been removed from `CommandArguments`.
-
-- `getArgsString()` and `serializeRedisArgs(List redisArgs)` methods have been removed from `AggregationBuilder`.
-
-- `totalResults` variable in `AggregationResult` has been made private. Use `getTotalResults()` method instead.
-
-- `retentionTime(long retentionTime)` method in `TSAlterParams` has been removed. Use `retention(long)` method instead.
-
- `JedisSentineled(String masterName, Set sentinels, JedisClientConfig masterClientConfig, JedisClientConfig sentinelClientConfig)` and
`JedisSentineled(String masterName, Set sentinels, GenericObjectPoolConfig poolConfig, JedisClientConfig masterClientConfig, JedisClientConfig sentinelClientConfig)`
constructors have been removed.
diff --git a/docs/failover.md b/docs/failover.md
index c2759b8f47..8414e41376 100644
--- a/docs/failover.md
+++ b/docs/failover.md
@@ -152,7 +152,7 @@ FailoverReporter reporter = new FailoverReporter();
provider.setClusterFailoverPostProcessor(reporter);
```
-The provider will call your `accept` whenver a faoliver occurs.
+The provider will call your `accept` whenever a faoliver occurs.
## Failing back
diff --git a/docs/jedis-maven.md b/docs/jedis-maven.md
index 1c5b0f2598..6466b1ef3a 100644
--- a/docs/jedis-maven.md
+++ b/docs/jedis-maven.md
@@ -6,7 +6,7 @@
redis.clientsjedis
- 4.3.0
+ 5.0.0
```
@@ -28,7 +28,7 @@ and
redis.clientsjedis
- 4.4.0-SNAPSHOT
+ 5.1.0-SNAPSHOT
```
diff --git a/pom.xml b/pom.xml
index f2995791da..e2d0183a05 100644
--- a/pom.xml
+++ b/pom.xml
@@ -9,7 +9,7 @@
jarredis.clientsjedis
- 5.0.0-SNAPSHOT
+ 5.2.0-SNAPSHOTJedisJedis is a blazingly small and sane Redis java client.https://github.com/redis/jedis
@@ -19,7 +19,7 @@
Jedis Mailing Listjedis_redis@googlegroups.com
- http://groups.google.com/group/jedis_redis
+ https://groups.google.com/group/jedis_redis
@@ -27,14 +27,14 @@
MIT
- http://github.com/redis/jedis/raw/master/LICENSE.txt
+ https://github.com/redis/jedis/blob/master/LICENSErepogithub
- http://github.com/redis/jedis/issues
+ https://github.com/redis/jedis/issues
@@ -46,9 +46,11 @@
github
- 1.7.36redis.clients.jedis
+ 1.7.361.7.1
+ 2.16.0
+ 3.2.3
@@ -60,12 +62,12 @@
org.apache.commonscommons-pool2
- 2.11.1
+ 2.12.0org.jsonjson
- 20230227
+ 20231013com.google.code.gson
@@ -73,6 +75,22 @@
2.10.1
+
+
+ com.kohlschutter.junixsocket
+ junixsocket-core
+ 2.8.3
+ pom
+ test
+
+
+
+ org.locationtech.jts
+ jts-core
+ 1.19.0
+ test
+
+
junitjunit
@@ -91,31 +109,26 @@
${slf4j.version}test
-
- com.kohlschutter.junixsocket
- junixsocket-core
- 2.6.1
- pom
- test
- org.mockitomockito-inline
- 3.12.4
+ 4.11.0testcom.fasterxml.jackson.corejackson-databind
- 2.14.2
+ ${jackson.version}testcom.fasterxml.jackson.datatypejackson-datatype-jsr310
- 2.14.2
+ ${jackson.version}test
+
+
io.github.resilience4jresilience4j-all
@@ -158,7 +171,7 @@
org.jacocojacoco-maven-plugin
- 0.8.5
+ 0.8.11
@@ -184,7 +197,7 @@
maven-surefire-plugin
- 3.1.2
+ ${maven.surefire.version}${redis-hosts}
@@ -212,7 +225,7 @@
maven-javadoc-plugin
- 3.5.0
+ 3.6.3false
@@ -313,7 +326,7 @@
maven-surefire-plugin
- 3.1.2
+ ${maven.surefire.version}**/examples/*Example.java
diff --git a/src/main/java/redis/clients/jedis/AbstractPipeline.java b/src/main/java/redis/clients/jedis/AbstractPipeline.java
new file mode 100644
index 0000000000..f4eb0335dc
--- /dev/null
+++ b/src/main/java/redis/clients/jedis/AbstractPipeline.java
@@ -0,0 +1,26 @@
+package redis.clients.jedis;
+
+import java.io.Closeable;
+
+public abstract class AbstractPipeline extends PipeliningBase implements Closeable {
+
+ protected AbstractPipeline(CommandObjects commandObjects) {
+ super(commandObjects);
+ }
+
+ @Override
+ public abstract void close();
+
+ /**
+ * Synchronize pipeline by reading all responses.
+ */
+ public abstract void sync();
+
+ public Response publish(String channel, String message) {
+ return appendCommand(commandObjects.publish(channel, message));
+ }
+
+ public Response publish(byte[] channel, byte[] message) {
+ return appendCommand(commandObjects.publish(channel, message));
+ }
+}
diff --git a/src/main/java/redis/clients/jedis/AbstractTransaction.java b/src/main/java/redis/clients/jedis/AbstractTransaction.java
new file mode 100644
index 0000000000..ed6f397caa
--- /dev/null
+++ b/src/main/java/redis/clients/jedis/AbstractTransaction.java
@@ -0,0 +1,35 @@
+package redis.clients.jedis;
+
+import java.io.Closeable;
+import java.util.List;
+
+public abstract class AbstractTransaction extends PipeliningBase implements Closeable {
+
+ protected AbstractTransaction() {
+ super(new CommandObjects());
+ }
+
+ public abstract void multi();
+
+ /**
+ * Must be called before {@link AbstractTransaction#multi() MULTI}.
+ */
+ public abstract String watch(final String... keys);
+
+ /**
+ * Must be called before {@link AbstractTransaction#multi() MULTI}.
+ */
+ public abstract String watch(final byte[]... keys);
+
+ public abstract String unwatch();
+
+ @Override public abstract void close();
+
+ public abstract List