Latest in branch 3.6
3.6.3
Released 20 Jul 2021
(4 years ago)
SoftwareJedis
Version3.6
Initial release3.6.0
20 Apr 2021
(5 years ago)
Latest release3.6.3
20 Jul 2021
(4 years ago)
Release noteshttps://github.com/redis/jedis/releases/tag/v3.6.3
Source codehttps://github.com/redis/jedis/tree/v3.6.3
Documentationhttps://github.com/redis/jedis/wiki
Downloadhttps://mvnrepository.com/artifact/redis.clients/jedis/3.6.3
Jedis 3.6 ReleasesView full list

What Is New in Jedis 3.6

Jedis 3.6.0 delivers a significant update focused on expanding Redis command support and refining the API for better developer experience. This release introduces new features, crucial improvements, and essential bug fixes that enhance the stability and capabilities of the Java client.

Category Key Highlights
New Features Support for ACL, CLIENT, and LOLWUT commands; Connection URL parsing for Sentinel.
Improvements Refactored internal handling of JedisSharding; Better exception messages; Enhanced pipeline reliability.
Bug Fixes Fixed issues with ZPOPMIN/ZPOPMAX, blocking commands in pipelines, and connection leaks.
Deprecated The old `sharded` package is now deprecated in favor of the newer sharding implementation.

What new Redis commands are supported?

Jedis 3.6 adds support for several important Redis commands, giving you more direct control over your instances. The ACL SETUSER, GETUSER, LIST, and other ACL-related commands are now fully implemented for managing user access control.

Client management is also improved with the addition of CLIENT TRACKING, CLIENT CACHING, CLIENT GETREDIR, and CLIENT ID. For a bit of fun and diagnostics, the LOLWUT command is now available to display Redis version-specific art and information.

How is connection management improved?

This release makes connecting to a Sentinel setup more intuitive by adding the ability to parse a connection URL directly. You can now use a URL format like redis-sentinel:/// to configure your Sentinel connections, streamlining the setup process.

Under the hood, the internal architecture for JedisSharding has been completely refactored. This change paves the way for a more stable and maintainable sharding implementation, which is crucial for scaling applications.

What pipeline and transaction bugs were fixed?

A critical bug where blocking commands like BLPOP executed within a pipeline could corrupt the connection has been resolved. This fix ensures that pipelines remain a reliable method for executing batches of commands without causing unexpected connection errors.

Another issue prevented the WATCH command from working correctly with the exec() method in transactions. This has been fixed, restoring the proper behavior for optimistic locking in transactional blocks.

Were there any issues with specific data types?

Yes, a notable bug affected the sorted set commands ZPOPMIN and ZPOPMAX. The methods were incorrectly returning a Set<Tuple> instead of a single Tuple, which broke the expected API contract. This has been corrected to return the proper single element.

This matters because it ensures consistency with the Redis command semantics and prevents runtime exceptions or casting errors in your application code when popping elements from sorted sets.

FAQ

Is the old sharded package still safe to use?
While it still works, the entire redis.clients.jedis sharded package is now officially deprecated. You should start migrating to the newer sharding implementation found in redis.clients.jedis.util to ensure future compatibility.

How do I connect to Sentinel with a URL now?
You can use the format redis-sentinel:/// in your connection string. This allows for a more standardized and easier way to configure Sentinel-based connections compared to manually setting up individual parameters.

What was the connection leak issue?
A bug in the close() method of the Jedis class could, in some cases, fail to properly return a connection to the pool. This has been fixed to prevent potential resource exhaustion in high-throughput applications.

Why are my ZPOPMIN calls working differently?
In previous versions, they incorrectly returned a Set. They now correctly return a single Tuple object, aligning with the fact that these commands pop only one element by default. You may need to update your code if you were working around the old behavior.

Should I be concerned about any exception message changes?
No, the changes improve clarity. For example, the error for invalid URLs now specifically states "Invalid URL" instead of a more generic message. This makes debugging connection problems faster and more straightforward.

Releases In Branch 3.6

VersionRelease date
3.6.320 Jul 2021
(4 years ago)
3.6.215 Jul 2021
(4 years ago)
3.6.113 Jun 2021
(4 years ago)
3.6.020 Apr 2021
(5 years ago)
3.6.0-rc131 Mar 2021
(5 years ago)