6.2.0
- [vector sets] Support for VSIM WITHATTRIBS (CAE-1421) (#4260)
- Support Redis 8 vector sets #4169 (#4203)
- Fix JedisBroadcastException in functionLoadReplace for Redis Cluster (#4219)
- Bump org.apache.maven.plugins:maven-javadoc-plugin from 3.11.2 to 3.11.3 (#4246)
- Bump org.junit:junit-bom from 5.13.3 to 5.13.4 (#4216)
- docs: Improve Javadoc for HostAndPortMapper (#4112) (#4227)
We'd like to thank all the contributors who worked on this release!
@JuneYub, @Kguswo, @dependabot, @dependabot[bot] and @ggivo
6.1.0
- Add support for SVS-VAMANA vector indexing (#4222)
- Clarify why new stream entries aren't deleted with XDELEX (#4218)
- Add support for new stream commands (#4211)
- Add Support for New BITOP Operations in Redis 8.2 (#4188) (#4190)
- Add binary stream support for XREAD and XREADGROUP (#3566) (#4152)
- Run pipeline in current thread if all the keys on same node (#4149)
- Restore binary compatibility of SetParams (#4225)
- Fix memory leak in JedisClusterInfoCache - replica nodes not cleared (#4205)
- Fix:JedisCluster throws NullPointerException when maxAttempts is set to 0 (#4186)
- DOC-5471 time series doc examples (#4210)
- Bump jackson.version from 2.19.1 to 2.19.2 (#4208)
- Fix flaky test ClientCommandsTest.killSkipmeYesNo (#4206)
- Bump org.junit:junit-bom from 5.13.2 to 5.13.3 (#4198)
- Migrate publishing to Maven Central Portal (#4199)
- Bump org.apache.maven.plugins:maven-gpg-plugin from 3.2.7 to 3.2.8 (#4197)
- Bump org.junit:junit-bom from 5.13.1 to 5.13.2 (#4192)
- DOC-5227 added probabilistic data type examples (#4184)
- Bump jackson.version from 2.19.0 to 2.19.1 (#4180)
- Update test infra to use latest Redis (#4179)
- Bump org.junit:junit-bom from 5.13.0-RC1 to 5.13.1 (#4174)
- Bump org.json:json from 20250107 to 20250517 (#4171)
- Bump org.apache.httpcomponents.client5:httpclient5-fluent from 5.4.4 to 5.5 (#4170)
- Fix flaky tests in DocumentTest (#3617)
- Add retryable command execution example (#3780)
- Bump jackson.version from 2.18.3 to 2.19.0 (#4160)
- Bump com.google.code.gson:gson from 2.12.1 to 2.13.1 (#4161)
We'd like to thank all the contributors who worked on this release!
@219sansim, @YoHanKi, @andy-stark-redis, @ggivo, @jujn, @thachlp, @uglide and @xrayw
6.0.0
Starting from version 8.0, Redis supports new data structures and capabilities such as JSON, Search & Query, and TimeSeries by default. This release improves Jedis compatibility with Redis 8.0.
This release introduces a client-side default dialect for Redis’ search and query capabilities. By default, the client now overrides the server-side dialect with version 2, automatically appending DIALECT 2
to commands like FT.AGGREGATE and FT.SEARCH.
Important: Be aware that the query dialect may impact the results returned. If needed, you can revert to a different dialect version by configuring the client accordingly.
UnifiedJedis jedis = new UnifiedJedis("redis://localhost:6379");
jedis.setDefaultSearchDialect(1); // DIALECT 1
You can find further details in the query dialect documentation.
This release also removes support for both RedisGraph and Triggers & Functions(aka RedisGears v2).
- Make default client side search dialect to 2 (#4060)
- Remove Graph module support (#4073)
- Change FT.PROFILE to return generic object (#4067)
- Remove Triggers and Functions feature (#3969)
- COMMAND INFO reply contains subcommand detail (#4022)
- Support warning messages in search/aggregation query results (#3958)
- Add SslOptions (#3980)
- Add tests for vector search INT8/UINT8 types (#4091)
- Support for new HFE API, hgetdel hgetex hsetex commands (#4095)
- Propagate cause for "Cluster retry deadline exceeded" exception (#4103)
- Support INFO command in UnifiedJedis (simplified) (#4079)
- [code cleanup] Jedis client to implement CommandCommands interface (#4077)
- Extend EXECABORT with "previous errors" #4084 (#4090)
- Add SslOptions (#3980)
- Token based authentication integration with core extension (#4011)
- Implement command (no arg) (#4026)
- Fix for bug #4003. Better message instead of ArrayIndexOutOfBoundsExce (#4109)
- Fix pubsub when cache enabled (#4086)
- Bump org.apache.commons:commons-pool2 from 2.12.0 to 2.12.1 (#4080)
- COMMAND INFO reply contains subcommand detail (#4022)
- Bump test infra to 8.0-RC2 (#4155)
- DOC-5110 added hash search examples (#4151)
- Bump org.apache.maven.plugins:maven-surefire-plugin from 3.5.2 to 3.5.3 (#4136)
- Bump org.jacoco:jacoco-maven-plugin from 0.8.12 to 0.8.13 (#4137)
- Speed up cluster tests (#4150)
- Bump org.apache.httpcomponents.client5:httpclient5-fluent from 5.4.2 to 5.4.4 (#4153)
- Fix for connectionAuthWithExpiredTokenTest (#4142)
- Migrate test to JUnit5 (#4139)
- Document pgp keys (#4125)
- Bump jackson.version from 2.18.2 to 2.18.3 (#4106)
- Add tests for setGet with Parameters (#4127)
- Fix failing network partition test (#4118)
- Test support for DefaultAzureCredential (#4113)
- Update redis server test versions (#4114)
- Update stale issue workflow (#4101)
- Bump net.revelc.code.formatter:formatter-maven-plugin from 2.11.0 to 2.16.0 (#4098)
- Basic documention for TBA support with some examples (#4102)
- Bump org.apache.maven.plugins:maven-compiler-plugin from 3.13.0 to 3.14.0 (#4097)
- Bump org.awaitility:awaitility from 4.2.2 to 4.3.0 (#4099)
- Enforce code style format (#4087)
- Update redisjson.md (#4083)
- Bump org.json:json from 20240303 to 20250107 (#4049)
- Bump com.google.code.gson:gson from 2.11.0 to 2.12.1 (#4082)
- Bump org.apache.httpcomponents.client5:httpclient5-fluent from 5.4.1 to 5.4.2 (#4081)
- Bump org.apache.commons:commons-pool2 from 2.12.0 to 2.12.1 (#4080)
- Fix the Java example code for Lists using RPUSH (#4074)
- Use v4 of few GitHub actions workflow artifacts (#4075)
- Change FT.PROFILE to return generic object (#4067)
- Remove SearchConfigTest (#4072)
- Test modules CONFIG support (#4043)
- Test modules ACL support (#4042)
- Test with 8.0-M04-pre (#4069)
- Fix TBA cluster integration tests (#4068)
- DOC-4445 server management command examples (#4056)
- Update actions/checkout, actions/setup-java and codecov/codecov-action (#4066)
- DOC-4732 added geo index examples (#4059)
- DOC-4440 added auth command examples using Jedis class (#4058)
- Revert failing GitHub artifacts for Publish Docs (#4065)
- Use v3 of GitHub deploy-pages for Publish Docs (#4064)
- Use v3 of GitHub upload-pages-artifact for Publish Docs (#4063)
- Upgrade GitHub Python artifact for Publish Docs (#4062)
- Use v4 of upload artifact (#4061)
- DOC-4475 examples for llen, lpop, lpush, lrange, rpop, and rpush (#4054)
- DOC-4495 sadd and smembers examples (#4052)
- Fix sporadic test failing with OOM (#4053)
- Introduces test matrix based on Redis versions [8.0-M1, 7.4.1, 7.2.6, 6.2.16] (#4015)
- Remove List tests asserting timeouts (#4051)
- DOC-4450 added hgetall and hvals command examples (#4050)
- Minor fix with Token-Based-Authentication integration tests (#4044)
- Bump org.apache.maven.plugins:maven-javadoc-plugin from 3.11.1 to 3.11.2 (#4039)
- DOC-4560 pipe/transaction examples for docs (#4038)
- Bump jackson.version from 2.18.1 to 2.18.2 (#4034)
- Make reply of COMMAND INFO compatible with older Redis versions (#4031)
- Make reply of ACL LOG compatible with older Redis versions (#4030)
- Add examples and tutorials page (#4024)
- Bump org.apache.maven.plugins:maven-javadoc-plugin from 3.10.1 to 3.11.1 (#4007)
- Bump org.apache.maven.plugins:maven-surefire-plugin from 3.5.1 to 3.5.2 (#4008)
- DOC-4345 added JSON search examples for home page (#4010)
- Bump org.apache.httpcomponents.client5:httpclient5-fluent from 5.4 to 5.4.1 (#4009)
- Bump jackson.version from 2.18.0 to 2.18.1 (#4006)
- Mkdocs unify docs (#3999)
- Update links in README (#3974)
- Codecove has released beta version of Test Analytics feature (#3996)
- Fix flaky tests with 'await' (#3972)
- Bump org.apache.maven.plugins:maven-javadoc-plugin from 3.10.0 to 3.10.1 (#3994)
- Add javadoc to clear up implicit behavior (#3991)
- Fix JavaDoc warnings (#3990)
- Bump org.apache.maven.plugins:maven-surefire-plugin from 3.5.0 to 3.5.1 (#3989)
- Bump org.apache.maven.plugins:maven-gpg-plugin from 3.2.6 to 3.2.7 (#3976)
- Bump com.kohlschutter.junixsocket:junixsocket-core from 2.10.0 to 2.10.1 (#3978)
- Bump jackson.version from 2.17.2 to 2.18.0 (#3977)
- DOC-4317 fixed flaky tests (#3984)
- Jedis 5.2.0 is released; bump snapshot version to 5.3.0 (#3975)
We'd like to thank all the contributors who worked on this release!
@andy-stark-redis, @atakavci, @ggivo, @joshrotenberg, @ozennou, @sanaulla123, @sazzad16, @smadasu, @thachlp, @tishun and @uglide
6.0.0-beta2
🛠️ Maintenance Pre-release – This version includes no functional changes. It serves as a pre-release of Jedis that has been validated for compatibility with Redis Community Edition 8.0 RC1.
- Add tests for vector search INT8/UINT8 types by @ggivo in https://github.com/redis/jedis/pull/4091
- Fix failing network partition test by @atakavci in https://github.com/redis/jedis/pull/4118
- Add tests for setGet with Parameters by @ggivo in https://github.com/redis/jedis/pull/4127
- Add tests for vector search INT8/UINT8 types by @ggivo in https://github.com/redis/jedis/pull/4091
- Bump jackson.version from 2.18.2 to 2.18.3 by @dependabot in https://github.com/redis/jedis/pull/4106
- Link Jedis 5 migration guide in mkdocs by @sazzad16 in https://github.com/redis/jedis/pull/4076
- Document pgp keys by @ggivo in https://github.com/redis/jedis/pull/4125
- Update verifying content doc by @ggivo in https://github.com/redis/jedis/pull/4133
- Fix failing ModuleTest & test against 8.0-RC1-pre by @ggivo in https://github.com/redis/jedis/pull/4131
- Update "Pipelines and transactions" doc example to include pipeline.close() by @ggivo in https://github.com/redis/jedis/pull/4134
- Fix flaky test JedisPoolTest.testCloseConnectionOnMakeObject by @thachlp in https://github.com/redis/jedis/pull/4138
We'd like to thank all the contributors who worked on this release!
@atakavci, @ggivo, @sazzad16, @thachlp
Full Changelog: https://github.com/redis/jedis/compare/6.0.0-beta1...v6.0.0-beta2
6.0.0-beta1
The 6.0.0-Beta1 release introduces major changes, new features, and improvements:
- Experimental Features: Added support for warning messages in search/aggregation queries and a new SslOptions feature.
- New Features and Enhancements: Added hgetdel, hgetex, and hsetex commands, integrated token-based authentication, improved exception handling, and added INFO command support in UnifiedJedis.
- Breaking Changes:
- The default client-side search dialect is now version 2.
- Graph module support and Triggers and Functions have been removed. These features have been deprecated in Redis. See the official deprecation notice for details.
- Bug Fixes: Resolved issues with pub/sub caching and command response compatibility with older Redis versions.
This release introduces a client-side default dialect for Redis’ search and query capabilities. By default, the client now overrides the server-side dialect with version 2, automatically appending DIALECT 2
to commands like FT.AGGREGATE
and FT.SEARCH
. Important: Be aware that the query dialect may impact the results returned. If needed, you can revert to a different dialect version by configuring the client accordingly.
UnifiedJedis jedis = new UnifiedJedis("redis://localhost:6379");
jedis.setDefaultSearchDialect(1); // DIALECT 1
You can find further details in the query dialect documentation
- Make default client side search dialect to 2 (#4060)
- Remove Graph module support (#4073)
- Change FT.PROFILE to return generic object (#4067)
- Remove Triggers and Functions feature (#3969)
- COMMAND INFO reply contains subcommand detail (#4022)
- Support warning messages in search/aggregation query results (#3958)
- Add SslOptions (#3980)
- Support for new HFE API, hgetdel hgetex hsetex commands (#4095)
- Propagate cause for "Cluster retry deadline exceeded" exception (#4103)
- Extend EXECABORT with "previous errors" #4084 (#4090)
- Token based authentication integration with core extension (#4011)
- Add SslOptions (#3980)
- Support INFO command in UnifiedJedis (simplified) (#4079)
- Implement command (no arg) (#4026)
- Fix for bug #4003. Better message instead of ArrayIndexOutOfBoundsExce (#4109)
- Fix pubsub when cache enabled (#4086)
- Bump org.apache.commons:commons-pool2 from 2.12.0 to 2.12.1 (#4080)
- COMMAND INFO reply contains subcommand detail (#4022)
- Update redisjson.md (#4083)
- Fix the Java example code for Lists using RPUSH (#4074)
- DOC-4445 server management command examples (#4056)
- DOC-4732 added geo index examples (#4059)
- DOC-4440 added auth command examples using Jedis class (#4058)
- DOC-4475 examples for llen, lpop, lpush, lrange, rpop, and rpush (#4054)
- DOC-4495 sadd and smembers examples (#4052)
- DOC-4450 added hgetall and hvals command examples (#4050)
- DOC-4560 pipe/transaction examples for docs (#4038)
- Add examples and tutorials page (#4024)
- DOC-4345 added JSON search examples for home page (#4010)
- [code cleanup] Jedis client to implement CommandCommands interface (#4077)
- Update redis server test versions (#4114)
- Test support for DefaultAzureCredential (#4113)
- Update stale issue workflow (#4101)
- Bump net.revelc.code.formatter:formatter-maven-plugin from 2.11.0 to 2.16.0 (#4098)
- Basic documention for TBA support with some examples (#4102)
- Bump org.apache.maven.plugins:maven-compiler-plugin from 3.13.0 to 3.14.0 (#4097)
- Bump org.awaitility:awaitility from 4.2.2 to 4.3.0 (#4099)
- Enforce code style format (#4087)
- Fix TBA cluster integration tests (#4068)
- Bump org.json:json from 20240303 to 20250107 (#4049)
- Bump com.google.code.gson:gson from 2.11.0 to 2.12.1 (#4082)
- Bump org.apache.httpcomponents.client5:httpclient5-fluent from 5.4.1 to 5.4.2 (#4081)
- Bump org.apache.commons:commons-pool2 from 2.12.0 to 2.12.1 (#4080)
- Use v4 of few GitHub actions workflow artifacts (#4075)
- Change FT.PROFILE to return generic object (#4067)
- Remove SearchConfigTest (#4072)
- Test modules CONFIG support (#4043)
- Test modules ACL support (#4042)
- Test with 8.0-M04-pre (#4069)
- Update actions/checkout, actions/setup-java and codecov/codecov-action (#4066)
- Revert failing GitHub artifacts for Publish Docs (#4065)
- Use v3 of GitHub deploy-pages for Publish Docs (#4064)
- Use v3 of GitHub upload-pages-artifact for Publish Docs (#4063)
- Upgrade GitHub Python artifact for Publish Docs (#4062)
- Use v4 of upload artifact (#4061)
- Fix sporadic test failing with OOM (#4053)
- Introduces test matrix based on Redis versions [8.0-M1, 7.4.1, 7.2.6, 6.2.16] (#4015)
- Remove List tests asserting timeouts (#4051)
- Minor fix with Token-Based-Authentication integration tests (#4044)
- Bump org.apache.maven.plugins:maven-javadoc-plugin from 3.11.1 to 3.11.2 (#4039)
- Bump jackson.version from 2.18.1 to 2.18.2 (#4034)
- Make reply of COMMAND INFO compatible with older Redis versions (#4031)
- Make reply of ACL LOG compatible with older Redis versions (#4030)
- Bump org.apache.maven.plugins:maven-javadoc-plugin from 3.10.1 to 3.11.1 (#4007)
- Bump org.apache.maven.plugins:maven-surefire-plugin from 3.5.1 to 3.5.2 (#4008)
- Bump org.apache.httpcomponents.client5:httpclient5-fluent from 5.4 to 5.4.1 (#4009)
- Bump jackson.version from 2.18.0 to 2.18.1 (#4006)
- Mkdocs unify docs (#3999)
- Update links in README (#3974)
- Codecove has released beta version of Test Analytics feature (#3996)
- Fix flaky tests with 'await' (#3972)
- Bump org.apache.maven.plugins:maven-javadoc-plugin from 3.10.0 to 3.10.1 (#3994)
- Add javadoc to clear up implicit behavior (#3991)
- Fix JavaDoc warnings (#3990)
- Bump org.apache.maven.plugins:maven-surefire-plugin from 3.5.0 to 3.5.1 (#3989)
- Bump org.apache.maven.plugins:maven-gpg-plugin from 3.2.6 to 3.2.7 (#3976)
- Bump com.kohlschutter.junixsocket:junixsocket-core from 2.10.0 to 2.10.1 (#3978)
- Bump jackson.version from 2.17.2 to 2.18.0 (#3977)
- DOC-4317 fixed flaky tests (#3984)
- Jedis 5.2.0 is released; bump snapshot version to 5.3.0 (#3975)
We'd like to thank all the contributors who worked on this release!
@andy-stark-redis, @atakavci, @dependabot, @dependabot[bot], @ggivo, @joshrotenberg, @ozennou, @sanaulla123, @sazzad16, @smadasu, @thachlp, @tishun and @uglide
5.3.0-beta1
- Token-based authentication support and Microsoft Entry ID integration by leveraging the new core authentication extension (#4011)
- Implement command (no arg) (#4026)
- COMMAND INFO reply contains subcommand detail (#4022)
- COMMAND INFO reply contains subcommand detail (#4022)
- Bump org.apache.maven.plugins:maven-javadoc-plugin from 3.11.1 to 3.11.2 (#4039)
- Bump jackson.version from 2.18.1 to 2.18.2 (#4034)
- Make reply of COMMAND INFO compatible with older Redis versions (#4031)
- Make reply of ACL LOG compatible with older Redis versions (#4030)
- Bump org.apache.maven.plugins:maven-javadoc-plugin from 3.10.1 to 3.11.1 (#4007)
- Bump org.apache.maven.plugins:maven-surefire-plugin from 3.5.1 to 3.5.2 (#4008)
- Bump org.apache.httpcomponents.client5:httpclient5-fluent from 5.4 to 5.4.1 (#4009)
- Bump jackson.version from 2.18.0 to 2.18.1 (#4006)
- Mkdocs unify docs (#3999)
- Update links in README (#3974)
- Codecove has released beta version of Test Analytics feature (#3996)
- Fix flaky tests with 'await' (#3972)
- Bump org.apache.maven.plugins:maven-javadoc-plugin from 3.10.0 to 3.10.1 (#3994)
- Add javadoc to clear up implicit behavior (#3991)
- Fix JavaDoc warnings (#3990)
- Bump org.apache.maven.plugins:maven-surefire-plugin from 3.5.0 to 3.5.1 (#3989)
- Bump org.apache.maven.plugins:maven-gpg-plugin from 3.2.6 to 3.2.7 (#3976)
- Bump com.kohlschutter.junixsocket:junixsocket-core from 2.10.0 to 2.10.1 (#3978)
- Bump jackson.version from 2.17.2 to 2.18.0 (#3977)
- DOC-4317 fixed flaky tests (#3984)
- Jedis 5.2.0 is released; bump snapshot version to 5.3.0 (#3975)
- DOC-4560 pipe/transaction examples for docs (#4038)
- Add examples and tutorials page (#4024)
- DOC-4345 added JSON search examples for home page (#4010)
We'd like to thank all the contributors who worked on this release!
@andy-stark-redis, @atakavci, @dependabot, @dependabot[bot], @ggivo, @joshrotenberg, @sazzad16, @thachlp and @uglide
5.2.0 GA
We are happy to announce that improved server-assisted, client-side caching is now generally available! Special thanks to all our beta testers for their valuable feedback, which helped us refine and improve the initial implementation.
Client-side caching is supported exclusively with the RESP3 protocol with Redis >= 7.4 and is available in UnifiedJedis, JedisPooled, and JedisCluster and other classes.
- Install Jedis 5.2.0
- Use the following code example to get started:
public class CSCExampleTest {
public static void main() {
HostAndPort node = HostAndPort.from("localhost:6379");
JedisClientConfig clientConfig = DefaultJedisClientConfig.builder()
.resp3() // RESP3 protocol is required for client-side caching
//.user("myuser") // Redis server username (optional)
//.password("mypass") // Redis user's password (optional)
.build();
CacheConfig cacheConfig = getCacheConfig();
Cache cache = CacheFactory.getCache(cacheConfig);
try (UnifiedJedis client = new UnifiedJedis(node, clientConfig, cache)) {
client.set("foo", "bar");
client.get("foo");
client.get("foo"); // Cache hit
System.out.println("Cache size: " + cache.getSize()); // 1
System.out.println(cache.getStats().toString());
//Let's change the value of "foo" to invalidate the value stored in the local cache
client.mset("foo", "new_value", "ignore_me:1", "another_value");
Thread.sleep(1000); // wait for the cache invalidation to happen
System.out.println(client.get("foo")); // Cache miss
System.out.println(cache.getStats().toString());
client.get("ignore_me:1"); // Client will ignore this key
System.out.println("Cache size: " + cache.getSize()); // still 1
// check the cache stats
System.out.println(cache.getStats().toString());
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
private static CacheConfig getCacheConfig() {
// This is a simple cacheable implementation that ignores keys starting with "ignore_me"
Cacheable cacheable = new DefaultCacheable() {
final String IGNORE_PREFIX = "ignore_me";
@Override
public boolean isCacheable(ProtocolCommand command, List<Object> keys) {
// assuming we'll only execute methods with string keys
List<String> stringKeys = keys.stream()
.filter(obj -> obj instanceof String)
.map(obj -> (String) obj)
.collect(Collectors.toList());
for (String key : stringKeys) {
if (key.startsWith(IGNORE_PREFIX)) {
return false;
}
}
return isDefaultCacheableCommand(command);
}
};
// Create a cache with a maximum size of 10000 entries
return CacheConfig.builder()
.maxSize(10000)
.cacheable(cacheable)
.build();
}
}
It is possible to limit or ignore commands or keys for client-side caching. The getCacheConfig
method presented above provides an example of how to achieve that.
- JedisConnectionException contains HostAndPort from DefaultJedisSocketFactory (#3896)
- Address change in JSON.GET command without path (#3858)
- Modify and fail-fast GeoSearchParam (#3827)
- Support transaction from UnifiedJedis without calling multi first (#3804)
- Reduce the log level of validateObject to WARN (#3750)
- Support automatic namespacing (#3781)
- Added support for ADDSCORES argument in FT.AGGREGATE (#3908)
- Support IGNORE and other optional arguments for timeseries commands (#3860)
- Support Hash field expiration (#3826)
- Add equals and hashCode to Timeseries Params classes (#3959)
- Decoding FT.SEARCH reply can be disabled at field level (#3926)
- Get enriched Connection information (#3745)
- Support execute the read-only command on replica nodes (#3848)
- JedisConnectionException contains HostAndPort from DefaultJedisSocketFactory (#3896)
- Support [S]PUBLISH in pipelines and transactions (#3859)
- Support Hash field expiration (#3826)
- Custom connection pool to MultiClusterPooledConnectionProvider (#3801)
- PubSub handle array of messages for RESP2 (#3811)
- Support transaction from UnifiedJedis without calling multi first (#3804)
- Add last entry id for XREADs and support XREADs reply as map (#3791)
- Add Experimental, Internal and VisibleForTesting annotations (#3790)
- Implement equals and hashcode in Params classes (#3728)
- Add support for redis command: CLIENT TRACKINGINFO (#3751)
- Support the MAXAGE option for CLIENT KILL (#3754)
- Polish #3741 (#3746)
- Add support for the NOVALUES option of HSCAN (#3741)
- Support issuing Latency commands (#3729)
- Accept null replies for BZPOPMAX and BZPOPMIN commands (#3930)
- Fix empty LUA table reply (#3924)
- Ensure closing connection in Pipeline (#3865)
- Address change in JSON.GET command without path (#3858)
- Consider null values in empty StreamPendingSummary (#3793)
- Fix UnifiedJedis pexpireAt glitch (#3782)
- Use expiryOption in PipelineBase.expireAt (#3777)
- Stop connection fetching before sync/exec (#3756)
- Check for thread interrupt in subscribe process of PubSub (#3726)
- Avoid NPE in MultiNodePipelineBase.java (#3697)
- Fix probable missing (RESP3) protocol processing (#3692)
- Use circuit breaker fallback exception list (#3664)
- Deprecate Triggers and Functions feature (#3968)
- Bump org.apache.httpcomponents.client5:httpclient5-fluent from 5.3.1 to 5.4 (#3962)
- Bump org.apache.maven.plugins:maven-surefire-plugin from 3.3.1 to 3.5.0 (#3950)
- Bump org.apache.maven.plugins:maven-javadoc-plugin from 3.8.0 to 3.10.0 (#3949)
- Bump org.apache.maven.plugins:maven-gpg-plugin from 3.2.5 to 3.2.6 (#3957)
- Added JavaDoc for basic JedisCluster constructors (#3304)
- Bump org.locationtech.jts:jts-core from 1.19.0 to 1.20.0 (#3948)
- Add A-A failover scenario test (#3935)
- Bump org.apache.maven.plugins:maven-gpg-plugin from 3.2.4 to 3.2.5 (#3936)
- Fix codecov upload (#3933)
- Rename readonly config param to specify Redis Cluster (#3932)
- Modify Connection.toIdentityString and test (#3931)
- Revert "Creating CODEOWNERS for the examples (#3570)" (#3897)
- Bump org.apache.maven.plugins:maven-surefire-plugin from 3.2.5 to 3.3.1 (#3891)
- Bump org.hamcrest:hamcrest from 2.2 to 3.0 (#3914)
- Bump org.apache.maven.plugins:maven-javadoc-plugin from 3.7.0 to 3.8.0 (#3909)
- Bump net.javacrumbs.json-unit:json-unit from 2.38.0 to 2.40.1 (#3903)
- Bump org.apache.maven.plugins:maven-release-plugin from 3.0.1 to 3.1.1 (#3890)
- Fixed typo in Javadoc (#3917)
- Bump org.apache.maven.plugins:maven-jar-plugin from 3.4.1 to 3.4.2 (#3910)
- Bump com.kohlschutter.junixsocket:junixsocket-core from 2.9.1 to 2.10.0 (#3901)
- Bump jackson.version from 2.17.1 to 2.17.2 (#3902)
- Add Scenario tests (#3847)
- Modify the judgment that reads a response as empty to isEmpty method (#3888)
- Replace
synchronized
withj.u.c.l.ReentrantLock
for Loom (#3480) - Extract messages of unsupported exception as constants (#3887)
- Bump org.apache.maven.plugins:maven-javadoc-plugin from 3.6.3 to 3.7.0 (#3851)
- Bump org.sonatype.plugins:nexus-staging-maven-plugin from 1.6.13 to 1.7.0 (#3850)
- Bump com.google.code.gson:gson from 2.10.1 to 2.11.0 (#3842)
- Merge doc tests into main branch to keep in-sync with the code (#3861)
- Deprecate unused Set builders (#3857)
- Disable Redis Graph tests (#3856)
- Introduce EndpointConfig and load endpoint settings from the endpoints.json file (#3836)
- Address Gears test fail - Cleanup Function libraries (#3840)
- Bump jackson.version from 2.17.0 to 2.17.1 (#3833)
- Add methods in CommandArguments and RawableFactory (#3834)
- Modify and fail-fast GeoSearchParam (#3827)
- Bump org.apache.maven.plugins:maven-jar-plugin from 3.4.0 to 3.4.1 (#3822)
- Bump org.apache.maven.plugins:maven-gpg-plugin from 3.2.3 to 3.2.4 (#3823)
- Bump org.apache.maven.plugins:maven-jar-plugin from 3.3.0 to 3.4.0 (#3819)
- Bump org.apache.maven.plugins:maven-gpg-plugin from 3.2.2 to 3.2.3 (#3818)
- Add more tests for the CommandObjects class (#3809)
- Resolve compile warnings (#3810)
- Bump com.kohlschutter.junixsocket:junixsocket-core from 2.9.0 to 2.9.1 (#3806)
- Bump org.jacoco:jacoco-maven-plugin from 0.8.11 to 0.8.12 (#3805)
- Bump org.apache.maven.plugins:maven-source-plugin from 3.3.0 to 3.3.1 (#3807)
- Deprecate unused JSON.ARRAPPEND in CommandObjects (#3798)
- Extensive unit tests for the CommandObjects class (#3796)
- Add extensive tests for UnifiedJedis (#3788)
- Bump org.apache.maven.plugins:maven-gpg-plugin from 3.2.1 to 3.2.2 (#3794)
- Add Experimental, Internal and VisibleForTesting annotations (#3790)
- Add TS.INFO [DEGUB] and CF.MEXISTS in pipelined commands (#3787)
- Bump org.apache.maven.plugins:maven-compiler-plugin from 3.12.1 to 3.13.0 (#3786)
- Bump org.apache.maven.plugins:maven-gpg-plugin from 3.2.0 to 3.2.1 (#3785)
- Pipelined tests for lists and sets, and API typo fix (#3772)
- Extensive unit tests for PipeliningBase (#3778)
- Bump jackson.version from 2.16.2 to 2.17.0 (#3776)
- Bump org.apache.maven.plugins:maven-gpg-plugin from 3.1.0 to 3.2.0 (#3775)
- Fix typo in SetPipelineCommands method name (#3773)
- Streamline test execution (#3760)
- Add pipelined tests for sorted sets (#3771)
- Geo pipelined tests (#3767)
- Reenable clustering tests (#3764)
- GETSET command is deprecated since Redis 6.2.0 (#3768)
- Add tests for Stream pipelined commands (#3763)
- Bump jackson.version from 2.16.1 to 2.16.2 (#3762)
- Bump org.json:json from 20240205 to 20240303 (#3752)
- Add Hashes pipeline commands unit tests (#3288)
- Add unit tests for pipelining - migrate and db commands (#3759)
- Reduce the log level of validateObject to WARN (#3750)
- Bump org.json:json from 20231013 to 20240205 (#3706)
- Bump com.kohlschutter.junixsocket:junixsocket-core from 2.8.3 to 2.9.0 (#3724)
- Running doctests also on emb-examples (#3693)
- Bump org.apache.maven.plugins:maven-surefire-plugin from 3.2.3 to 3.2.5 (#3688)
- Run integration workflow for 5.2.0 branch (#3681)
- Bump jackson.version from 2.16.0 to 2.16.1 (#3666)
- Bump org.apache.maven.plugins:maven-compiler-plugin from 3.11.0 to 3.12.1 (#3665)
- Spellcheck as part of CI (#3492)
- Adding stale issues workflow (#3528)
- Creating CODEOWNERS for documentation (#3570)
- Unifying GitHub tokens (#3650)
- Replace deprecated set-output command with environment file (#3622)
- Fixing GPG key usage (#3670)
- Bump maven-surefire-plugin to 3.2.3 (#3656)
- Bump org.jacoco:jacoco-maven-plugin from 0.8.5 to 0.8.11 (#3653)
- Bump jackson databind and jsr310 to 2.16.0 (#3655)
- Bump org.apache.maven.plugins:maven-javadoc-plugin from 3.6.2 to 3.6.3 (#3639)
- Bump com.kohlschutter.junixsocket:junixsocket-core from 2.8.1 to 2.8.3 (#3647)
- Access Reducer attributes (#3637)
- Address RediSearch profile change (#3636)
We'd like to thank all the contributors who worked on this release!
@Gandalf1783, @Lcarrot, @SoilChang, @andy-stark-redis, @ascdi, @babanin, @cemasma, @chayim, @dependabot, @dependabot[bot], @gerzse, @jjz921024, @jongwooo, @sazzad16, @stillerrr, @thachlp, @uglide, @vanta and @zyfx595701088
5.2.0-beta5
We've substantially improved server-assisted, client-side caching in response to user feedback. It is currently a beta grade.
Client-side caching is supported exclusively with the RESP3 protocol and is available in UnifiedJedis, JedisPooled, and JedisCluster and other classes.
- Install Jedis 5.2.0-beta5
- Use the following code example to get started:
public class CSCExampleTest {
public static void main() {
HostAndPort node = HostAndPort.from("localhost:6379");
JedisClientConfig clientConfig = DefaultJedisClientConfig.builder()
.resp3() // RESP3 protocol is required for client-side caching
//.user("myuser") // Redis server username (optional)
//.password("mypass") // Redis user's password (optional)
.build();
CacheConfig cacheConfig = getCacheConfig();
Cache cache = CacheFactory.getCache(cacheConfig);
try (UnifiedJedis client = new UnifiedJedis(node, clientConfig, cache)) {
client.set("foo", "bar");
client.get("foo");
client.get("foo"); // Cache hit
System.out.println("Cache size: " + cache.getSize()); // 1
System.out.println(cache.getStats().toString());
//Let's change the value of "foo" to invalidate the value stored in the local cache
client.mset("foo", "new_value", "ignore_me:1", "another_value");
Thread.sleep(1000); // wait for the cache invalidation to happen
System.out.println(client.get("foo")); // Cache miss
System.out.println(cache.getStats().toString());
client.get("ignore_me:1"); // Client will ignore this key
System.out.println("Cache size: " + cache.getSize()); // still 1
// check the cache stats
System.out.println(cache.getStats().toString());
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
private static CacheConfig getCacheConfig() {
// This is a simple cacheable implementation that ignores keys starting with "ignore_me"
Cacheable cacheable = new DefaultCacheable() {
final String IGNORE_PREFIX = "ignore_me";
@Override
public boolean isCacheable(ProtocolCommand command, List<Object> keys) {
// assuming we'll only execute methods with string keys
List<String> stringKeys = keys.stream()
.filter(obj -> obj instanceof String)
.map(obj -> (String) obj)
.collect(Collectors.toList());
for (String key : stringKeys) {
if (key.startsWith(IGNORE_PREFIX)) {
return false;
}
}
return isDefaultCacheableCommand(command);
}
};
// Create a cache with a maximum size of 10000 entries
return CacheConfig.builder()
.maxSize(10000)
.cacheable(cacheable)
.build();
}
}
It is possible to limit or ignore commands or keys for client-side caching. The getCacheConfig
method presented above provides an example of how to achieve that.
5.1.4
- Address change in JSON.GET command without path (#3858)
- Modify and fail-fast GeoSearchParam (#3827)
- Support Hash field expiration (#3826)
- Support issuing Latency commands (#3729)
- Add support for the NOVALUES option of HSCAN command (#3741, #3746)
- Add support for CLIENT TRACKINGINFO command (#3751)
- Support IGNORE and other optional arguments for timeseries commands (#3860, #3863)
- Add last entry id for XREADs and support XREADs reply as map (#3791)
- Support the MAXAGE option for CLIENT KILL (#3754)
- Support ADDSCORES argument in FT.AGGREGATE (#3908)
- Support [S]PUBLISH in pipelines and transactions (#3859)
- Ensure closing connection in Pipeline (#3865)
- Address change in JSON.GET command without path (#3858)
- Add methods in CommandArguments and RawableFactory (#3834)
- Modify and fail-fast GeoSearchParam (#3827)
We'd like to thank all the contributors who worked on this release!
@sazzad16, @cemasma, @Lcarrot, @gerzse and @uglide