A blazingly small and sane redis java client

Related tags

Database jedis
Overview

Release CircleCI Maven Central Javadocs MIT licensed Language grade: Java codecov Gitter

Jedis

Jedis is a blazingly small and sane Redis java client.

Jedis was conceived to be EASY to use.

Jedis is fully compatible with redis 2.8.x, 3.x.x and above*.

Community

Meet us on IRC: ##jedis on freenode.net

Join the mailing-list at http://groups.google.com/group/jedis_redis

So what can I do with Jedis?

All of the following redis features are supported:

  • Sorting
  • Connection handling
  • Commands operating on any kind of values
  • Commands operating on string values
  • Commands operating on hashes
  • Commands operating on lists
  • Commands operating on sets
  • Commands operating on sorted sets
  • Commands operating on streams
  • Transactions
  • Pipelining
  • Publish/Subscribe
  • Persistence control commands
  • Remote server control commands
  • Connection pooling
  • Sharding (MD5, MurmurHash)
  • Key-tags for sharding
  • Sharding with pipelining
  • Scripting with pipelining
  • Redis Cluster

How do I use it?

You can download the latest build at: http://github.com/redis/jedis/releases

Or use it as a maven dependency:

Official Releases

<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>3.5.1</version>
    <type>jar</type>
    <scope>compile</scope>
</dependency>

Snapshots

  <repositories>
    <repository>
      <id>snapshots-repo</id>
      <url>https://oss.sonatype.org/content/repositories/snapshots</url>
    </repository>
  </repositories>

and

  <dependencies>
    <dependency>
      <groupId>redis.clients</groupId>
      <artifactId>jedis</artifactId>
      <version>3.6.0-SNAPSHOT</version>
    </dependency>
  </dependencies>

To use it just:

Jedis jedis = new Jedis("localhost");
jedis.set("foo", "bar");
String value = jedis.get("foo");

For more usage examples check the tests.

Please check the wiki. There are lots of cool things you should know, including information about connection pooling.

Master branch javadocs can be found here: http://redis.github.io/jedis/

And you are done!

Jedis Cluster

Redis cluster specification is implemented

Set<HostAndPort> jedisClusterNodes = new HashSet<HostAndPort>();
//Jedis Cluster will attempt to discover cluster nodes automatically
jedisClusterNodes.add(new HostAndPort("127.0.0.1", 7379));
JedisCluster jc = new JedisCluster(jedisClusterNodes);
jc.set("foo", "bar");
String value = jc.get("foo");

FAQ

  • Do you have strange stack traces?
  • You're getting errors when running jedis in multi-threaded environments?
  • Do you need further instructions about pipelining, transactions or sentinel?

Please check the WIKI for more useful information.

I want to contribute!

That is great!

Please see CONTRIBUTING.md on project's root directory for follow up how to contribute to Jedis project.

Thanks for helping!

Sponsorship

RedisLabs Logo


YourKit Logo

YourKit supports open source projects with its full-featured Java Profiler. YourKit, LLC is the creator of YourKit Java Profiler and YourKit .NET Profiler, innovative and intelligent tools for profiling Java and .NET applications.

License

Copyright (c) 2011 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.

Comments
  • Exception [B cannot be cast to java.lang.Long

    Exception [B cannot be cast to java.lang.Long

    Hi,

    I'm getting the [B cannot be cast to java.lang.Long exception when using Jedis for simple commands.

    I don't think it's related to thread management. Here is the way a new resource is obtained from the pool

    public class ConnectionManager {
        static JedisPool connectionPool;
        static ThreadLocal<Jedis> redisConnection = new ThreadLocal<Jedis>();
    
        static Jedis getRawConnectionInternal() {
            // Try to use a connection already leased in the request
            if (redisConnection.get() != null) {
                return redisConnection.get();
            }
    
            Jedis jedis = connectionPool.getResource();
            redisConnection.set(jedis);
            return jedis;
        }
    }
    

    I just call the getRawConnectionInternal() method each time I need to execute a new command and then I just call the method to execute the command.

    I'll show you my code and then I'll explain you what I expect it to do and where it is crashing :

    public class SomeClass {
        // Some code
    
        public static Object evalsha(String name, List keys, List params) {
                String sha = luaScripts.get(name);      // Just a map that contains relationships between a lua script filename and its SHA for the evalsha command
                if (sha == null) {
                    return null;
                }
    
                Object o = null;
    
                try {
                    ScriptExecTime e = new ScriptExecTime(name);    // Start to register the execution time of the LUA script
    
                    o = MyRedis.evalsha(sha, keys, params);   // Calls the getRawConnectionInternal() and then the command
    
                    e.end();    // Ends the profiling and save the execution time to redis
                } catch (Exception ex) {
                    Logger(ex);
                }
    
                return o;
        }
    
        protected static class ScriptExecTime {
    
            public long start;
            public String filename;
    
            public ScriptExecTime(String filename) {
                this.filename = filename;
                this.start = System.currentTimeMillis();
            }
    
            public void end() {
                Long end = System.currentTimeMillis() - this.start;
    
                try {
                    String key = "StatLuaScript_" + this.filename;
                    MyRedis.rpush(key, new String[]{end.toString()});    // Calls the getRawConnectionInternal() and then the command
                    MyRedis.ltrim(key, -10, -1);    // Same
                } catch (Exception e) {
                    Logger(e);      // Here an exception is caught
                }
            }
        }
    }
    

    This code is here to execute LUA scripts with the specified KEYS and ARGV variables. It takes as parameter the LUA filename and retrieves its SHA from my mapping. Then, it executes the script and computes the execution time of the script and registers it to redis in the end() method.

    The exception is caught in the end() method but I can't understand what I did wrong. As you can see the code is fairly simple. My application is multi-threaded, so some redis commands can be executed at the same time on other threads, but as stated at the beginning of this post, I have a Jedis instance for each thread so I guess the issue is located somewhere else.

    Do you have any idea?

    Thank you!

    opened by FabienHenon 73
  • ClassCastException - [B cannot be cast to java.lang.Long

    ClassCastException - [B cannot be cast to java.lang.Long

    I am using Jesque which uses Jedis as its Redis client, so I am not entirely sure if this is an issue in Jedis or Jesque.

    I am receiving this error:

    java.lang.ClassCastException
    
    [B cannot be cast to java.lang.Long
        at redis.clients.jedis.Connection.getIntegerReply(Connection.java:178)
        at redis.clients.jedis.Jedis.incr(Jedis.java:605)
        at net.greghaines.jesque.worker.WorkerImpl.success(WorkerImpl.java:520)
        at net.greghaines.jesque.worker.WorkerImpl.execute(WorkerImpl.java:503)
        at net.greghaines.jesque.worker.WorkerImpl.process(WorkerImpl.java:465)
        at net.greghaines.jesque.worker.WorkerImpl.poll(WorkerImpl.java:405)
        at net.greghaines.jesque.worker.WorkerImpl.run(WorkerImpl.java:216)
        at java.lang.Thread.run(Thread.java:679)
    

    I read that Jedis isnt thread-safe and in fact I dont try to re-use any Jedis clients in my Threads, I create new instances (I am refactoring this to use JedisPool).

    The exception is not consistently reproducible.

    opened by ruckus 41
  • Exception in thread

    Exception in thread "Thread-1798" redis.clients.jedis.exceptions.JedisConnectionException: java.net.SocketException: Software caused connection abort: recv failed

    Iam checking Redis Read and Write with Concurrent Users at A time(Multi-threading).it is working fine upto 380 Users and then it throws above Exception.

    Any help greatly appreciated.

    Thanks.

    opened by Pratap6 39
  • Jedis 4

    Jedis 4

    Description

    • Changes for Jedis 4

      • Made the Connection class as the base of operations, instead of Jedis class
      • Introduced ConnectionProvider
      • Introduced CommandExecutor
    • Added RedisJSON and RedisJSON 2 support

    • Added RediSearch support

    • Introduced JedisPooled, an easier to use JedisPool

    • Introduced JedisSharding, replacing ShardedJedisPool and related classes

    • Introduced ClusterPipeline and ShardedPipeline

    • Introduced ReliableTransaction

    breakingchange 
    opened by sazzad16 38
  • Jedis returning wrong values after long command execution

    Jedis returning wrong values after long command execution

    We're having a severe app/driver bug on our heavily concurrent app.

    This is a single redis installation with over 4M keys. In order to reproduce the problem, we execute a long running command from redis-cli, like a KEYS * or a DEBUG SLEEP (this is just to reproduce the problem), our client code (Jedis based) starts to throw errors, first socket read timeouts, which are expected and then it throws typical concurrency errors in Jedis, like trying to cast a string into a binary. The worst scenario is that sometimes it seems that it returns wrong keys. These errors keep occurring even after the long running command finishes.

    We were using a Jedis instance in each akka actor instance, so it shouldn't be a concurrency issue in our code (we were fairly sure that the redis connection wasn't shared between threads) but we changed to JedisPool nevertheless. But the problem remained (we are using Jedis 2.6.2).

    The usual pattern is (this is Scala):

            val redis = MicrositeActor.jedisPool.getResource()
            try {
                redis.getSet(token + ":sent", "sent") == null
            }
            finally {
              MicrositeActor.jedisPool.returnResource(redis)
            }  
    

    We use the following commands:

    get, exists, hgetAll, getSet, expire, ttl, multi/exec, set, del.

    Are you aware of any concurrency issue on any of these commands?

    We are currently evaluating other drivers, but we would really appreciate any tips regarding this.

    TIA, Martin Paoletta

    opened by mpaoletta 38
  • Add SSL support to JedisCluster

    Add SSL support to JedisCluster

    These changes add SSL support to JedisCluster. Tests have also been added. I've tried to solve issue of not being able to get SSL ports from a Redis server by introducing a configuration setting where users can specify a mapping between the ports reported by Redis and the actual SSL ports that should be used. This approach seemed the most flexible.

    opened by joroda 35
  • redis.clients.jedis.JedisException: java.net.SocketException: Bad file descriptor

    redis.clients.jedis.JedisException: java.net.SocketException: Bad file descriptor

    Hi,

    We frequently run into a "Bad file descriptor" when working with Jedis under moderate load. We're using the JedisPool and have configured testOnBorrow to true. Stack trace may look like:

    redis.clients.jedis.JedisException: java.net.SocketException: Bad file descriptor at redis.clients.jedis.Protocol.sendCommand(Protocol.java:47) at redis.clients.jedis.Protocol.sendCommand(Protocol.java:26) at redis.clients.jedis.Connection.sendCommand(Connection.java:83) at redis.clients.jedis.BinaryClient.flushAll(BinaryClient.java:116) at redis.clients.jedis.Jedis.flushAll(Jedis.java:373) .. Caused by: java.net.SocketException: Bad file descriptor at java.net.SocketOutputStream.socketWrite0(Native Method) at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92) at java.net.SocketOutputStream.write(SocketOutputStream.java:136) at redis.clients.util.RedisOutputStream.flushBuffer(RedisOutputStream.java:29) at redis.clients.util.RedisOutputStream.flush(RedisOutputStream.java:227) at redis.clients.jedis.Protocol.sendCommand(Protocol.java:45) ... 32 more

    We're using Jedis 1.5.1. Do you have any idea what may be causing this?

    /Johan

    opened by johanhaleby 34
  • Xinfo command

    Xinfo command

    Hi,

    I've noticed that xinfo command is missing so I've started to implement it. This is just to start a discussion about how this should be fixed. Currently I've implemented a single xinfo command that returns a map of <String,Objects>. This would work for any variant of xinfo (stream,groups, consumers) but it's a bit generic.

    The other idea would be to create 3 xinfo commands, returning something like XInfoStream, XInfoConsumers etc. objects. That would give a better visibility of returned values. I will be happy to work on it.

    opened by MichalCho 32
  • making Jedis compatible with CDI

    making Jedis compatible with CDI

    When using CDI and trying to produce a Jedis and JedisPool we got an exception because CDI needs default constructor to make the object proxy.

    Here is some project showing the problem: https://github.com/nykolaslima/cdiProblem

    This change creates default constructor for Jedis and JedisPool classes. This constructor should only be used by CDI, thats why I added a @Deprecated.

    opened by nykolaslima 31
  • Jedis Cluster functionalities improved (cluster-revised branch)

    Jedis Cluster functionalities improved (cluster-revised branch)

    Since there're some PRs on JedisCluster and it will be merged on 3.0.0, we can incubate cluster-revised branch for improving JedisCluster.

    Currently these PRs are merged to cluster-revised branch (updated continuously)

    • #617
      • Remove BasicCommand implementation from JedisCluster
    • #618
      • BinaryJedisCommands, ScriptingCommands, BinaryScriptingCommands
    opened by HeartSaVioR 30
  • Can't interrupt a thread doing BRPOPLPUSH.

    Can't interrupt a thread doing BRPOPLPUSH.

    I would like to be able to interrupt() a thread doing BRPOPLPUSH. Specifically, if nothing has been popped yet, I want jedis.brpoplpush() to be able to throw an InterruptedException, so the thread can die.

    This has been a source of hangs in my program, so for the moment I'm working around this with a manual while { jedis.rpoplpush(); sleep(); } that is interruptible.

    Specifically, if nothing has yet been popped (e.g., a work queue is empty), it would be good if the command could be interrupted.

    opened by apennebaker 29
  • SSL connections should support hostname verification out of the box

    SSL connections should support hostname verification out of the box

    Expected behavior

    When creating a connection using any constructor that does not take a hostname verifier, a default one should be used which actually verifies the hostname, to help avoid man in the middle attacks.

    Actual behavior

    Currently, no hostname verification is done, leading to the impression that actually everything is fine, when in reality there is a security weakness.

    Steps to reproduce:

    set up a redis node with TLS (normal as opposed to mutual TLS is sufficient), as shown below, and deploy it to the domain and then connect to it:

            JedisPooled jedis = new JedisPooled(new GenericObjectPoolConfig<>(), "something.else.at.same.ip", exposedPort, 10_000, 10_000, user, pass,
                    0, clientName, true);
        System.out.println(jedis.keys("*");
    

    The above code throws no errors. Using a hostname verifier like the one from okhttp3 however ensures that the domain name in the certificate actually matches the domain name that is requested.

    Redis / Jedis Configuration

    docker run -it --rm \
        --name redis \
        --network mynetwork \
        -v "/etc/letsencrypt/live/somedomain.ch/privkey.pem:/certs/server.key:ro" \
        -v "/etc/letsencrypt/live/somedomain.ch/fullchain.pem:/certs/server.crt:ro" \
        -v "/z/data:/data:rw" \
        --memory 300m --memory-swap 400m --cpus="2.0" \
        -e REDIS_ARGS="--loglevel notice --maxclients 200 --maxmemory 200m --maxmemory-policy noeviction --appendonly yes --appendfsync always --tls-port 6380 --tls-auth-clients no --tls-cert-file /certs/server.crt --tls-key-file /certs/server.key --requirepass asdfasdfasdfasdf" \
        redis/redis-stack:7.0.6-RC3
    

    Jedis version:

    4.3.1

    Redis version:

    7.0.6-RC3

    Java version:

    graalvm 17

    opened by maxant 1
  • `clientName` property is not validated in Jedis constructor

    `clientName` property is not validated in Jedis constructor

    clientName property is not validated in Jedis constructor, leading to non-descript errors if it contains non-permitted characters.

    Expected behavior

    When containing non-permitted characters some sort of validation should mention problems with the field (exception message)

    Actual behavior

    For JedisCluster the exception is misleading (JedisClusterOperationException) at redis.clients.jedis.providers.ClusterConnectionProvider/initializeSlotsCache (ClusterConnectionProvider.java:49). Could not initialize cluster slots cache.

    Steps to reproduce:

    Try any of the constructors that includes the clientName argument for the JedisCluster constructor

    Redis / Jedis Configuration

    cluster mode, ACL auth on

    Jedis version:

    4.4.0-m1

    Redis version:

    7.0

    Java version:

    openjdk 17.0.5 2022-10-18 OpenJDK Runtime Environment (Red_Hat-17.0.5.0.8-2.fc35) (build 17.0.5+8) OpenJDK 64-Bit Server VM (Red_Hat-17.0.5.0.8-2.fc35) (build 17.0.5+8, mixed mode, sharing)

    enhancement 
    opened by rredpoppy 0
  • Cannot get Jedis connection; nested exception is redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool

    Cannot get Jedis connection; nested exception is redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool

    I am getting "could not get a resource from the pool" exception after upgrading spring boot version from 2.5.14 to 2.7.6. Locally it is working after deploying PCF its not working when I hit the API from postman

    Below are the dependencies used in gradle file

    implementation 'org.springframework.boot:spring-boot-starter-data-redis' implementation 'redis.clients:jedis'

    Redis version: 2.7.6 Jedis Version: 3.8.0

    please help me to resolve the issue. Thank you.

    opened by maniknrp 0
  • JedisCluster read/write node behaviour

    JedisCluster read/write node behaviour

    how does JedisCluster handle the read/write nodes on Elasticache, or slave nodes on master?

    does it have separate pools for read and write? does it automatically routes read operations to slaves or replicas?

    is there any documentation on this somewhere?

    opened by bytearchive 1
  • Bump slf4j.version from 1.7.36 to 2.0.6

    Bump slf4j.version from 1.7.36 to 2.0.6

    Bumps slf4j.version from 1.7.36 to 2.0.6. Updates slf4j-api from 1.7.36 to 2.0.6

    Commits
    • 5ff6f2c prepare for release 2.0.6
    • 2f4aa75 fix SLF4J-575
    • 363f0a5 remove unused parts
    • 171679b SLF4J-574: Add full OSGi headers, especially "uses" clauses
    • 921b5b3 fix FUNDING file
    • e02244c fix FUNDING file
    • 441d458 fix FUNDING file
    • f5e741b add FUNDING file
    • 2e71327 remove unused log4j dependency in the version definition section of pom.xml
    • 3ff2a30 start work on 2.0.6-SNAPSHOT
    • Additional commits viewable in compare view

    Updates slf4j-simple from 1.7.36 to 2.0.6

    Commits
    • 5ff6f2c prepare for release 2.0.6
    • 2f4aa75 fix SLF4J-575
    • 363f0a5 remove unused parts
    • 171679b SLF4J-574: Add full OSGi headers, especially "uses" clauses
    • 921b5b3 fix FUNDING file
    • e02244c fix FUNDING file
    • 441d458 fix FUNDING file
    • f5e741b add FUNDING file
    • 2e71327 remove unused log4j dependency in the version definition section of pom.xml
    • 3ff2a30 start work on 2.0.6-SNAPSHOT
    • Additional commits viewable in compare view

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
Releases(v4.4.0-m1)
  • v4.4.0-m1(Dec 13, 2022)

    Changes

    ๐Ÿš€ New Features

    • Introduce JedisBroadcast to broadcast commands (#3194) (#3227)
    • Support pipelining from UnifiedJedis (#3221)
    • Support intermediate sync() calls in multi node pipelines (#3226)
    • Support MODULE LOADEX command (#3238)
    • Support LATENCY DOCTOR command (#3239)
    • Support CLIENT UNPAUSE command (#3237)
    • Support BITPOS command with BYTE|BIT modifier (#3236)
    • Address empty cluster slots list when discovering slots (#3195)
    • Refactor GenericObjectPool usages (#3186)
    • Easy PooledConnectionProvider with GenericObjectPoolConfig (#3183)

    ๐Ÿงช Experimental Features

    • Support FT._LIST command: ftList() method (#3197)
    • Support FT.PROFILE command (#3188)
    • Support FT.SPELLCHECK command (#3175)

    ๐Ÿ› Bug Fixes

    • Fix JedisPooled constructors missing poolConfig param (#3185)

    ๐Ÿงฐ Maintenance

    • Test: Intermediate sync() works in regular Pipeline (#3246)
    • Make org.json safely replace-able with android-json (#3242)
    • Allow exclusion of GSON dependency (#3223)
    • Test: Reduce flaky-ness of CLIENT PAUSE tests (#3243)
    • Add dependabot configuration (#3162)
    • Update test system setup (#3225)
    • Adding Javadocs to Jedis 'args' package (#3210)
    • Test: Debug cluster executor test fail (#3209)
    • Javadocs in Exception classes (#3204)
    • Test: Address memory optimizations in Redis List (#3208)
    • Refactor GenericObjectPool usages (#3186)
    • Test: Address DEFAULT_DIALECT search config change (#3184)
    • Test: Address TDIGEST.RANK changes (#3177)
    • Test: graph parser can handle inf, nan, etc (#3176)
    • Address JavaDoc warnings (#3174)
    • Release drafter formatting improvement: titles (#3173)
    • Fix RedisJSON doc for POJOs (#3200)

    Contributors

    We'd like to thank all the contributors who worked on this release!

    @sazzad16, @agavrilov76, @jgaoIXL, @chayim, @yeikel and @zeekling

    Source code(tar.gz)
    Source code(zip)
  • v4.3.1(Oct 20, 2022)

    Changes

    ๐Ÿš€ New Features

    • Support passing ClusterConnectionProvider to JedisCluster (#3169)

    ๐Ÿ› Bug Fixes

    • Catch JedisException in loop instead of JedisConnectionException (#3166)

    ๐Ÿงฐ Maintenance

    • Deprecate TOPK.COUNT command (#3167)

    Contributors

    We'd like to thank all the contributors who worked on this release!

    @ham1255 and @sazzad16

    Source code(tar.gz)
    Source code(zip)
  • v4.3.0(Oct 9, 2022)

    Changes

    4.3.0-m2 release notes 4.3.0-m1 release notes

    Following are the changes only since the last milestone release. Please check the notes for milestone releases for all changes.

    ๐Ÿงช Experimental Features

    • Support TDIGEST.[BY][REV]RANK commands (#3158)
    • Support TDIGEST.ADD changes (#3156)

    Note - changes to TDIGEST commands may be incompatible with the previous milestone releases.

    ๐Ÿ› Bug Fixes

    • Validate host and port of jedis connection (to sentinel master) (#3155)
    • Fix null property value parsing of search document (#3148)

    ๐Ÿงฐ Maintenance

    • Upgrade org.JSON to 20220320 (#3161)
    • Upgrade SLF4J to 1.7.36 (#3160)
    • Improve jedis.get doc (#3150)

    Contributors

    We'd like to thank all the contributors who worked on this release!

    @chayim, @sazzad16, @shangjin92, @shkediy and @tianshuang

    Source code(tar.gz)
    Source code(zip)
  • v4.3.0-m2(Sep 20, 2022)

    Breaking Changes

    • Separate package for RedisBloom commands (#3112)
    • Add search restrictions while setting field attribute (#3124)

    ๐Ÿงช Experimental Features

    • Support TDIGEST commands (#3097)
    • Re-work on FT.SEARCH, FT.CREATE and FT.ALTER (#3138) (#3120)
    • Migrating QueryBuilders from JRediSearch to support searching (#3107)

    ๐Ÿš€ New Features

    • Add SortingOrder argument for GeoRadius, GeoSearch (#3135)
    • Improved binary support for SET command with GET option (#3134)
    • Support remaining TS.ALTER params (#3116)
    • Adding support for custom a CommandExecutor with UnifiedJedis (#3104)
    • Make getBackoffSleepMillis in ClusterCommandExecutor nondeterministic (#3118)

    ๐Ÿ› Bug Fixes

    • Cleaning up broken connection from ClusterPipeline (#3143)
    • Fix NPE in Document#toString() (#3113)

    ๐Ÿงฐ Maintenance

    • Deprecate ASC and DESC keywords (#3136)

    Contributors

    We'd like to thank all the contributors who worked on this release!

    @adiamzn, @angelo147, @chayim and @sazzad16

    Source code(tar.gz)
    Source code(zip)
  • v4.3.0-m1(Aug 10, 2022)

    ๐Ÿ”ฅ Breaking Changes

    • Fix PENDING entries of xinfoStreamFull method (#2988)
    • Fix: return of CLUSTER REPLICAS is Array reply (#2990)
    • Reduce the verbosity of logs in PooledObjectFactory implementations (#3007)
    • Remove the unused Logger reference from HostAndPort class (#3008)

    ๐Ÿš€ New Features

    • Optimize Entities capacity to avoid reallocation (#3090)
    • Pre-allocate the results size (#3089)
    • Support new TimeSeries arguments (#3082)
    • Extend support to all arguments of FT.SEARCH and FT.AGGREGATE commands (#3054)
    • Support Graph PROFILE, EXPLAIN, SLOWLOG, LIST and CONFIG commands (#3053)
    • Support JSON.RESP command (#3052)
    • Support JSON.OBJLEN and JSON.OBJKEYS commands (#3051)
    • Support RediSearch Dictionary commands (#3034)
    • Support FT.TAGVALS command (#3033)
    • Support RediSearch Suggestion commands (#3031, #3032)
    • Support [BF/CF].[SCANDUMP/LOADCHUNK] commands (#3029)
    • Support TS.INFO command (#3023)
    • Support TS.INCRBY and TS.DECRBY commands (#3022)
    • Support TS.MADD command (#3020)
    • Support CASESENSITIVE tag in RediSearch schema (#3000)
    • Chain AS to Schema object (#2950)
    • Support 'LOAD *' in search aggregation (#3001)
    • Support JSON.DEBUG MEMORY command (#3002)
    • Support JSON.NUMINCRBY command (#3004, #3024)
    • Support RedisJSON SET/GET as plain string(s) (#3005)
    • Introduce factory MINIMUM_ID and MAXIMUM_ID for StreamEntryID (#3006)
    • Read 'inf' in graph response (#3011)

    ๐Ÿ› Bug Fixes

    • Fix NPE when stream pending message is discarded (#3094)
    • Preserve order in responses of ZDIFF, ZINTER, ZUNION commands (#3085)

    ๐Ÿงฐ Maintenance

    • Refactor JedisPool and JedisPooled constructors (#3048)

    Contributors

    We'd like to thank all the contributors who worked on this release!

    @sazzad16, @s-sathish, @gkorland and @VictoryWangCN

    Source code(tar.gz)
    Source code(zip)
  • v3.9.0(Jun 2, 2022)

    ๐Ÿ”ฅ Breaking Changes

    • Reduce the verbosity of logs in PooledObjectFactory implementations (#3007) Log levels in JedisFactory have been changed from WARN to DEBUG.
    • Fix: return of CLUSTER REPLICAS is Array reply (#2990)

    ๐Ÿš€ New Features

    • Add ShardedJedisPoolConfig (#3009)
    Source code(tar.gz)
    Source code(zip)
  • v4.2.3(May 8, 2022)

    ๐Ÿ› Bug Fixes

    • Fix: return of CLUSTER REPLICAS is Array reply (#2990)
    • Fix PENDING entries of xinfoStreamFull method (#2988)

    Contributors

    We'd like to thank all the contributors who worked on this release!

    @sazzad16, @martin-nagy and @buession

    Source code(tar.gz)
    Source code(zip)
  • v4.2.2(Apr 12, 2022)

    ๐Ÿ”ฅ Breaking Changes

    • Update FUNCTION LOAD command (due to Redis 7.0-rc3) (#2973)

    ๐Ÿ› Bug Fixes

    • Correct CommandArguments for zrevrangebyscore (#2972)
    • RediSearch commands must be sent to master nodes (#2968)

    Contributors

    We'd like to thank all the contributors who worked on this release!

    @Avital-Fine, @daphne830304, @wxzhou-gis and @sazzad16

    Source code(tar.gz)
    Source code(zip)
  • v4.2.1(Mar 31, 2022)

  • v4.2.0(Mar 23, 2022)

    ๐Ÿ”ฅ Breaking Changes

    • Only String param in Constructors is an URL (#2872)

    ๐Ÿš€ New Features

    • Support FUNCTION commands (#2878)
    • Support RedisTimeSeries module commands (#2854)
    • Support RedisBloom module commands (#2875)
    • Support RedisGraph module commands (#2941)
    • KeyValue util class and (B)(L/Z)MPOP commands (#2931)
    • Support vector similarity (#2926)
    • Support XADD auto sequence (#2947)
    • Support EXPIRETIME and PEXIRETIME commands (#2852)
    • Support [NX|XX|GT|LT] options in EXPIREAT and PEXPIREAT commands (#2874)
    • Support ACL DRYRUN command and reorder enums (#2946)
    • Support COMMAND commands (#2922)
    • Support XGROUP CREATECONSUMER command (#2919)
    • Support CONFIG GET command with multiple parameters (#2863)
    • Support CONFIG SET command with multiple parameters (#2949)
    • Support CLIENT NO-EVICT command (#2866)
    • Support BGSAVE SCHEDULE command (#2871)
    • Support MEMORY PURGE and MEMORY STATS commands (#2908)
    • Support Cluster EPOCH commands and refactor tests (#2927)
    • Support CLUSTER COUNT-FAILURE-REPORTS command (#2923)
    • Support passing arguments to MODULE LOAD command (#2918)
    • Support CF.MEXISTS command (#2951)
    • Support LCS command (#2855)

    ๐Ÿ› Bug Fixes

    • Fix wrong CommandObject called for strAlgoLCSKeys (#2859)

    ๐Ÿงฐ Changes

    • Renew cluster slots strategy update (#2643)
    • Configure socket buffer size through system property (#2915)
    • Add javadoc for DatabasePipelineCommands (#2873)
    • Delete unused interface (#2865)

    Contributors

    We'd like to thank all the contributors who worked on this release!

    @sazzad16, @Avital-Fine, @yangbodong22011, @zeekling, @doumdoum and @dengliming

    Source code(tar.gz)
    Source code(zip)
  • v4.2.0-rc1(Mar 20, 2022)

    Changes

    • Add support for RedisGraph module commands (#2941)
    • Support CF.MEXISTS command (#2951)
    • Support CONFIG SET multiple parameters (#2949)
    • Support ACL DRYRUN command and reorder enums (#2946)
    • Support XADD auto sequence (#2947)

    Contributors

    We'd like to thank all the contributors who worked on this release!

    @doumdoum and @sazzad16

    Source code(tar.gz)
    Source code(zip)
  • v4.2.0-m1(Mar 10, 2022)

    Changes

    • Support COMMAND [...] commands (#2922)
    • Support vector similarity (#2926)
    • KeyValue util class and (B)(L/Z)MPOP commands (#2931)
    • Support FUNCTION [...] commands (#2878)
    • Cluster EPOCH commands and refactor tests (#2927)
    • Support CLUSTER COUNT-FAILURE-REPORTS (#2923)
    • Support XGROUP CREATECONSUMER (#2919)
    • Support passing args to MODULE LOAD (#2918)
    • Configure socket buffer size through system property (#2915)
    • Renew cluster slots strategy update (#2643)
    • Support command MEMORY PURGE and MEMORY STATS (#2908)
    • Support RedisBloom (#2875)
    • Support [NX|XX|GT|LT] options in EXPIREAT and PEXPIREAT (#2874)
    • Add javadoc for DatabasePipelineCommands (#2873)
    • Support BGSAVE SCHEDULE command (#2871)
    • Support EXPIRETIME and PEXIRETIME (#2852)
    • support CONFIG GET parameter [parameter ...] (#2863)
    • Support CLIENT NO-EVICT (#2866)
    • Support LCS (#2855)
    • Delete unused interface (#2865)
    • Support RedisTimeSeries (#2854)

    ๐Ÿ› Bug Fixes

    • Only String param in Constructors is an URL (#2872)
    • Fix wrong CommandObject called for strAlgoLCSKeys (#2859)

    Contributors

    We'd like to thank all the contributors who worked on this release!

    @Avital-Fine, @dengliming, @sazzad16, @yangbodong22011 and @zeekling

    Source code(tar.gz)
    Source code(zip)
  • v4.1.1(Jan 31, 2022)

    ๐Ÿ› Bug Fixes

    • Fixed the problem of abnormal socket status during DNS resolution (#2849)

    ๐Ÿงฐ Maintenance

    • Fix typo in method name connectToFirstSuccsefulHost (#2853)

    Contributors

    We'd like to thank all the contributors who worked on this release!

    Thanks @leonchen83, @yangbodong22011, @andrewmcnamara for contributing.

    Source code(tar.gz)
    Source code(zip)
  • v4.1.0(Jan 26, 2022)

    ๐Ÿš€ New Features

    Support GEOSEARCH and GEOSEARCHSTORE commands (#2771) Support new ZRANGE(STORE) (#2817) Add database and some other commands in pipeline (#2832) Subscribe in JedisCluster (UnifiedJedis) (#2828) Support cluster addslotsrange and cluster delslotsrange (#2823) Support exclusive XPENDING range from params (#2830) Support CLUSTER LINKS command (#2776) Added the BYTE|BIT option for bitcount (binary) (#2768) Added the BYTE|BIT option for bitcount (string) (#2779) Support SHUTDOWN [NOW] [FORCE] [ABORT] parameters (#2812) Support XINFO STREAM FULL (#2746) ACL patterns for Pub/Sub channels (#2750) Address ACL V2 changes (#2841) Support REPLICAOF Command (#2811) Support LOLWUT command (#2800) Support SINTERCARD Command (#2821) Support SORT_RO (#2843) Address XINFO GROUPS command name (#2802)

    ๐Ÿงฐ Changes

    Tries all hosts resolved for DNS name (#2722) Fix StackOverflowError in Transaction (#2827) Polish XINFO STREAM FULL implementation (#2801) Polish #2823 (18043de) and ClusterCommandsTest (#2831) Deprecate unused interfaces (afcce7c)

    Thanks @AvitalFineRedis, @zeekling, @sazzad16, @adiamzn, @Avital-Fine for contributing.

    Source code(tar.gz)
    Source code(zip)
  • v4.0.1(Dec 29, 2021)

    ๐Ÿ› Bug Fixes

    • Fix the zrevrangeByScore max/min parameter order problem in the transaction (#2765)

    ๐Ÿงฐ Maintenance

    • Add RediSearch Pipeline Commands (#2770)

    Contributors

    We'd like to thank all the contributors who worked on this release!

    @leonchen83, @yangbodong22011, @AvitalFineRedis.

    Source code(tar.gz)
    Source code(zip)
  • v4.0.0(Dec 19, 2021)

    ๐Ÿš€ 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 the ConnectionProvider or CommandExecutor. 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 accept GenericObjectPoolConfig<Connection>.
    • Most SortedSet methods are changed to return Java List instead of Set (#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 version 1.7.32
    • Added dependency org.json:json version 20211205
    • Added dependency com.google.code.gson:gson version 2.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.

    Source code(tar.gz)
    Source code(zip)
  • v3.8.0(Dec 19, 2021)

    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 both aclLog(byte[]) and aclLog(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.

    Source code(tar.gz)
    Source code(zip)
  • v4.0.0-rc2(Dec 12, 2021)

    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

    • Bump log4j-core from 2.13.3 to 2.15.0 (#2723)
    • Address Javadoc warnings (#2730)

    ๐Ÿš€ New Features

    • Easier constructors for pipeline classes (#2731)
    Source code(tar.gz)
    Source code(zip)
  • v3.7.1(Dec 12, 2021)

    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

    • Bump log4j-core from 2.13.3 to 2.15.0 (#2723)
    • Limit Redis branch to 6.2 for Jedis branch 3 (#2714)
    • Use only SENTINEL REPLICAS in tests (#2673)
    • XADD wrong number of arguments message changed (#2672)
    • Ignore testing 'invalid multibulk length' (#2655)
    Source code(tar.gz)
    Source code(zip)
  • v4.0.0-RC1(Dec 9, 2021)

    ๐Ÿ”ฅ Breaking Changes

    • Most SortedSet methods are changed to return Java List instead of Set (#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
    Source code(tar.gz)
    Source code(zip)
  • v4.0.0-beta4(Nov 28, 2021)

    ๐Ÿš€ 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

    • Overridden Document.toString() method (#2692, #2696)
    Source code(tar.gz)
    Source code(zip)
  • v4.0.0-beta3(Nov 14, 2021)

  • v4.0.0-beta2(Nov 4, 2021)

  • v4.0.0-beta1(Oct 31, 2021)

  • v3.7.0(Aug 31, 2021)

    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!

    Source code(tar.gz)
    Source code(zip)
  • v3.7.0-RC1(Aug 25, 2021)

    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!

    Source code(tar.gz)
    Source code(zip)
  • v3.6.3(Jul 20, 2021)

  • v3.6.2(Jul 15, 2021)

  • jedis-3.6.1(Jun 13, 2021)

  • jedis-3.6.0(Apr 20, 2021)

    General Changes and Improvements

    • JDK 1.8 (#2396)
      • Jedis will not support JDK 1.7 from Jedis-3.6.0 onwards
    • Added Automatic-Module-Name to manifest (#2201)
    • Introduce Config pattern (#2368) (#2402) (#2422) (#2487)
    • Support Sentinel with TLS (#2445)
    • Add ability to reset password in JedisFactory (#2315)
    • Add support to the use of JedisSocketFactory using a pool (#2293)
    • Support Double timeout in blocking commands (#2481) (#2506)
    • Retry with backoff on cluster connection failures (#2358)

    Redis Commands and Arguments

    • Add GETDEL command (#2382)
    • Add support PXAT/EXAT arguments to SET command (#2410)
    • Add support for ZADD GT/LT options (#2411)
    • Add support INCR argument to ZADD command (#2415) (#2420)
    • Add support for getting Summary info by XPENDING (#2417) (#2420) (#2458)
    • Add support for ACL SAVE/LOAD commands (#2418)
    • Add support for GETEX command (#2419)
    • Add support CH, NX, XX arguments to GEOADD (#2421)
    • Add support AUTH2 argument to MIGRATE (#2430)
    • Add support for blocking ZPOPMAX, ZPOPMIN commands (#2425) (#2475) (#2481)
    • Add support JUSTID flag to XCLAIM command (#2428)
    • Add support for CLIENT KILL USER (#2444)
    • Add support for HRANDFIELD command (#2442)
    • Add support for CLIENT UNBLOCK command (#2424)
    • Add support for ZRANDMEMBER command (#2448)
    • XRANGE & XREVRANGE without COUNT option (#2460)
    • Add support for ZDIFF command (#2459)
    • Add ASYNC/SYNC arg to FLUSHALL and FLUSHDB (#2464)
    • Add support for ZDIFFSTORE command (#2462)
    • Add support for ZUNION command (#2468)
    • Add support MINID args to XTRIM (#2467)
    • Add NOMKSTREAM and MINID args to XADD (#2466)
    • Add support IDLE arg to XPENDING command (#2470)
    • Add support for ZINTER command (#2469)
    • Add support for LMOVE and BLMOVE commands (#2474)
    • Add support for COPY command (#2472)
    • Add support for local addr in CLIENT KILL (#2478)
    • Add support ABSTTL, IDLETIME and FREQ args to RESTORE command (#2482)
    • Add support CLIENT INFO and CLIENT LIST for specific ids (#2485)

    Bug Fixes

    • XRead(Group) Params with allowing block=0 (#2305) (#2457)
    • Fix parameter types and return types (#2396) (#2399)

    Functionality Changes

    • Disable WATCH within Transaction (#2362)
    • Deprecate JedisPoolAbstract (#2361)
    • Avoid QUIT for broken connections (#2336)
    • Deprecate SYNC command (#2507)
    • Deprecate ShardedJedisPipeline class (#2508)

    Maintenance

    • Add missing xreadGroup, xread to MultiKeyPipeline (#2456)
    • Set the GenericObjectPoolConfig type (#2391) (#2412)
    • Add toString method to the Params class (#2231)
    • Make getConnection() abstract method protected (#2203)
    • Split JedisClusterCommand into multiple methods (#2355)
    • Fixed the logic that prevents all cluster slot requests sent to specific instances (#1928)
    • Added Rawable interface (#2370)

    Dependency Upgrades

    • Upgrade commons pool to 2.9.0 (#2398)

    Contributors

    We'd like to thank all the contributors who worked on this release!

    @dengliming, @gkorland, @jchambers, @mina-asham, @petpetg, @sazzad16, @scholzi100, @tgrall and @walles

    Source code(tar.gz)
    Source code(zip)
Owner
Redis
Redis
A practical example to showcase Redis Streams and RediSearch in action

Redis Streams in Action A practical example to showcase Redis Streams in action. The goal is to process Twitter data in real-time for search and query

Abhishek Gupta 35 Dec 19, 2022
flink-connector-redis

github: https://github.com/future94/flink-connector-redis gitee : https://gitee.com/future94/flink-connector-redis Stargazers over time ไธบไป€ไนˆๅ†™่ฟ™ไธช้กน็›ฎ ๅฏนๆฏ”ๅ…ถไป–็š„

invalley 3 Aug 30, 2022
sql2o is a small library, which makes it easy to convert the result of your sql-statements into objects. No resultset hacking required. Kind of like an orm, but without the sql-generation capabilities. Supports named parameters.

sql2o Sql2o is a small java library, with the purpose of making database interaction easy. When fetching data from the database, the ResultSet will au

Lars Aaberg 1.1k Dec 28, 2022
Free universal database tool and SQL client

DBeaver Free multi-platform database tool for developers, SQL programmers, database administrators and analysts. Supports any database which has JDBC

DBeaver 29.8k Jan 1, 2023
Elasticsearch Java Rest Client.

JEST Jest is a Java HTTP Rest client for ElasticSearch. ElasticSearch is an Open Source (Apache 2), Distributed, RESTful, Search Engine built on top o

Searchly 2.1k Jan 1, 2023
Bad client - the sequel

delta bad skid made by a dumbass pt.3 check discord server, you should join. dev configs in there ?? check 711.club out for actual good shit hacks aut

noat 16 Dec 2, 2022
๐Ÿš€flink-sql-submit is a custom SQL submission client

??flink-sql-submit is a custom SQL submission client This is a customizable extension of the client, unlike flink's official default client.

ccinn 3 Mar 28, 2022
MapDB provides concurrent Maps, Sets and Queues backed by disk storage or off-heap-memory. It is a fast and easy to use embedded Java database engine.

MapDB: database engine MapDB combines embedded database engine and Java collections. It is free under Apache 2 license. MapDB is flexible and can be u

Jan Kotek 4.6k Dec 30, 2022
MapDB provides concurrent Maps, Sets and Queues backed by disk storage or off-heap-memory. It is a fast and easy to use embedded Java database engine.

MapDB: database engine MapDB combines embedded database engine and Java collections. It is free under Apache 2 license. MapDB is flexible and can be u

Jan Kotek 4.6k Jan 1, 2023
jdbi is designed to provide convenient tabular data access in Java; including templated SQL, parameterized and strongly typed queries, and Streams integration

The Jdbi library provides convenient, idiomatic access to relational databases in Java. Jdbi is built on top of JDBC. If your database has a JDBC driv

null 1.7k Dec 27, 2022
esProc SPL is a scripting language for data processing, with well-designed rich library functions and powerful syntax, which can be executed in a Java program through JDBC interface and computing independently.

esProc esProc is the unique name for esProc SPL package. esProc SPL is an open-source programming language for data processing, which can perform comp

null 990 Dec 27, 2022
A RatingBar library for android, you can customize size, spacing, color and image easily, and support right to left.

AndRatingBar A RatingBar library for android, you can customize size, spacing, color and image easily, and support right to left. ๅฎ‰ๅ“RatingBar็ปˆๆžๆ–นๆกˆ๏ผŒ็ปงๆ‰ฟ่‡ชๅŽŸ

dqq 271 Aug 14, 2021
Speedment is a Stream ORM Java Toolkit and Runtime

Java Stream ORM Speedment is an open source Java Stream ORM toolkit and runtime. The toolkit analyzes the metadata of an existing SQL database and aut

Speedment 2k Dec 21, 2022
Event capture and querying framework for Java

Eventsourcing for Java Enabling plurality and evolution of domain models Instead of mutating data in a database, Eventsourcing stores all changes (eve

Eventsourcing, Inc. 408 Nov 5, 2022
A lightweight and performant Java ORM alternative.

LightORM A lightweight and performant Java ORM alternative. LightORM has annotation processors so that all the integration code with the database is g

Jailson Pereira 14 Nov 22, 2022