Releases: redis/jedis
4.4.5
5.0.0
What's New?
Automatic Cross-Cluster Failover
We're happy to introduce the Cross-Cluster Failover feature in Jedis. This feature provides high availability and resilience by allowing seamless transitions between Redis clusters during unforeseen failures or downtimes. It's a built-in tool to minimize manual intervention and downtime and ensure a more resilient application infrastructure.
Learn more about how you can automate the failover process in our documentation.
Full Redis 7.2 and RESP3 Support
Examples to enable RESP3 are included later in this release note.
Changes
🔥 Breaking Changes (Listed here)
🚀 New Features
- Support RESP3 (#3293, #3387, #3388, #3389, #3403, #3507)
- Support Sharded PubSub (#3396)
- Introduce PipelineBase for Pipeline and multi node pipeline classes (#3437, #3442)
- 'double' timeout parameter for BLMPOP and BZMPOP commands (#3444)
🧪 Experimental Features
- Cross cluster failover (#3310)
- Allow setting default dialect for RediSearch module (#3452)
- Support JSON.MERGE command (#3429)
- Support TOPK.LIST with WITHCOUNT option (#3495)
🐛 Bug Fixes
- Fix return value of HRANDFIELD with values when count is negative (#3425, #3430)
- Return List instead of Set in ZDIFF, ZINTER, ZUNION commands (#3431)
🧰 Maintenance
- Deprecate RedisJSON v1 support (#3503)
- Deprecate RedisGraph support (#3504)
- Deprecate Sharding/Sharded feature (#3386)
- Bump org-json:json from 20230227 to 20230618 (#3472)
RESP3 Examples
This release introduces enabling RESP3 Redis connection, when the Redis server supports it.
- Enable RESP3 to a UnifiedJedis object:
import redis.clients.jedis.DefaultJedisClientConfig;
import redis.clients.jedis.HostAndPort;
import redis.clients.jedis.UnifiedJedis;
class DoResp3 {
public static void main() {
HostAndPort hnp = HostAndPort.from("localhost:6379");
UnifiedJedis c = UnifiedJedis(hnp, DefaultJedisClientConfig.builder().resp3().build());
c.set("foo", "value!");
c.get("foo");
}
}
- Enable RESP3 to a Jedis object:
import redis.clients.jedis.DefaultJedisClientConfig;
import redis.clients.jedis.HostAndPort;
import redis.clients.jedis.Jedis;
class DoResp3 {
public static void main() {
HostAndPort hnp = HostAndPort.from("localhost:6379");
Jedis c = Jedis(hnp, DefaultJedisClientConfig.builder().resp3().build());
c.set("foo", "value!");
c.get("foo");
}
}
4.4.4
5.0.0-beta2
Changes
🔥 Breaking Changes
- Use
List<KeyValue>
to read RESP3 Map reply (#3456) - Allow setting default dialect for search module (#3452)
- Separate interfaces for RedisJSON v1 and v2 commands (#3459)
- Refactor Search Aggregation codes (#3451)
- Modify TimeSeries commands after RESP3 update (#3417, #3461)
- 'double' timeout parameter for BLMPOP and BZMPOP (#3444)
- Return List instead of Set in ZDIFF, ZINTER, ZUNION (#3431)
- Modify BLPOP and BRPOP return types (#3440)
- Modify BZPOPMAX and BRPOPMIN return types (#3439)
- Use Keyword(s) in params classes (#3434)
- Introduce PipelineBase for Pipeline and multi node pipeline classes (#3437)
- Fix return value of HRANDFIELD With Values when count is negative (#3425, #3430)
🧪 Experimental Features
🚀 New Features
🐛 Bug Fixes
🧰 Maintenance
- Bump maven-release-plugin from 3.0.0 to 3.0.1 (#3457)
- Bump maven-source-plugin from 3.2.1 to 3.3.0 (#3445)
- Bump maven-bundle-plugin from 5.1.8 to 5.1.9 (#3424)
- Bump maven-gpg-plugin from 3.0.1 to 3.1.0 (#3398)
- Bump maven-surefire-plugin from 3.0.0 to 3.1.2 (#3397, #3463)
- Make ClusterPipeliningTest faster (#3465)
- Updated Sentinel Tests (#3443)
Contributors
We'd like to thank all the contributors who worked on this release!
@s-sathish, @sazzad16, @shacharPash, @uglide and @yangbodong22011
4.4.3
Changes
🐛 Bug Fixes
- Shutdown ExecutorServices in multi node pipelines (#3467)
Contributors
We'd like to thank all the contributors who worked on this release!
Full Changelog: v4.4.2...v4.4.3
4.4.2
Changes
🚀 New Features
New in Redis 7.2:
- Add support for the new CLUSTER MYSHARDID command (#3423)
- Add support for
inactive
field in XINFO CONSUMERS reply (#3422) - Add support for
active-time
field in XINFO STREAM reply (#3421)
🐛 Bug Fixes
- Do not propagate exceptions to the application code if CLIENT SET-INFO commands is not supported or blocked by ACL rules (#3449) (#3458)
🧰 Maintenance
- Add an option to ignore cluster init error (#3455)
- Bump maven-release-plugin from 3.0.0 to 3.0.1 (#3457)
- Bump maven-bundle-plugin from 5.1.8 to 5.1.9 (#3424)
Contributors
We'd like to thank all the contributors who worked on this release!
@sazzad16, @dependabot, @dependabot[bot] and @yangbodong22011
Full Changelog: v4.4.1...v4.4.2
5.0.0-beta1
Changes
🚀 New Features
- Support RESP3 protocol through URI/URL (#3403)
This release includes support enabling RESP3 connection on supported Redis servers.
- One can pass enable RESP3 with a UnifiedJedis connection via:
import redis.clients.jedis.HostAndPort;
import redis.clients.jedis.UnifiedJedis;
class DoResp {
public static void main() {
HostAndPort hnp = HostAndPort.from("localhost:6379");
UnifiedJedis c = UnifiedJedis(hnp, DefaultJedisClientConfig.builder().protocol(RedisProtocol.RESP3).build());
c.set("foo", "value!");
c.get("foo");
}
}
- One can pass enable RESP3 with a Jedis connection via:
import redis.clients.jedis.HostAndPort;
import redis.clients.jedis.Jedis;
class DoResp {
public static void main() {
HostAndPort hnp = HostAndPort.from("localhost:6379");
Jedis c = Jedis(hnp, DefaultJedisClientConfig.builder().protocol(RedisProtocol.RESP3).build());
c.set("foo", "value!");
c.get("foo");
}
}
Full Changelog: v5.0.0-alpha2...v5.0.0-beta1
4.4.1
5.0.0-alpha2
This release includes support for RESP3, it should be treated as an alpha. Please note response types change for those using RESP3 - meaning there breaking changes. Today this includes support for the following:
- UnifiedJedis connections
- Jedis connections
- JedisPool
- JedisPooled
- JedisCluster
- JedisSharding
- Pub/Sub on RESP3 (#3388)
- Sharded Pub/Sub (#3396)
- RedisStack support
- ClusterPipeline
- ShardedPipeline (not fully supported)
This release introduces two different ways to enable a RESP3 redis connection, when your redis server supports RESP1.
- One can pass enable RESP3 with a UnifiedJedis connection via:
import redis.clients.jedis.HostAndPort;
import redis.clients.jedis.UnifiedJedis;
class DoResp {
public static void main() {
HostAndPort hnp = HostAndPort.from("localhost:6379");
UnifiedJedis c = UnifiedJedis(hnp, DefaultJedisClientConfig.builder().protocol(RedisProtocol.RESP3).build());
c.set("foo", "value!");
c.get("foo");
}
}
- One can pass enable RESP3 with a Jedis connection via:
import redis.clients.jedis.HostAndPort;
import redis.clients.jedis.Jedis;
class DoResp {
public static void main() {
HostAndPort hnp = HostAndPort.from("localhost:6379");
Jedis c = Jedis(hnp, DefaultJedisClientConfig.builder().protocol(RedisProtocol.RESP3).build());
c.set("foo", "value!");
c.get("foo");
}
}
Changes
🔥 Breaking Changes
- Remove deprecated interfaces (#3391)
🧰 Maintenance
- Deprecated Sharding/Sharded feature (#3386)
Full Changelog: v5.0.0-alpha1...v5.0.0-alpha2