Releases: redis/jedis
4.0.0
🚀 New Features
- Introduced JedisPooled
An alternative to JedisPool which implements the same interfaces as JedisCluster, allowing easy switching between JedisCluster and JedisPooled. - Introduced JedisSharding
- Introduced ClusterPipeline and ShardedPipeline
- Introduced ReliableTransaction
- Introduced UnifiedJedis
UnifiedJedis can be anything depending on theConnectionProvider
orCommandExecutor
. Currently, this is the base for JedisCluster, JedisPooled and JedisSharding. - Introduced ConnectionProvider interface and few implementations
- Introduced CommandExecutor interface and few implementations
- Added RedisJSON and RedisJSON 2 commands
- Added RediSearch commands
- Support exclusive range in XRANGE command (#2719)
- Added ACL DELUSER and ACL GENPASS with bits option (#2697)
🔥 Breaking Changes (see all)
- JedisCluster constructors with
GenericObjectPoolConfig<Jedis>
now acceptGenericObjectPoolConfig<Connection>
. - Most SortedSet methods are changed to return Java
List
instead ofSet
(#2709) See Full List - Many methods now return primitive values (long/boolean/double instead of Long/Boolean/Double) See Full List
- ShardedJedisPool, Sharded, ShardedJedis, BinaryShardedJedis, ShardInfo, JedisShardInfo classes are removed.
- BinaryJedis and BinaryJedisCluster classes are removed.
Methods of these classes are available in Jedis and JedisCluster classes respectively. - Client and BinaryClient classes are removed.
redis.clients.jedis.commands
package is reimplemented, meaning Commands interfaces are restructured.- Removed Sentinel class (#2744) (since 4.0.0-rc2)
Sentinel methods are moved in Jedis class (just like Jedis 3.x)
🧰 Maintenance
- Upgraded dependency
org.slf4j:slf4j-api
to version1.7.32
- Added dependency
org.json:json
version20211205
- Added dependency
com.google.code.gson:gson
version2.8.9
🚃 Change List
- Throw IllegalStateException by replacing invalid JedisDataException (#2393)
- Support Sentinel with TLS (#2403)
- Remove usage of infinite timeout from EVAL and EVALSHA commands (#2408)
- Avoid NullPointException from SetFromList class (#2454)
- JedisNoReachableClusterNodeException should extend JedisClusterOperationException (#2409)
- Remove WATCH from Transaction (#2033)
- JedisDataException should not be wrapped within Pool operations (#2501)
- Remove SYNC command (#2499)
- Remove ShardedJedisPipeline class (#2500)
- Remove JedisPoolAbstract class and hide Pool.initPool() method (#1734)
- Limit the access of setDataSource in Jedis (#2516)
- Make
raw
variable private and should be accessed via getRaw() method (#2526) - Remove throwing IOException from JedisSocketFactory (#2528)
- Remove JedisClusterHostAndPortMap (#2518)
- Unify clustered and non-clustered interfaces (#2533)
- CONFIG SET returns OK status (#2520)
- Return type should be
long
(or any primitive) (#2547) - Pool extends GenericObjectPool (#2521)
- Use Charset instead of String for Protocol.CHARSET (#2658)
- Jedis 4 changes (#2693)
- Improving ACL Command Support (#2697) (#2693)
- Return List instead of Set where it makes sense (#2709) (#2693)
- Implemented JedisSharding and ShardedPipeline (#2707) (#2693)
- Upgrade test dependencies (#2720)
- Support exclusive range in XRANGE command (#2683) (#2719)
- Throw exception if JedisCluster cannot connect to any host-port (#2275) (#2721)
- Address Javadoc warnings (and related changes) (#2730)
- Easier constructors for pipeline classes (#2731)
- Upgrade dependencies (#2740)
- Remove deprecations that got remained (#2741)
- Resolve XADD conflicts (#2742)
- Remove Sentinel class (#2744)
- Resource within cluster retry should be closed quietly (#2745)
- Replace deprecated interface with new interface in JedisPoolConfig and ConnectionPoolConfig (#2749)
- Use slf4j-simple to replace log4j implementation (#2753)
Contributors
We'd like to thank all the contributors who worked on this release!
@sazzad16, @yangbodong22011, @dengliming, @AvitalFineRedis, @JarvisCraft, @chinafzy, @zeekling, @chayim.
3.8.0
This is the last release planned for Jedis 3.x.
🚀 New Features
- Added aclLogReset() method to support ACL LOG RESET subcommand (#2737)
This should replace bothaclLog(byte[])
andaclLog(String)
methods. - Support binary version of CLUSTER GETKEYSINSLOT (#2689)
🧰 Other Changes
- Refresh nodes when renewSlotCache (#2642)
- Change in JedisClusterInfoCache.discoverClusterNodesAndSlots (#2682)
- Do not catch checked Exception if it is not thrown (#2615)
- Address Jedis version 4 breaking changes (#2737)
- Deprecate SENTINEL SLAVES (#2673)
- Upgrade Commons Pool to 2.11.1 (#2654)
- Use slf4j-simple to replace log4j implementation (#2753)
Thanks @yangbodong22011, @zeekling, @adiamzn, @bokshitsky, @sazzad16 for contributing.
4.0.0-rc2
This is a maintenance release for CVE-2021-44228, the Log4j security issue. This issue has no impact on Jedis, and Log4j is used only in its tests.
🧰 Maintenance
🚀 New Features
- Easier constructors for pipeline classes (#2731)
3.7.1
This is a maintenance release for CVE-2021-44228, the Log4j security issue. This issue has no impact on Jedis, and only impacted its tests.
Changes
Maintenance
4.0.0-RC1
🔥 Breaking Changes
- Most SortedSet methods are changed to return Java
List
instead ofSet
(#2709) - Renamed RedisCommandObjects to CommandObjects and RedisClusterCommandObjects to ClusterCommandObjects
🚀 New Features
- Implemented JedisSharding
- Implemented ClusterPipeline and ShardedPipeline
- Support exclusive range in XRANGE command (#2719)
🧰 Maintenance
- Restored Jedis 3 sendCommand methods
4.0.0-beta4
🚀 New Features
-
Introduced JedisPooled
An alternate to JedisPool which implements same interfaces as JedisCluster, allowing easy switch between JedisCluster and JedisPooled. -
Implemented RediJSON 2 commands
-
Restored Jedis 3 classes/methods:
- JedisSentinelPool class
- JedisPubSub abstract class
- BinaryJedisPubSub abstract class
- JedisMonitor abstract class
- Pipeline.syncAndReturnAll() method
-
Added/Changed ACL commands:
- Added ACL DELUSER command
- Added ACL GENPASS command with bits option
- Added aclLogReset() method to support ACL LOG RESET sub-command replacing aclLog(options) method
🐛 Bug Fixes
- Fixed NullPointerException in ClusterPipeline with commands without any key
- Fixed resource leak in ClusterConnectionProvider
🧰 Maintenance
4.0.0-beta3
🚀 New Features
- Implemented RediSearch commands
- FT.ALTER
- FT.DROPINDEX
- FT.AGGREGATE
- FT.AGGREGATE with Cursor APIs
- FT.SYNUPDATE
- FT.SYNDUMP
- FT.CONFIG
🐛 Bug Fixes
- Fixed some RedisJSON command arguments
🧰 Maintenance
- Added tests for RedisJSON commands
- Added tests for RediSearch commands
4.0.0-beta2
4.0.0-beta1
- Introduced UnifiedJedis
- Added RediSearch commands (FT.CREATE, FT.SEARCH)
- Added RedisJSON commands (JSON.SET, JSON.GET, JSON.DEL)
3.7.0
Redis Commands and Arguments
- XAUTOCLAIM Command #2498
- CONFIG SET returns OK status #2525
- SHUTDOWN with optional modifier #2544
- Allow calling PUBSUB CHANNELS without a pattern #2555
- Support TYPE option in SCAN command #2565
- CLIENT LIST command with TYPE argument #2591
- Support EXECABORT Error #2598
- Few more Sentinel commands #2588
- CLIENT PAUSE command with mode option #2601
- More Cluster commands #2605
- ROLE command #2607
- FAILOVER command #2610
- Support stralgo command #2586
Changes
- Reduce lock granularity #2514
- Allow to override sharded jedis pooled object factory #2612
- Throw SHUTDOWN error received from Redis #2613
Dependencies
- Upgrade commons-pool to 2.10.0 #2609
Maintenance
- Warn Limit the access of setDataSource in Jedis #2522
- New RestoreReplace recommendations #2534
- Deprecate JedisClusterHostAndPortMap #2535
- Deprecate set methods from socket factory #2530
- Deprecate methods with 'byte[] keyCount' param #2548
- Warn Pool extends GenericObjectPool #2576
Thanks to @s-sathish, @Shawyeok, @sabbey37, @bokshitsky, @yangbodong22011 for contributing!