Full Code of redis/jedis for AI

master 8ba734cf950d cached
1030 files
7.5 MB
2.0M tokens
17408 symbols
1 requests
Download .txt
Showing preview only (8,069K chars total). Download the full file or copy to clipboard to get everything.
Repository: redis/jedis
Branch: master
Commit: 8ba734cf950d
Files: 1030
Total size: 7.5 MB

Directory structure:
gitextract_6u_dou_5/

├── .github/
│   ├── CONTRIBUTING.md
│   ├── ISSUE_TEMPLATE
│   ├── actions/
│   │   └── run-tests/
│   │       └── action.yml
│   ├── codecov.yml
│   ├── dependabot.yml
│   ├── release-drafter-config.yml
│   └── workflows/
│       ├── codeql-analysis.yml
│       ├── docs.yml
│       ├── doctests.yml
│       ├── format_check.yml
│       ├── integration.yml
│       ├── release-drafter.yml
│       ├── snapshot.yml
│       ├── stale-issues.yml
│       ├── test-on-docker.yml
│       └── version-and-release.yml
├── .gitignore
├── LICENSE
├── Makefile
├── README.md
├── docs/
│   ├── Dockerfile
│   ├── README.md
│   ├── advanced-usage.md
│   ├── css/
│   │   └── extra.css
│   ├── failover.md
│   ├── faq.md
│   ├── index.md
│   ├── jedis-maven.md
│   ├── migration-guides/
│   │   ├── v3-to-v4-primitives.md
│   │   ├── v3-to-v4-zset-list.md
│   │   ├── v3-to-v4.md
│   │   ├── v4-to-v5.md
│   │   ├── v5-to-v6.md
│   │   └── v6-to-v7.md
│   ├── redisearch.md
│   ├── redisjson.md
│   ├── requirements.txt
│   ├── transactions-multi.md
│   ├── tutorials_examples.md
│   └── verifying-artifacts.md
├── formatter-pom.xml
├── hbase-formatter.xml
├── mkdocs.yml
├── pom.xml
└── src/
    ├── main/
    │   ├── java/
    │   │   └── redis/
    │   │       └── clients/
    │   │           └── jedis/
    │   │               ├── AbstractPipeline.java
    │   │               ├── AbstractTransaction.java
    │   │               ├── BinaryJedisPubSub.java
    │   │               ├── BinaryJedisShardedPubSub.java
    │   │               ├── Builder.java
    │   │               ├── BuilderFactory.java
    │   │               ├── ClientSetInfoConfig.java
    │   │               ├── ClusterCommandObjects.java
    │   │               ├── ClusterPipeline.java
    │   │               ├── CommandArguments.java
    │   │               ├── CommandFlagsRegistry.java
    │   │               ├── CommandKeyArgumentPreProcessor.java
    │   │               ├── CommandObject.java
    │   │               ├── CommandObjects.java
    │   │               ├── Connection.java
    │   │               ├── ConnectionFactory.java
    │   │               ├── ConnectionPool.java
    │   │               ├── ConnectionPoolConfig.java
    │   │               ├── DefaultJedisClientConfig.java
    │   │               ├── DefaultJedisSocketFactory.java
    │   │               ├── DefaultRedisCredentials.java
    │   │               ├── DefaultRedisCredentialsProvider.java
    │   │               ├── DriverInfo.java
    │   │               ├── Endpoint.java
    │   │               ├── GeoCoordinate.java
    │   │               ├── HostAndPort.java
    │   │               ├── HostAndPortMapper.java
    │   │               ├── Jedis.java
    │   │               ├── JedisClientConfig.java
    │   │               ├── JedisCluster.java
    │   │               ├── JedisClusterInfoCache.java
    │   │               ├── JedisFactory.java
    │   │               ├── JedisMetaInfo.java
    │   │               ├── JedisMonitor.java
    │   │               ├── JedisPool.java
    │   │               ├── JedisPoolConfig.java
    │   │               ├── JedisPooled.java
    │   │               ├── JedisPubSub.java
    │   │               ├── JedisPubSubBase.java
    │   │               ├── JedisSafeAuthenticator.java
    │   │               ├── JedisSentinelPool.java
    │   │               ├── JedisSentineled.java
    │   │               ├── JedisShardedPubSub.java
    │   │               ├── JedisShardedPubSubBase.java
    │   │               ├── JedisSocketFactory.java
    │   │               ├── Module.java
    │   │               ├── MultiDbClient.java
    │   │               ├── MultiDbConfig.java
    │   │               ├── MultiNodePipelineBase.java
    │   │               ├── Pipeline.java
    │   │               ├── PipeliningBase.java
    │   │               ├── Protocol.java
    │   │               ├── RedisClient.java
    │   │               ├── RedisClusterClient.java
    │   │               ├── RedisCredentials.java
    │   │               ├── RedisCredentialsProvider.java
    │   │               ├── RedisProtocol.java
    │   │               ├── RedisSentinelClient.java
    │   │               ├── ReliableTransaction.java
    │   │               ├── Response.java
    │   │               ├── SSLSocketWrapper.java
    │   │               ├── ScanIteration.java
    │   │               ├── SslOptions.java
    │   │               ├── SslVerifyMode.java
    │   │               ├── StaticCommandFlagsRegistry.java
    │   │               ├── StaticCommandFlagsRegistryInitializer.java
    │   │               ├── StreamEntryID.java
    │   │               ├── Transaction.java
    │   │               ├── UnifiedJedis.java
    │   │               ├── annots/
    │   │               │   ├── Experimental.java
    │   │               │   ├── Internal.java
    │   │               │   └── VisibleForTesting.java
    │   │               ├── args/
    │   │               │   ├── BitCountOption.java
    │   │               │   ├── BitOP.java
    │   │               │   ├── ClientAttributeOption.java
    │   │               │   ├── ClientPauseMode.java
    │   │               │   ├── ClientType.java
    │   │               │   ├── ClusterFailoverOption.java
    │   │               │   ├── ClusterResetType.java
    │   │               │   ├── ExpiryOption.java
    │   │               │   ├── FlushMode.java
    │   │               │   ├── FunctionRestorePolicy.java
    │   │               │   ├── GeoUnit.java
    │   │               │   ├── HotkeysMetric.java
    │   │               │   ├── LatencyEvent.java
    │   │               │   ├── ListDirection.java
    │   │               │   ├── ListPosition.java
    │   │               │   ├── Rawable.java
    │   │               │   ├── RawableFactory.java
    │   │               │   ├── SaveMode.java
    │   │               │   ├── SortedSetOption.java
    │   │               │   ├── SortingOrder.java
    │   │               │   ├── StreamDeletionPolicy.java
    │   │               │   ├── UnblockType.java
    │   │               │   └── package-info.java
    │   │               ├── authentication/
    │   │               │   ├── AuthXEventListener.java
    │   │               │   ├── AuthXManager.java
    │   │               │   ├── JedisAuthenticationException.java
    │   │               │   └── TokenCredentials.java
    │   │               ├── bloom/
    │   │               │   ├── BFInsertParams.java
    │   │               │   ├── BFReserveParams.java
    │   │               │   ├── CFInsertParams.java
    │   │               │   ├── CFReserveParams.java
    │   │               │   ├── RedisBloomProtocol.java
    │   │               │   ├── TDigestMergeParams.java
    │   │               │   ├── commands/
    │   │               │   │   ├── BloomFilterCommands.java
    │   │               │   │   ├── BloomFilterPipelineCommands.java
    │   │               │   │   ├── CountMinSketchCommands.java
    │   │               │   │   ├── CountMinSketchPipelineCommands.java
    │   │               │   │   ├── CuckooFilterCommands.java
    │   │               │   │   ├── CuckooFilterPipelineCommands.java
    │   │               │   │   ├── RedisBloomCommands.java
    │   │               │   │   ├── RedisBloomPipelineCommands.java
    │   │               │   │   ├── TDigestSketchCommands.java
    │   │               │   │   ├── TDigestSketchPipelineCommands.java
    │   │               │   │   ├── TopKFilterCommands.java
    │   │               │   │   ├── TopKFilterPipelineCommands.java
    │   │               │   │   └── package-info.java
    │   │               │   └── package-info.java
    │   │               ├── builders/
    │   │               │   ├── AbstractClientBuilder.java
    │   │               │   ├── ClusterClientBuilder.java
    │   │               │   ├── MultiDbClientBuilder.java
    │   │               │   ├── SentinelClientBuilder.java
    │   │               │   └── StandaloneClientBuilder.java
    │   │               ├── commands/
    │   │               │   ├── AccessControlLogBinaryCommands.java
    │   │               │   ├── AccessControlLogCommands.java
    │   │               │   ├── BitBinaryCommands.java
    │   │               │   ├── BitCommands.java
    │   │               │   ├── BitPipelineBinaryCommands.java
    │   │               │   ├── BitPipelineCommands.java
    │   │               │   ├── ClientBinaryCommands.java
    │   │               │   ├── ClientCommands.java
    │   │               │   ├── ClusterCommands.java
    │   │               │   ├── CommandCommands.java
    │   │               │   ├── ConfigCommands.java
    │   │               │   ├── ControlBinaryCommands.java
    │   │               │   ├── ControlCommands.java
    │   │               │   ├── DatabaseCommands.java
    │   │               │   ├── DatabasePipelineCommands.java
    │   │               │   ├── FunctionBinaryCommands.java
    │   │               │   ├── FunctionCommands.java
    │   │               │   ├── FunctionPipelineBinaryCommands.java
    │   │               │   ├── FunctionPipelineCommands.java
    │   │               │   ├── GenericControlCommands.java
    │   │               │   ├── GeoBinaryCommands.java
    │   │               │   ├── GeoCommands.java
    │   │               │   ├── GeoPipelineBinaryCommands.java
    │   │               │   ├── GeoPipelineCommands.java
    │   │               │   ├── HashBinaryCommands.java
    │   │               │   ├── HashCommands.java
    │   │               │   ├── HashPipelineBinaryCommands.java
    │   │               │   ├── HashPipelineCommands.java
    │   │               │   ├── HyperLogLogBinaryCommands.java
    │   │               │   ├── HyperLogLogCommands.java
    │   │               │   ├── HyperLogLogPipelineBinaryCommands.java
    │   │               │   ├── HyperLogLogPipelineCommands.java
    │   │               │   ├── JedisBinaryCommands.java
    │   │               │   ├── JedisCommands.java
    │   │               │   ├── KeyBinaryCommands.java
    │   │               │   ├── KeyCommands.java
    │   │               │   ├── KeyPipelineBinaryCommands.java
    │   │               │   ├── KeyPipelineCommands.java
    │   │               │   ├── ListBinaryCommands.java
    │   │               │   ├── ListCommands.java
    │   │               │   ├── ListPipelineBinaryCommands.java
    │   │               │   ├── ListPipelineCommands.java
    │   │               │   ├── ModuleCommands.java
    │   │               │   ├── PipelineBinaryCommands.java
    │   │               │   ├── PipelineCommands.java
    │   │               │   ├── ProtocolCommand.java
    │   │               │   ├── RedisModuleCommands.java
    │   │               │   ├── RedisModulePipelineCommands.java
    │   │               │   ├── SampleBinaryKeyedCommands.java
    │   │               │   ├── SampleBinaryKeyedPipelineCommands.java
    │   │               │   ├── SampleKeyedCommands.java
    │   │               │   ├── SampleKeyedPipelineCommands.java
    │   │               │   ├── ScriptingControlCommands.java
    │   │               │   ├── ScriptingKeyBinaryCommands.java
    │   │               │   ├── ScriptingKeyCommands.java
    │   │               │   ├── ScriptingKeyPipelineBinaryCommands.java
    │   │               │   ├── ScriptingKeyPipelineCommands.java
    │   │               │   ├── SentinelCommands.java
    │   │               │   ├── ServerCommands.java
    │   │               │   ├── SetBinaryCommands.java
    │   │               │   ├── SetCommands.java
    │   │               │   ├── SetPipelineBinaryCommands.java
    │   │               │   ├── SetPipelineCommands.java
    │   │               │   ├── SlowlogCommands.java
    │   │               │   ├── SortedSetBinaryCommands.java
    │   │               │   ├── SortedSetCommands.java
    │   │               │   ├── SortedSetPipelineBinaryCommands.java
    │   │               │   ├── SortedSetPipelineCommands.java
    │   │               │   ├── StreamBinaryCommands.java
    │   │               │   ├── StreamCommands.java
    │   │               │   ├── StreamPipelineBinaryCommands.java
    │   │               │   ├── StreamPipelineCommands.java
    │   │               │   ├── StringBinaryCommands.java
    │   │               │   ├── StringCommands.java
    │   │               │   ├── StringPipelineBinaryCommands.java
    │   │               │   ├── StringPipelineCommands.java
    │   │               │   ├── VectorSetBinaryCommands.java
    │   │               │   ├── VectorSetCommands.java
    │   │               │   ├── VectorSetPipelineBinaryCommands.java
    │   │               │   ├── VectorSetPipelineCommands.java
    │   │               │   └── package-info.java
    │   │               ├── csc/
    │   │               │   ├── AbstractCache.java
    │   │               │   ├── Cache.java
    │   │               │   ├── CacheConfig.java
    │   │               │   ├── CacheConnection.java
    │   │               │   ├── CacheEntry.java
    │   │               │   ├── CacheFactory.java
    │   │               │   ├── CacheKey.java
    │   │               │   ├── CacheStats.java
    │   │               │   ├── Cacheable.java
    │   │               │   ├── DefaultCache.java
    │   │               │   ├── DefaultCacheable.java
    │   │               │   ├── EvictionPolicy.java
    │   │               │   ├── LRUEviction.java
    │   │               │   ├── RedisVersion.java
    │   │               │   ├── package-info.java
    │   │               │   └── util/
    │   │               │       ├── AllowAndDenyListWithStringKeys.java
    │   │               │       └── package-info.java
    │   │               ├── exceptions/
    │   │               │   ├── ClusterAggregationException.java
    │   │               │   ├── InvalidURIException.java
    │   │               │   ├── JedisAccessControlException.java
    │   │               │   ├── JedisAskDataException.java
    │   │               │   ├── JedisBroadcastException.java
    │   │               │   ├── JedisBusyException.java
    │   │               │   ├── JedisCacheException.java
    │   │               │   ├── JedisClusterException.java
    │   │               │   ├── JedisClusterOperationException.java
    │   │               │   ├── JedisConnectionException.java
    │   │               │   ├── JedisDataException.java
    │   │               │   ├── JedisException.java
    │   │               │   ├── JedisMovedDataException.java
    │   │               │   ├── JedisNoScriptException.java
    │   │               │   ├── JedisRedirectionException.java
    │   │               │   ├── JedisValidationException.java
    │   │               │   ├── UnsupportedAggregationException.java
    │   │               │   └── package-info.java
    │   │               ├── executors/
    │   │               │   ├── ClusterCommandExecutor.java
    │   │               │   ├── CommandExecutor.java
    │   │               │   ├── ConnectionResolver.java
    │   │               │   ├── ConnectionResolverFactory.java
    │   │               │   ├── DefaultCommandExecutor.java
    │   │               │   ├── ReplicaOnlyConnectionResolver.java
    │   │               │   ├── RetryableCommandExecutor.java
    │   │               │   ├── RoundRobinConnectionResolver.java
    │   │               │   ├── SimpleCommandExecutor.java
    │   │               │   ├── SingleConnectionResolver.java
    │   │               │   ├── SlotBasedConnectionResolver.java
    │   │               │   ├── aggregators/
    │   │               │   │   ├── Aggregator.java
    │   │               │   │   ├── ClusterReplyAggregator.java
    │   │               │   │   ├── DefaultPolicyAggregator.java
    │   │               │   │   ├── FirstNonNullAggregator.java
    │   │               │   │   ├── JedisByteHashMapAggregator.java
    │   │               │   │   ├── JedisByteMapAggregator.java
    │   │               │   │   ├── ListAggregator.java
    │   │               │   │   ├── LogicalAndAggregator.java
    │   │               │   │   ├── LogicalBinaryAggregator.java
    │   │               │   │   ├── LogicalOrAggregator.java
    │   │               │   │   ├── MapAggregator.java
    │   │               │   │   ├── MaxAggregator.java
    │   │               │   │   ├── MinAggregator.java
    │   │               │   │   ├── MultiNodeResultAggregator.java
    │   │               │   │   ├── SetAggregator.java
    │   │               │   │   └── SumAggregator.java
    │   │               │   └── package-info.java
    │   │               ├── json/
    │   │               │   ├── DefaultGsonObjectMapper.java
    │   │               │   ├── JsonBuilderFactory.java
    │   │               │   ├── JsonObjectMapper.java
    │   │               │   ├── JsonProtocol.java
    │   │               │   ├── JsonSetParams.java
    │   │               │   ├── Path.java
    │   │               │   ├── Path2.java
    │   │               │   ├── commands/
    │   │               │   │   ├── RedisJsonCommands.java
    │   │               │   │   ├── RedisJsonPipelineCommands.java
    │   │               │   │   ├── RedisJsonV1Commands.java
    │   │               │   │   ├── RedisJsonV1PipelineCommands.java
    │   │               │   │   ├── RedisJsonV2Commands.java
    │   │               │   │   └── RedisJsonV2PipelineCommands.java
    │   │               │   └── package-info.java
    │   │               ├── mcf/
    │   │               │   ├── CircuitBreakerThresholdsAdapter.java
    │   │               │   ├── ConnectionFailoverException.java
    │   │               │   ├── ConnectionInitializationContext.java
    │   │               │   ├── DatabaseSwitchEvent.java
    │   │               │   ├── HealthCheck.java
    │   │               │   ├── HealthCheckCollection.java
    │   │               │   ├── HealthCheckImpl.java
    │   │               │   ├── HealthCheckStrategy.java
    │   │               │   ├── HealthStatus.java
    │   │               │   ├── HealthStatusChangeEvent.java
    │   │               │   ├── HealthStatusListener.java
    │   │               │   ├── HealthStatusManager.java
    │   │               │   ├── InitializationPolicy.java
    │   │               │   ├── JedisFailoverException.java
    │   │               │   ├── LagAwareStrategy.java
    │   │               │   ├── MultiDbCommandExecutor.java
    │   │               │   ├── MultiDbConnectionProvider.java
    │   │               │   ├── MultiDbConnectionSupplier.java
    │   │               │   ├── MultiDbFailoverBase.java
    │   │               │   ├── MultiDbPipeline.java
    │   │               │   ├── MultiDbTransaction.java
    │   │               │   ├── PingStrategy.java
    │   │               │   ├── ProbingPolicy.java
    │   │               │   ├── RedisRestAPI.java
    │   │               │   ├── StatusTracker.java
    │   │               │   ├── SwitchReason.java
    │   │               │   ├── TrackingConnectionPool.java
    │   │               │   └── package-info.java
    │   │               ├── params/
    │   │               │   ├── BaseGetExParams.java
    │   │               │   ├── BaseSetExParams.java
    │   │               │   ├── BitPosParams.java
    │   │               │   ├── ClientKillParams.java
    │   │               │   ├── CommandListFilterByParams.java
    │   │               │   ├── FailoverParams.java
    │   │               │   ├── GeoAddParams.java
    │   │               │   ├── GeoRadiusParam.java
    │   │               │   ├── GeoRadiusStoreParam.java
    │   │               │   ├── GeoSearchParam.java
    │   │               │   ├── GetExParams.java
    │   │               │   ├── HGetExParams.java
    │   │               │   ├── HSetExParams.java
    │   │               │   ├── HotkeysParams.java
    │   │               │   ├── IParams.java
    │   │               │   ├── LCSParams.java
    │   │               │   ├── LPosParams.java
    │   │               │   ├── LolwutParams.java
    │   │               │   ├── MSetExParams.java
    │   │               │   ├── MigrateParams.java
    │   │               │   ├── ModuleLoadExParams.java
    │   │               │   ├── RestoreParams.java
    │   │               │   ├── ScanParams.java
    │   │               │   ├── SetParams.java
    │   │               │   ├── ShutdownParams.java
    │   │               │   ├── SortingParams.java
    │   │               │   ├── VAddParams.java
    │   │               │   ├── VSimParams.java
    │   │               │   ├── XAddParams.java
    │   │               │   ├── XAutoClaimParams.java
    │   │               │   ├── XCfgSetParams.java
    │   │               │   ├── XClaimParams.java
    │   │               │   ├── XPendingParams.java
    │   │               │   ├── XReadGroupParams.java
    │   │               │   ├── XReadParams.java
    │   │               │   ├── XTrimParams.java
    │   │               │   ├── ZAddParams.java
    │   │               │   ├── ZIncrByParams.java
    │   │               │   ├── ZParams.java
    │   │               │   ├── ZRangeParams.java
    │   │               │   └── package-info.java
    │   │               ├── providers/
    │   │               │   ├── ClusterConnectionProvider.java
    │   │               │   ├── ConnectionProvider.java
    │   │               │   ├── ManagedConnectionProvider.java
    │   │               │   ├── PooledConnectionProvider.java
    │   │               │   ├── SentineledConnectionProvider.java
    │   │               │   └── package-info.java
    │   │               ├── resps/
    │   │               │   ├── AccessControlLogEntry.java
    │   │               │   ├── AccessControlUser.java
    │   │               │   ├── ClusterShardInfo.java
    │   │               │   ├── ClusterShardNodeInfo.java
    │   │               │   ├── CommandDocument.java
    │   │               │   ├── CommandInfo.java
    │   │               │   ├── FunctionStats.java
    │   │               │   ├── GeoRadiusResponse.java
    │   │               │   ├── HotkeysInfo.java
    │   │               │   ├── LCSMatchResult.java
    │   │               │   ├── LatencyHistoryInfo.java
    │   │               │   ├── LatencyLatestInfo.java
    │   │               │   ├── LibraryInfo.java
    │   │               │   ├── RawVector.java
    │   │               │   ├── ScanResult.java
    │   │               │   ├── Slowlog.java
    │   │               │   ├── StreamConsumerFullInfo.java
    │   │               │   ├── StreamConsumerInfo.java
    │   │               │   ├── StreamConsumersInfo.java
    │   │               │   ├── StreamEntry.java
    │   │               │   ├── StreamEntryBinary.java
    │   │               │   ├── StreamEntryDeletionResult.java
    │   │               │   ├── StreamFullInfo.java
    │   │               │   ├── StreamGroupFullInfo.java
    │   │               │   ├── StreamGroupInfo.java
    │   │               │   ├── StreamInfo.java
    │   │               │   ├── StreamPendingEntry.java
    │   │               │   ├── StreamPendingSummary.java
    │   │               │   ├── TrackingInfo.java
    │   │               │   ├── Tuple.java
    │   │               │   ├── VSimScoreAttribs.java
    │   │               │   ├── VectorInfo.java
    │   │               │   └── package-info.java
    │   │               ├── search/
    │   │               │   ├── Apply.java
    │   │               │   ├── Combiner.java
    │   │               │   ├── Combiners.java
    │   │               │   ├── Document.java
    │   │               │   ├── FTCreateParams.java
    │   │               │   ├── FTProfileParams.java
    │   │               │   ├── FTSearchParams.java
    │   │               │   ├── FTSpellCheckParams.java
    │   │               │   ├── FieldName.java
    │   │               │   ├── Filter.java
    │   │               │   ├── FtSearchIteration.java
    │   │               │   ├── IndexDataType.java
    │   │               │   ├── IndexDefinition.java
    │   │               │   ├── IndexOptions.java
    │   │               │   ├── Limit.java
    │   │               │   ├── ProfilingInfo.java
    │   │               │   ├── Query.java
    │   │               │   ├── RediSearchCommands.java
    │   │               │   ├── RediSearchPipelineCommands.java
    │   │               │   ├── RediSearchUtil.java
    │   │               │   ├── Schema.java
    │   │               │   ├── Scorer.java
    │   │               │   ├── Scorers.java
    │   │               │   ├── SearchBuilderFactory.java
    │   │               │   ├── SearchProtocol.java
    │   │               │   ├── SearchResult.java
    │   │               │   ├── aggr/
    │   │               │   │   ├── AggregationBuilder.java
    │   │               │   │   ├── AggregationResult.java
    │   │               │   │   ├── FtAggregateIteration.java
    │   │               │   │   ├── Group.java
    │   │               │   │   ├── Reducer.java
    │   │               │   │   ├── Reducers.java
    │   │               │   │   ├── Row.java
    │   │               │   │   ├── SortedField.java
    │   │               │   │   └── package-info.java
    │   │               │   ├── hybrid/
    │   │               │   │   ├── FTHybridParams.java
    │   │               │   │   ├── FTHybridPostProcessingParams.java
    │   │               │   │   ├── FTHybridSearchParams.java
    │   │               │   │   ├── FTHybridVectorParams.java
    │   │               │   │   └── HybridResult.java
    │   │               │   ├── package-info.java
    │   │               │   ├── querybuilder/
    │   │               │   │   ├── DisjunctNode.java
    │   │               │   │   ├── DisjunctUnionNode.java
    │   │               │   │   ├── DoubleRangeValue.java
    │   │               │   │   ├── GeoValue.java
    │   │               │   │   ├── IntersectNode.java
    │   │               │   │   ├── LongRangeValue.java
    │   │               │   │   ├── Node.java
    │   │               │   │   ├── OptionalNode.java
    │   │               │   │   ├── QueryBuilders.java
    │   │               │   │   ├── QueryNode.java
    │   │               │   │   ├── RangeValue.java
    │   │               │   │   ├── UnionNode.java
    │   │               │   │   ├── Value.java
    │   │               │   │   ├── ValueNode.java
    │   │               │   │   └── Values.java
    │   │               │   └── schemafields/
    │   │               │       ├── GeoField.java
    │   │               │       ├── GeoShapeField.java
    │   │               │       ├── NumericField.java
    │   │               │       ├── SchemaField.java
    │   │               │       ├── TagField.java
    │   │               │       ├── TextField.java
    │   │               │       └── VectorField.java
    │   │               ├── timeseries/
    │   │               │   ├── AggregationType.java
    │   │               │   ├── DuplicatePolicy.java
    │   │               │   ├── EncodingFormat.java
    │   │               │   ├── RedisTimeSeriesCommands.java
    │   │               │   ├── RedisTimeSeriesPipelineCommands.java
    │   │               │   ├── TSAddParams.java
    │   │               │   ├── TSAlterParams.java
    │   │               │   ├── TSArithByParams.java
    │   │               │   ├── TSCreateParams.java
    │   │               │   ├── TSDecrByParams.java
    │   │               │   ├── TSElement.java
    │   │               │   ├── TSGetParams.java
    │   │               │   ├── TSIncrByParams.java
    │   │               │   ├── TSInfo.java
    │   │               │   ├── TSMGetElement.java
    │   │               │   ├── TSMGetParams.java
    │   │               │   ├── TSMRangeElements.java
    │   │               │   ├── TSMRangeParams.java
    │   │               │   ├── TSRangeParams.java
    │   │               │   ├── TimeSeriesBuilderFactory.java
    │   │               │   ├── TimeSeriesProtocol.java
    │   │               │   └── package-info.java
    │   │               └── util/
    │   │                   ├── ByteArrayComparator.java
    │   │                   ├── CompareCondition.java
    │   │                   ├── Delay.java
    │   │                   ├── DoublePrecision.java
    │   │                   ├── IOUtils.java
    │   │                   ├── JedisAsserts.java
    │   │                   ├── JedisByteHashMap.java
    │   │                   ├── JedisByteMap.java
    │   │                   ├── JedisClusterCRC16.java
    │   │                   ├── JedisClusterHashTag.java
    │   │                   ├── JedisCommandIterationBase.java
    │   │                   ├── JedisURIHelper.java
    │   │                   ├── KeyValue.java
    │   │                   ├── LazyRawable.java
    │   │                   ├── Pool.java
    │   │                   ├── PrefixedKeyArgumentPreProcessor.java
    │   │                   ├── RedisInputStream.java
    │   │                   ├── RedisOutputStream.java
    │   │                   ├── SafeEncoder.java
    │   │                   └── package-info.java
    │   └── resources/
    │       └── redis/
    │           └── clients/
    │               └── jedis/
    │                   └── pom.properties
    └── test/
        ├── java/
        │   ├── io/
        │   │   └── redis/
        │   │       ├── examples/
        │   │       │   ├── BitMapsExample.java
        │   │       │   ├── BitfieldExample.java
        │   │       │   ├── BloomFilterExample.java
        │   │       │   ├── CMSExample.java
        │   │       │   ├── CmdsCnxmgmtExample.java
        │   │       │   ├── CmdsGenericExample.java
        │   │       │   ├── CmdsHashExample.java
        │   │       │   ├── CmdsListExample.java
        │   │       │   ├── CmdsServerMgmtExample.java
        │   │       │   ├── CmdsSetExample.java
        │   │       │   ├── CmdsSortedSetExample.java
        │   │       │   ├── CmdsStringExample.java
        │   │       │   ├── CuckooFilterExample.java
        │   │       │   ├── GeoExample.java
        │   │       │   ├── GeoIndexExample.java
        │   │       │   ├── HashExample.java
        │   │       │   ├── HomeJsonExample.java
        │   │       │   ├── HomeProbDtsExample.java
        │   │       │   ├── HyperLogLogExample.java
        │   │       │   ├── JsonExample.java
        │   │       │   ├── ListExample.java
        │   │       │   ├── PipeTransExample.java
        │   │       │   ├── QueryAggExample.java
        │   │       │   ├── QueryEmExample.java
        │   │       │   ├── QueryFtExample.java
        │   │       │   ├── QueryGeoExample.java
        │   │       │   ├── QueryRangeExample.java
        │   │       │   ├── SearchQuickstartExample.java
        │   │       │   ├── SetGetExample.java
        │   │       │   ├── SetsExample.java
        │   │       │   ├── SortedSetsExample.java
        │   │       │   ├── StreamsExample.java
        │   │       │   ├── StringExample.java
        │   │       │   ├── TDigestExample.java
        │   │       │   ├── TimeSeriesTutorialExample.java
        │   │       │   ├── TopKExample.java
        │   │       │   └── VectorSetExample.java
        │   │       └── test/
        │   │           ├── annotations/
        │   │           │   ├── ConditionalOnEnv.java
        │   │           │   ├── EnabledOnCommand.java
        │   │           │   └── SinceRedisVersion.java
        │   │           └── utils/
        │   │               ├── RedisInfo.java
        │   │               └── RedisVersion.java
        │   └── redis/
        │       └── clients/
        │           └── jedis/
        │               ├── ACLJedisPoolTest.java
        │               ├── ACLJedisSentinelPoolTest.java
        │               ├── ACLJedisTest.java
        │               ├── BuilderTest.java
        │               ├── ClusterCommandObjectsTest.java
        │               ├── ClusterPipeliningTest.java
        │               ├── ConnectionTest.java
        │               ├── DefaultJedisClientConfigTest.java
        │               ├── EndpointConfig.java
        │               ├── Endpoints.java
        │               ├── HostAndPortTest.java
        │               ├── JedisClusterCommandTest.java
        │               ├── JedisClusterInfoCacheTest.java
        │               ├── JedisClusterWithoutSetupTest.java
        │               ├── JedisPoolTest.java
        │               ├── JedisPoolUnitTest.java
        │               ├── JedisPubSubBaseTest.java
        │               ├── JedisSentinelPoolTest.java
        │               ├── JedisSentinelTest.java
        │               ├── JedisShardedPubSubBaseTest.java
        │               ├── JedisTest.java
        │               ├── ManagedConnectionProviderTest.java
        │               ├── MigratePipeliningTest.java
        │               ├── MultiDbClientTest.java
        │               ├── PipeliningTest.java
        │               ├── ProtocolTest.java
        │               ├── RedisClientTest.java
        │               ├── ReliableTransactionTest.java
        │               ├── SentineledConnectionProviderTest.java
        │               ├── StaticCommandFlagsRegistryTest.java
        │               ├── TransactionV2Test.java
        │               ├── TupleSortedSetTest.java
        │               ├── UdsTest.java
        │               ├── UnavailableConnectionTest.java
        │               ├── UnboundRedisClusterClientTest.java
        │               ├── UnboundRedisClusterClientTestBase.java
        │               ├── UnifiedJedisCustomCommandsTest.java
        │               ├── authentication/
        │               │   ├── EntraIDTestContext.java
        │               │   ├── RedisEntraIDClusterIntegrationTests.java
        │               │   ├── RedisEntraIDIntegrationTests.java
        │               │   ├── RedisEntraIDManagedIdentityIntegrationTests.java
        │               │   ├── TokenBasedAuthenticationClusterIntegrationTests.java
        │               │   ├── TokenBasedAuthenticationIntegrationTests.java
        │               │   └── TokenBasedAuthenticationUnitTests.java
        │               ├── benchmark/
        │               │   ├── CRC16Benchmark.java
        │               │   ├── GetSetBenchmark.java
        │               │   ├── PipelinedGetSetBenchmark.java
        │               │   ├── PoolBenchmark.java
        │               │   ├── ProtocolBenchmark.java
        │               │   ├── RedisClientBenchmark.java
        │               │   ├── RedisClientCSCBenchmark.java
        │               │   └── SafeEncoderBenchmark.java
        │               ├── builders/
        │               │   ├── ClientBuilderTest.java
        │               │   ├── ClusterClientBuilderTest.java
        │               │   ├── JedisClusterConstructorReflectionTest.java
        │               │   ├── JedisPooledConstructorReflectionTest.java
        │               │   ├── JedisSentineledConstructorReflectionTest.java
        │               │   ├── RedisClusterClientMigrationIntegrationTest.java
        │               │   └── UnifiedJedisConstructorReflectionTest.java
        │               ├── codegen/
        │               │   ├── CommandFlagsRegistryGenerator.java
        │               │   └── README.md
        │               ├── collections/
        │               │   ├── JedisByteHashMapTest.java
        │               │   └── SetFromListTest.java
        │               ├── commands/
        │               │   ├── CommandsTestsParameters.java
        │               │   ├── commandobjects/
        │               │   │   ├── CommandObjectsBitmapCommandsTest.java
        │               │   │   ├── CommandObjectsBloomFilterCommandsTest.java
        │               │   │   ├── CommandObjectsCountMinSketchCommandsTest.java
        │               │   │   ├── CommandObjectsCuckooFilterCommandsTest.java
        │               │   │   ├── CommandObjectsGenericCommandsTest.java
        │               │   │   ├── CommandObjectsGeospatialCommandsTest.java
        │               │   │   ├── CommandObjectsHashCommandsTest.java
        │               │   │   ├── CommandObjectsHyperloglogCommandsTest.java
        │               │   │   ├── CommandObjectsJsonCommandsTest.java
        │               │   │   ├── CommandObjectsListCommandsTest.java
        │               │   │   ├── CommandObjectsModulesTestBase.java
        │               │   │   ├── CommandObjectsScriptingCommandsTest.java
        │               │   │   ├── CommandObjectsSearchAndQueryCommandsTest.java
        │               │   │   ├── CommandObjectsServerManagementCommandsTest.java
        │               │   │   ├── CommandObjectsSetCommandsTest.java
        │               │   │   ├── CommandObjectsSortedSetCommandsTest.java
        │               │   │   ├── CommandObjectsStandaloneTestBase.java
        │               │   │   ├── CommandObjectsStreamCommandsTest.java
        │               │   │   ├── CommandObjectsStringCommandsTest.java
        │               │   │   ├── CommandObjectsTDigestCommandsTest.java
        │               │   │   ├── CommandObjectsTestBase.java
        │               │   │   ├── CommandObjectsTimeSeriesCommandsTest.java
        │               │   │   ├── CommandObjectsTopkCommandsTest.java
        │               │   │   └── Person.java
        │               │   ├── jedis/
        │               │   │   ├── AccessControlListCommandsTest.java
        │               │   │   ├── AllKindOfValuesCommandsTest.java
        │               │   │   ├── BinaryValuesCommandsTest.java
        │               │   │   ├── BitCommandsTest.java
        │               │   │   ├── ClientCommandsTest.java
        │               │   │   ├── ClusterBinaryValuesCommandsTest.java
        │               │   │   ├── ClusterCommandsTest.java
        │               │   │   ├── ClusterHotkeysCommandsTest.java
        │               │   │   ├── ClusterJedisCommandsTestBase.java
        │               │   │   ├── ClusterScriptingCommandsTest.java
        │               │   │   ├── ClusterShardedPublishSubscribeCommandsTest.java
        │               │   │   ├── ClusterValuesCommandsTest.java
        │               │   │   ├── ControlCommandsTest.java
        │               │   │   ├── FailoverCommandsTest.java
        │               │   │   ├── GeoCommandsTest.java
        │               │   │   ├── HashesCommandsTest.java
        │               │   │   ├── HotkeysCommandsTest.java
        │               │   │   ├── HyperLogLogCommandsTest.java
        │               │   │   ├── JedisCommandsTestBase.java
        │               │   │   ├── ListCommandsTest.java
        │               │   │   ├── MigrateTest.java
        │               │   │   ├── ModuleTest.java
        │               │   │   ├── ObjectCommandsTest.java
        │               │   │   ├── PublishSubscribeCommandsTest.java
        │               │   │   ├── ScriptingCommandsTest.java
        │               │   │   ├── SentinelCommandsTest.java
        │               │   │   ├── SetCommandsTest.java
        │               │   │   ├── SlowlogCommandsTest.java
        │               │   │   ├── SortedSetCommandsTest.java
        │               │   │   ├── SortingCommandsTest.java
        │               │   │   ├── StreamsBinaryCommandsTest.java
        │               │   │   ├── StreamsCommandsTest.java
        │               │   │   ├── StringValuesCommandsTest.java
        │               │   │   ├── TransactionCommandsTest.java
        │               │   │   ├── VariadicCommandsTest.java
        │               │   │   └── VectorSetCommandsTest.java
        │               │   └── unified/
        │               │       ├── AllKindOfValuesCommandsTestBase.java
        │               │       ├── BinaryValuesCommandsTestBase.java
        │               │       ├── BitCommandsTestBase.java
        │               │       ├── ExtendedVectorSetCommandsTestBase.java
        │               │       ├── FunctionCommandsTestBase.java
        │               │       ├── GeoCommandsTestBase.java
        │               │       ├── HashesCommandsTestBase.java
        │               │       ├── HotkeysCommandsTestBase.java
        │               │       ├── HyperLogLogCommandsTestBase.java
        │               │       ├── ListCommandsTestBase.java
        │               │       ├── SetCommandsTestBase.java
        │               │       ├── SortedSetCommandsTestBase.java
        │               │       ├── StreamsBinaryCommandsTestBase.java
        │               │       ├── StreamsCommandsTestBase.java
        │               │       ├── StringValuesCommandsTestBase.java
        │               │       ├── UnifiedJedisCommandsTestBase.java
        │               │       ├── VectorSetCommandsTestBase.java
        │               │       ├── client/
        │               │       │   ├── RedisClientAllKindOfValuesCommandsTest.java
        │               │       │   ├── RedisClientBinaryValuesCommandsTest.java
        │               │       │   ├── RedisClientBitCommandsTest.java
        │               │       │   ├── RedisClientCommandsTestHelper.java
        │               │       │   ├── RedisClientExtendedVectorSetCommandsTest.java
        │               │       │   ├── RedisClientGeoCommandsTest.java
        │               │       │   ├── RedisClientHashesCommandsTest.java
        │               │       │   ├── RedisClientHotkeysCommandsTest.java
        │               │       │   ├── RedisClientHyperLogLogCommandsTest.java
        │               │       │   ├── RedisClientListCommandsTest.java
        │               │       │   ├── RedisClientMiscellaneousTest.java
        │               │       │   ├── RedisClientSetCommandsTest.java
        │               │       │   ├── RedisClientSortedSetCommandsTest.java
        │               │       │   ├── RedisClientStreamsBinaryCommandsTest.java
        │               │       │   ├── RedisClientStreamsCommandsTest.java
        │               │       │   ├── RedisClientStringValuesCommandsTest.java
        │               │       │   ├── RedisClientTransactionIT.java
        │               │       │   ├── RedisClientVectorSetCommandsTest.java
        │               │       │   └── search/
        │               │       │       └── FTHybridRedisClientCommandsTest.java
        │               │       ├── cluster/
        │               │       │   ├── ClusterAllKindOfValuesCommandsTest.java
        │               │       │   ├── ClusterBinaryValuesCommandsTest.java
        │               │       │   ├── ClusterBitCommandsTest.java
        │               │       │   ├── ClusterCommandsTestHelper.java
        │               │       │   ├── ClusterExtendedVectorSetCommandsTest.java
        │               │       │   ├── ClusterFunctionCommandsTest.java
        │               │       │   ├── ClusterGeoCommandsTest.java
        │               │       │   ├── ClusterHashesCommandsTest.java
        │               │       │   ├── ClusterHotkeysCommandsTest.java
        │               │       │   ├── ClusterHyperLogLogCommandsTest.java
        │               │       │   ├── ClusterListCommandsTest.java
        │               │       │   ├── ClusterSetCommandsTest.java
        │               │       │   ├── ClusterSortedSetCommandsTest.java
        │               │       │   ├── ClusterStreamsBinaryCommandsTest.java
        │               │       │   ├── ClusterStreamsCommandsTest.java
        │               │       │   ├── ClusterStringValuesCommandsTest.java
        │               │       │   ├── ClusterVectorSetCommandsTest.java
        │               │       │   └── search/
        │               │       │       └── FTHybridCommandsClusterTest.java
        │               │       ├── pipeline/
        │               │       │   ├── BinaryStreamsPipelineCommandsTest.java
        │               │       │   ├── GeoPipelineCommandsTest.java
        │               │       │   ├── HashesPipelineCommandsTest.java
        │               │       │   ├── ListPipelineCommandsTest.java
        │               │       │   ├── PipelineCommandsTestBase.java
        │               │       │   ├── SetPipelineCommandsTest.java
        │               │       │   ├── SortedSetPipelineCommandsTest.java
        │               │       │   └── StreamsPipelineCommandsTest.java
        │               │       ├── search/
        │               │       │   └── FTHybridCommandsTestBase.java
        │               │       └── sentinel/
        │               │           └── SentinelAllKindOfValuesCommandsIT.java
        │               ├── csc/
        │               │   ├── AllowAndDenyListCacheableTest.java
        │               │   ├── ClientSideCacheFunctionalityTest.java
        │               │   ├── ClientSideCacheTestBase.java
        │               │   ├── RedisClientSideCacheTest.java
        │               │   ├── RedisClientSideCacheTestBase.java
        │               │   ├── RedisClusterClientSideCacheTest.java
        │               │   ├── RedisSentinelClientSideCacheTest.java
        │               │   ├── SSLRedisClientSideCacheTest.java
        │               │   ├── TestCache.java
        │               │   ├── UnifiedJedisClientSideCacheTestBase.java
        │               │   └── VersionTest.java
        │               ├── examples/
        │               │   ├── BroadcastCommandsToAllClusterNodes.java
        │               │   ├── GeoShapeFieldsUsageInRediSearch.java
        │               │   ├── RedisCredentialsProviderUsage.java
        │               │   └── RetryableCommandExecution.java
        │               ├── exceptions/
        │               │   ├── ExceptionsTest.java
        │               │   └── FailoverAbortedException.java
        │               ├── executors/
        │               │   ├── ClusterCommandExecutorTest.java
        │               │   ├── RetryableCommandExecutorTest.java
        │               │   └── aggregators/
        │               │       ├── ClusterReplyAggregatorTest.java
        │               │       └── MultiNodeResultAggregatorTest.java
        │               ├── failover/
        │               │   └── FailoverIntegrationTest.java
        │               ├── mcf/
        │               │   ├── ActiveActiveLocalFailoverTest.java
        │               │   ├── ConnectionInitializationContextTest.java
        │               │   ├── DatabaseEvaluateThresholdsTest.java
        │               │   ├── DefaultValuesTest.java
        │               │   ├── FailbackMechanismIntegrationTest.java
        │               │   ├── FailbackMechanismUnitTest.java
        │               │   ├── HealthCheckIntegrationTest.java
        │               │   ├── HealthCheckTest.java
        │               │   ├── InitializationPolicyTest.java
        │               │   ├── LagAwareStrategyUnitTest.java
        │               │   ├── MultiDbCircuitBreakerThresholdsTest.java
        │               │   ├── MultiDbConnectionProviderDynamicEndpointUnitTest.java
        │               │   ├── MultiDbConnectionProviderFailoverAttemptsConfigTest.java
        │               │   ├── MultiDbConnectionProviderHelper.java
        │               │   ├── MultiDbConnectionProviderInitializationTest.java
        │               │   ├── MultiDbConnectionProviderTest.java
        │               │   ├── PeriodicFailbackTest.java
        │               │   ├── PingStrategyIntegrationTest.java
        │               │   ├── RedisRestAPIIT.java
        │               │   ├── RedisRestAPIUnitTest.java
        │               │   ├── StatusTrackerTest.java
        │               │   └── TestHealthCheckStrategy.java
        │               ├── misc/
        │               │   ├── AutomaticFailoverTest.java
        │               │   ├── ClientSetInfoConfigTest.java
        │               │   ├── ClusterInitErrorTest.java
        │               │   ├── ResponsesToStringTest.java
        │               │   └── TupleTest.java
        │               ├── mocked/
        │               │   ├── MockedCommandObjectsTestBase.java
        │               │   ├── pipeline/
        │               │   │   ├── PipeliningBaseBitmapCommandsTest.java
        │               │   │   ├── PipeliningBaseBloomFilterCommandsTest.java
        │               │   │   ├── PipeliningBaseCountMinSketchCommandsTest.java
        │               │   │   ├── PipeliningBaseCuckooFilterCommandsTest.java
        │               │   │   ├── PipeliningBaseGenericCommandsTest.java
        │               │   │   ├── PipeliningBaseGeospatialCommandsTest.java
        │               │   │   ├── PipeliningBaseHashCommandsTest.java
        │               │   │   ├── PipeliningBaseHyperloglogCommandsTest.java
        │               │   │   ├── PipeliningBaseJsonCommandsTest.java
        │               │   │   ├── PipeliningBaseListCommandsTest.java
        │               │   │   ├── PipeliningBaseMiscellaneousTest.java
        │               │   │   ├── PipeliningBaseMockedTestBase.java
        │               │   │   ├── PipeliningBaseScriptingAndFunctionsCommandsTest.java
        │               │   │   ├── PipeliningBaseSearchAndQueryCommandsTest.java
        │               │   │   ├── PipeliningBaseServerManagementCommandsTest.java
        │               │   │   ├── PipeliningBaseSetCommandsTest.java
        │               │   │   ├── PipeliningBaseSortedSetCommandsTest.java
        │               │   │   ├── PipeliningBaseStreamCommandsTest.java
        │               │   │   ├── PipeliningBaseStringCommandsTest.java
        │               │   │   ├── PipeliningBaseTDigestCommandsTest.java
        │               │   │   ├── PipeliningBaseTimeSeriesCommandsTest.java
        │               │   │   └── PipeliningBaseTopKCommandsTest.java
        │               │   └── unified/
        │               │       ├── UnifiedJedisBitmapCommandsTest.java
        │               │       ├── UnifiedJedisBloomFilterCommandsTest.java
        │               │       ├── UnifiedJedisConnectionManagementCommandsTest.java
        │               │       ├── UnifiedJedisCountMinSketchCommandsTest.java
        │               │       ├── UnifiedJedisCuckooFilterCommandsTest.java
        │               │       ├── UnifiedJedisGenericCommandsTest.java
        │               │       ├── UnifiedJedisGeospatialCommandsTest.java
        │               │       ├── UnifiedJedisHashCommandsTest.java
        │               │       ├── UnifiedJedisHyperloglogCommandsTest.java
        │               │       ├── UnifiedJedisJsonCommandsTest.java
        │               │       ├── UnifiedJedisListCommandsTest.java
        │               │       ├── UnifiedJedisMockedTestBase.java
        │               │       ├── UnifiedJedisPubSubCommandsTest.java
        │               │       ├── UnifiedJedisScriptingAndFunctionsCommandsTest.java
        │               │       ├── UnifiedJedisSearchAndQueryCommandsTest.java
        │               │       ├── UnifiedJedisServerManagementCommandsTest.java
        │               │       ├── UnifiedJedisSetCommandsTest.java
        │               │       ├── UnifiedJedisSortedSetCommandsTest.java
        │               │       ├── UnifiedJedisStreamCommandsTest.java
        │               │       ├── UnifiedJedisStringCommandsTest.java
        │               │       ├── UnifiedJedisTDigestCommandsTest.java
        │               │       ├── UnifiedJedisTimeSeriesCommandsTest.java
        │               │       └── UnifiedJedisTopKCommandsTest.java
        │               ├── modules/
        │               │   ├── ConsolidatedAccessControlListCommandsTest.java
        │               │   ├── ConsolidatedConfigurationCommandsTest.java
        │               │   ├── RedisModuleCommandsTestBase.java
        │               │   ├── RedisModulesPipelineTest.java
        │               │   ├── bloom/
        │               │   │   ├── BloomTest.java
        │               │   │   ├── CMSTest.java
        │               │   │   ├── CuckooTest.java
        │               │   │   ├── TDigestTest.java
        │               │   │   └── TopKTest.java
        │               │   ├── json/
        │               │   │   ├── JsonObjects.java
        │               │   │   ├── Path2Test.java
        │               │   │   ├── PathTest.java
        │               │   │   ├── RedisJsonV1Test.java
        │               │   │   └── RedisJsonV2Test.java
        │               │   ├── search/
        │               │   │   ├── AggregationBuilderTest.java
        │               │   │   ├── AggregationTest.java
        │               │   │   ├── CreateTest.java
        │               │   │   ├── DocumentTest.java
        │               │   │   ├── JsonSearchTest.java
        │               │   │   ├── JsonSearchWithGsonTest.java
        │               │   │   ├── QueryBuilderTest.java
        │               │   │   ├── QueryTest.java
        │               │   │   ├── SchemaTest.java
        │               │   │   ├── SearchDefaultDialectTest.java
        │               │   │   ├── SearchTest.java
        │               │   │   ├── SearchWithParamsTest.java
        │               │   │   ├── SpellCheckTest.java
        │               │   │   ├── SuggestionTest.java
        │               │   │   └── UtilTest.java
        │               │   └── timeseries/
        │               │       └── TimeSeriesTest.java
        │               ├── params/
        │               │   ├── BitPosParamsTest.java
        │               │   ├── ClientKillParamsTest.java
        │               │   ├── CommandListFilterByParamsTest.java
        │               │   ├── FailoverParamsTest.java
        │               │   ├── GeoAddParamsTest.java
        │               │   ├── GetExParamsTest.java
        │               │   ├── HotkeysParamsTest.java
        │               │   ├── LCSParamsTest.java
        │               │   ├── LPosParamsTest.java
        │               │   ├── LolwutParamsTest.java
        │               │   ├── MigrateParamsTest.java
        │               │   ├── ModuleLoadExParamsTest.java
        │               │   ├── RestoreParamsTest.java
        │               │   ├── ScanParamsTest.java
        │               │   ├── SetParamsTest.java
        │               │   ├── ShutdownParamsTest.java
        │               │   ├── SortingParamsTest.java
        │               │   ├── XAddParamsTest.java
        │               │   ├── XAutoClaimParamsTest.java
        │               │   ├── XCfgSetParamsTest.java
        │               │   ├── XClaimParamsTest.java
        │               │   ├── XPendingParamsTest.java
        │               │   ├── XReadGroupParamsTest.java
        │               │   ├── XReadParamsTest.java
        │               │   ├── XTrimParamsTest.java
        │               │   ├── ZAddParamsTest.java
        │               │   ├── ZIncrByParamsTest.java
        │               │   ├── ZParamsTest.java
        │               │   └── ZRangeParamsTest.java
        │               ├── prefix/
        │               │   ├── JedisPooledPrefixedKeysTest.java
        │               │   ├── PrefixedKeysTest.java
        │               │   ├── RedisClusterPrefixedKeysTest.java
        │               │   └── RedisSentinelClientPrefixedKeysTest.java
        │               ├── providers/
        │               │   ├── HealthStatusManagerTest.java
        │               │   ├── MultiClusterPooledConnectionProviderTest.java
        │               │   ├── MultiDbProviderHealthStatusChangeTest.java
        │               │   └── SentineledConnectionProviderReconnectionTest.java
        │               ├── resps/
        │               │   ├── LibraryInfoTest.java
        │               │   └── StreamEntryDeletionResultTest.java
        │               ├── scenario/
        │               │   ├── ActiveActiveFailoverIT.java
        │               │   ├── ClusterTopologyRefreshIT.java
        │               │   ├── ConnectionInterruptionIT.java
        │               │   ├── FakeApp.java
        │               │   ├── FaultInjectionClient.java
        │               │   ├── LagAwareStrategySslIT.java
        │               │   ├── MultiThreadedFakeApp.java
        │               │   ├── RecommendedSettings.java
        │               │   └── RestEndpointUtil.java
        │               ├── search/
        │               │   └── hybrid/
        │               │       └── FTHybridPostProcessingParamsTest.java
        │               ├── tls/
        │               │   ├── ACLJedisIT.java
        │               │   ├── ACLRedisClientIT.java
        │               │   ├── ACLRedisSentinelClientIT.java
        │               │   ├── ClientAuthIT.java
        │               │   ├── ClientAuthJedisIT.java
        │               │   ├── ClientAuthRedisClientIT.java
        │               │   ├── ClientAuthRedisClusterClientIT.java
        │               │   ├── ClientAuthTestBase.java
        │               │   ├── JedisIT.java
        │               │   ├── JedisSentinelPoolIT.java
        │               │   ├── JedisTlsTestBase.java
        │               │   ├── RedisClientIT.java
        │               │   ├── RedisClientTlsTestBase.java
        │               │   ├── RedisClusterClientIT.java
        │               │   ├── RedisClusterTestBase.java
        │               │   ├── RedisSentinelClientIT.java
        │               │   ├── RedisSentinelTlsTestBase.java
        │               │   ├── SSLOptionsJedisIT.java
        │               │   ├── SSLOptionsJedisSentinelPoolIT.java
        │               │   ├── SSLOptionsRedisClientIT.java
        │               │   └── SSLOptionsRedisSentinelClientIT.java
        │               └── util/
        │                   ├── ACLTestUtil.java
        │                   ├── AssertUtil.java
        │                   ├── ByteArrayComparatorTest.java
        │                   ├── ByteArrayMapMatcher.java
        │                   ├── ByteArrayUtil.java
        │                   ├── ClientKillerUtil.java
        │                   ├── ClientTestUtil.java
        │                   ├── CommandArgumentsMatchers.java
        │                   ├── DelayTest.java
        │                   ├── EnabledOnCommandCondition.java
        │                   ├── EnvCondition.java
        │                   ├── FragmentedByteArrayInputStream.java
        │                   ├── GeoCoordinateMatcher.java
        │                   ├── GeoRadiusResponseMatcher.java
        │                   ├── JedisByteMapMatcher.java
        │                   ├── JedisClusterCRC16Test.java
        │                   ├── JedisClusterTestUtil.java
        │                   ├── JedisSentinelTestUtil.java
        │                   ├── JedisURIHelperTest.java
        │                   ├── JsonObjectMapperTestUtil.java
        │                   ├── ProtocolTestUtil.java
        │                   ├── RedisConditions.java
        │                   ├── RedisVersionCondition.java
        │                   ├── RedisVersionUtil.java
        │                   ├── ReflectionTestUtil.java
        │                   ├── StreamEntryBinaryListMatcher.java
        │                   ├── TestDataUtil.java
        │                   ├── TestEnvUtil.java
        │                   ├── TlsUtil.java
        │                   └── VectorTestUtils.java
        └── resources/
            ├── cert.pem
            ├── endpoints.json
            ├── endpoints_source.json
            ├── env/
            │   ├── cluster-unbound/
            │   │   └── config/
            │   │       ├── node-7379-8379/
            │   │       │   └── redis.conf
            │   │       ├── node-7380-8380/
            │   │       │   └── redis.conf
            │   │       ├── node-7381-8381/
            │   │       │   └── redis.conf
            │   │       ├── node-7382-8382/
            │   │       │   └── redis.conf
            │   │       └── node-7383-8383/
            │   │           └── redis.conf
            │   ├── config/
            │   │   └── redis6-7/
            │   │       └── node-sentinel-26381-36381/
            │   │           └── redis.conf
            │   ├── docker-compose.yml
            │   ├── redis-uds/
            │   │   └── config/
            │   │       └── node-0/
            │   │           └── redis.conf
            │   ├── redis1-2-5-8-sentinel/
            │   │   └── config/
            │   │       ├── node-6379-6390/
            │   │       │   └── redis.conf
            │   │       ├── node-6380/
            │   │       │   └── redis.conf
            │   │       ├── node-6383-6391/
            │   │       │   └── redis.conf
            │   │       ├── node-6386/
            │   │       │   └── redis.conf
            │   │       └── node-sentinel-26379-36379/
            │   │           └── redis.conf
            │   ├── redis9-10/
            │   │   └── config/
            │   │       ├── node-6388/
            │   │       │   └── redis.conf
            │   │       └── node-6389/
            │   │           └── redis.conf
            │   ├── sentinel-standalone2-failover/
            │   │   └── config/
            │   │       ├── node-6384/
            │   │       │   └── redis.conf
            │   │       ├── node-6385/
            │   │       │   └── redis.conf
            │   │       └── node-sentinel-26381-36381/
            │   │           └── redis.conf
            │   └── standalone2-sentinel/
            │       └── config/
            │           ├── node-6381-16381/
            │           │   └── redis.conf
            │           ├── node-6382-16382/
            │           │   └── redis.conf
            │           ├── node-sentinel-26380-36380/
            │           │   └── redis.conf
            │           └── node-sentinel-26382-36382/
            │               └── redis.conf
            ├── functions/
            │   ├── keyspaceTriggers.js
            │   ├── pingpong.js
            │   ├── streamTriggers.js
            │   ├── withConfig.js
            │   ├── withFlags.js
            │   └── workingWIthHashes.js
            ├── junit-platform.properties
            ├── logback-test.xml
            ├── redismodule.h
            └── testmodule.c

================================================
FILE CONTENTS
================================================

================================================
FILE: .github/CONTRIBUTING.md
================================================
# How to use Jedis Github Issue

* Github issues SHOULD BE USED to report bugs and for DETAILED feature requests. Everything else belongs in the [Jedis Google Group](https://groups.google.com/g/jedis_redis) or [Jedis Github Discussions](https://github.com/redis/jedis/discussions).

Please post general questions to Google Groups or Github discussions. These can be closed without response when posted to Github issues.

# How to contribute by Pull Request

1. Fork Jedis repo on github ([how to fork a repo](https://docs.github.com/en/get-started/quickstart/fork-a-repo))
2. Create a topic branch (`git checkout -b my_branch`)
3. Push to your remote branch (`git push origin my_branch`)
4. Create a pull request on github ([how to create a pull request](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request))

Create a branch with meaningful name, and do not modify the master branch directly.

Please add unit tests to validate your changes work, then ensure your changes pass all unit tests.

# Jedis Test Environment

Jedis uses a Docker-based test environment as the primary method for running tests. A simplified local environment is also available for basic testing.

Jedis integration tests use many Redis instances, so we use a `Makefile` to prepare the environment.

## Quick Start (Docker - Recommended)

Start tests with `make test`. This will:
1. Start the Docker-based test environment
2. Run all tests
3. Stop and clean up the environment

Set up test environments with `make start`, tear down those environments with `make stop`.

# Jedis Test Environment Using Docker

This guide explains how to bootstrap and manage a test environment for Jedis using Docker Compose.

## Workflow Steps
1. **Start the test environment** by running `make start` (examples below).
2. **Run tests** through your IDE, Maven, or other testing tools as needed.
3. **Stop the test environment** by running `make stop`.
   - This will stop and tear down the Docker containers running the Redis service.

# Start the Test Environment Using Docker

You can bootstrap the test environment for supported versions of Redis using the provided `make` targets.

## Option 1: Using `make` Targets
To bring up the test environment for a specific Redis version use the following command:
```bash
make start version=8.0  # Replace with desired version
```
To stop test environment:
```bash
make stop
```
To run tests using the Docker environment:
```bash
make test
```

## Option 2: Using docker compose commands directly
Docker compose file can be found in `src/test/resources/env` folder.
- **Redis 8.4 (or other versions without custom env file)**
```bash
rm -rf /tmp/redis-env-work
export REDIS_VERSION=8.4
docker compose --env-file .env -f src/test/resources/env/docker-compose.yml up
```
- **Redis 7.4, 7.2, 6.2 (versions with custom env files)**
```bash
rm -rf /tmp/redis-env-work
export REDIS_VERSION=6.2
docker compose --env-file .env --env-file .env.v6.2 -f src/test/resources/env/docker-compose.yml up
```

# Local Test Environment (Simplified)

For basic testing with a minimal local Redis setup (requires Redis to be installed locally):

```bash
make start-local   # Start local Redis instances (standalone + Unix socket)
make test-local    # Run tests against local environment
make stop-local    # Stop local Redis instances
```

**Note:** The local environment provides only the `standalone-0` endpoint and a Unix socket instance. For full test coverage, use the Docker-based environment.


# Some rules of Jedis source code

## Code Convention

* Jedis uses HBase Formatter introduced by [HBASE-5961](https://issues.apache.org/jira/browse/HBASE-5961)
* You can import code style file (located to hbase-formatter.xml) to Eclipse, IntelliJ
  * line break by column count seems not working with IntelliJ
* <strike>You can run ```make format``` anytime to reformat without IDEs</strike>
* DO NOT format the source codes within `io.redis.examples` test package.
* A test class name MUST NOT end with `Example`.

## Adding commands

* Jedis uses many interfaces to structure commands
  * planned to write documentation about it, contribution is more welcome!
* We need to add commands to all interfaces which have responsibility to expose
  * ex) We need to add ping() command to BasicCommands, and provide implementation to all of classes which implemented BasicCommands

## type <-> byte array conversion

* string <-> byte array : use SafeEncoder.encode()
  * Caution: use String.toBytes() directly will break GBK support!
* boolean, int, long, double -> byte array : use Protocol.toByteArray()

Thanks!


================================================
FILE: .github/ISSUE_TEMPLATE
================================================
<!--
Github issues should be used to report bugs and for detailed feature requests. 
Everything else belongs in the [Jedis Google Group](https://groups.google.com/g/jedis_redis) 
or [Jedis Github Discussions](https://github.com/redis/jedis/discussions).

Please post general questions to Google Groups or Github discussions. 
These can be closed without response when posted to Github issues.
-->

### Expected behavior

Write here what you're expecting ...

### Actual behavior

Write here what happens instead ...

### Steps to reproduce:

Please create a reproducible case of your problem. Make sure
that case repeats consistently and it's not random
1.
2.
3.

### Redis / Jedis Configuration

#### Jedis version:

#### Redis version:

#### Java version:






================================================
FILE: .github/actions/run-tests/action.yml
================================================
# Note: this action is used as a part of redis oss release and test automation in
# redis-developer/redis-oss-release-automation repo
name: 'Run Jedis Tests'
description: 'Run Jedis tests in a containerized environment'

inputs:
  redis_version:
    description: 'Redis version to test against'
    required: false
  client_libs_test_image_tag:
    description: 'Custom client libs test image tag to use instead of redis_version'
    required: false
    default: ''
  client_libs_test_image:
    description: 'Custom client libs test image name to use'
    required: false
    default: ''
  java_version:
    description: 'Java version to use'
    required: false
    default: '8'
  java_distribution:
    description: 'Java distribution to use'
    required: false
    default: 'temurin'
  specific_test:
    description: 'Run specific test(s) (optional)'
    required: false
    default: ''
  codecov_token:
    description: 'Codecov token for uploading coverage'
    required: false
    default: ''
  # repository and ref are reqired for correct checkout when using action
  # externally (e.g.: in redis-developer/redis-oss-release-automation)
  repository:
    description: 'Git repository to checkout'
    required: false
    default: ''
  ref:
    description: 'Git ref to checkout'
    required: false
    default: ''
  redis_env_work_dir:
    description: 'Redis env work directory'
    required: false
    default: ''
  redis_env_conf_dir:
    description: 'Redis env conf directory'
    required: false
    default: ''

runs:
  using: 'composite'
  steps:
    - name: Checkout code
      uses: actions/checkout@v4
      with:
        repository: ${{ inputs.repository }}
        ref: ${{ inputs.ref }}

    - name: Validate inputs and prepare environment
      shell: bash
      id: args
      env:
        REDIS_VERSION: ${{ inputs.redis_version }}
        CLIENT_LIBS_TEST_IMAGE: ${{ inputs.client_libs_test_image }}
        CLIENT_LIBS_TEST_IMAGE_TAG: ${{ inputs.client_libs_test_image_tag }}
        REDIS_ENV_WORK_DIR: ${{ inputs.redis_env_work_dir }}
        REDIS_ENV_CONF_DIR: ${{ inputs.redis_env_conf_dir }}
        REDIS_VERSION_LABEL: ${{ inputs.client_libs_test_image_tag || inputs.redis_version }}
      run: |
        make_args=()

        if [ -n "$CLIENT_LIBS_TEST_IMAGE" ]; then
          make_args+=(CLIENT_LIBS_TEST_IMAGE="$CLIENT_LIBS_TEST_IMAGE")
        fi

        if [ -n "$CLIENT_LIBS_TEST_IMAGE_TAG" ]; then
          make_args+=(CLIENT_LIBS_TEST_IMAGE_TAG="$CLIENT_LIBS_TEST_IMAGE_TAG")
        elif [ -n "$REDIS_VERSION" ]; then
          make_args+=(version="$REDIS_VERSION")
        else
          echo "Error: redis_version or client_libs_test_image_tag input is required"
          exit 1
        fi

        echo "make_args=${make_args[*]}" | tee -a ${GITHUB_OUTPUT}
        # either custom docker tag name or actual redis version
        echo "redis_version_label=$REDIS_VERSION_LABEL" | tee -a ${GITHUB_OUTPUT}

        if [ -z "$REDIS_ENV_CONF_DIR" ]; then
          REDIS_ENV_CONF_DIR=$(readlink -f "${{ github.action_path }}/../../../src/test/resources/env")
        fi
        echo "redis_env_conf_dir=$REDIS_ENV_CONF_DIR" | tee -a ${GITHUB_OUTPUT}

        if [ -n "$REDIS_ENV_WORK_DIR" ]; then
          echo "redis_env_work_dir=$REDIS_ENV_WORK_DIR" | tee -a ${GITHUB_OUTPUT}
        else
          REDIS_ENV_WORK_DIR=$(mktemp -du)
          echo "redis_env_work_dir=$REDIS_ENV_WORK_DIR" | tee -a ${GITHUB_OUTPUT}
        fi

    - name: Set up Java
      uses: actions/setup-java@v4
      with:
        java-version: ${{ inputs.java_version }}
        distribution: ${{ inputs.java_distribution }}

    - name: System setup
      shell: bash
      run: |
        sudo apt update
        sudo apt install -y make
        make compile-module

    - name: Cache dependencies
      uses: actions/cache@v4
      with:
        path: |
          ~/.m2/repository
          /var/cache/apt
        key: jedis-${{hashFiles('**/pom.xml')}}

    - name: Set up Docker Compose environment
      shell: bash
      run: |
        mkdir -m 777 $REDIS_ENV_WORK_DIR
        make start ${{ steps.args.outputs.make_args }}
      env:
        REDIS_ENV_CONF_DIR: ${{ steps.args.outputs.redis_env_conf_dir }}
        REDIS_ENV_WORK_DIR: ${{ steps.args.outputs.redis_env_work_dir }}

    - name: Maven offline
      shell: bash
      run: |
        mvn -q dependency:go-offline

    - name: Build docs
      shell: bash
      run: |
        mvn javadoc:jar

    - name: Run Maven tests
      shell: bash
      run: |
        export TEST_ENV_PROVIDER=oss-docker
        export TEST_WORK_FOLDER=$REDIS_ENV_WORK_DIR
        echo $TEST_WORK_FOLDER
        if [ -z "$TESTS" ]; then
          mvn -B -Dwith-param-names=true clean compile verify
        else
          mvn -B -Dwith-param-names=true -Dtest=$TESTS clean verify
        fi
      env:
        REDIS_ENV_WORK_DIR: ${{ steps.args.outputs.redis_env_work_dir }}
        JVM_OPTS: "-XX:+HeapDumpOnOutOfMemoryError -XX:+ExitOnOutOfMemoryError -XX:HeapDumpPath=${{ runner.temp }}/heapdump-${{ steps.args.outputs.redis_version_label }}.hprof"
        TESTS: ${{ inputs.specific_test }}

    - name: Upload Heap Dumps
      if: failure()
      uses: actions/upload-artifact@v4
      with:
        name: heap-dumps-${{ steps.args.outputs.redis_version_label }}
        path: ${{ runner.temp }}/heapdump-${{ steps.args.outputs.redis_version_label }}.hprof
        retention-days: 5

    - name: Upload Surefire Dump File
      uses: actions/upload-artifact@v4
      with:
        name: surefire-dumpstream
        path: target/surefire-reports/*.dumpstream

    - name: Publish Test Results
      uses: EnricoMi/publish-unit-test-result-action@v2
      if: github.actor != 'dependabot[bot]'
      with:
        files: |
          target/surefire-reports/**/*.xml
          target/failsafe-reports/**/*.xml

    - name: Collect logs on failure
      if: failure()
      shell: bash
      run: |
        echo "Collecting logs from $REDIS_ENV_WORK_DIR..."
        ls -la $REDIS_ENV_WORK_DIR
      env:
        REDIS_ENV_WORK_DIR: ${{ steps.args.outputs.redis_env_work_dir }}

    - name: Upload logs on failure
      if: failure()
      uses: actions/upload-artifact@v4
      with:
        name: redis-env-work-logs-${{ steps.args.outputs.redis_version_label }}
        path: ${{ steps.args.outputs.redis_env_work_dir }}

    - name: Tear down Docker Compose environment
      if: always()
      shell: bash
      run: |
        make stop
      continue-on-error: true

    - name: Upload merged coverage to Codecov
      if: inputs.codecov_token != ''
      uses: codecov/codecov-action@v5
      with:
        files: ./target/site/jacoco/jacoco.xml
        flags: docker-${{ steps.args.outputs.redis_version_label }}
        name: merged-coverage
        fail_ci_if_error: false
        token: ${{ inputs.codecov_token }}

    - name: Upload test results to Codecov (unit + IT)
      if: inputs.codecov_token != '' && !cancelled() && (github.event_name == 'schedule' || github.event_name == 'push' || github.event_name == 'workflow_dispatch')
      uses: codecov/test-results-action@v1
      with:
        fail_ci_if_error: false
        files: ./target/surefire-reports/TEST*,./target/failsafe-reports/TEST*
        flags: test-results-docker-${{ steps.args.outputs.redis_version_label }}
        token: ${{ inputs.codecov_token }}



================================================
FILE: .github/codecov.yml
================================================
codecov:                                    # see https://docs.codecov.com/docs/codecovyml-reference
  branch: master

coverage:
  status:                                   # see https://docs.codecov.com/docs/commit-status
    project:
      default:
        target: auto                        # minimum coverage ratio that the commit must meet to be considered a success
        threshold: 5                        # Allow the coverage to drop by <number>%, and posting a success status
        branches:
          - master
          - '[0-9].*'

comment:                                    # see https://docs.codecov.com/docs/pull-request-comments
  layout: "condensed_header, condensed_files, condensed_footer"
  behavior: new
  require_changes: true

ignore:
  - "**/*.txt"


================================================
FILE: .github/dependabot.yml
================================================
version: 2

updates:
  - package-ecosystem: "maven"
    directory: "/"
    schedule:
      interval: "weekly"


================================================
FILE: .github/release-drafter-config.yml
================================================
name-template: '$NEXT_MINOR_VERSION'
tag-template: 'v$NEXT_MINOR_VERSION'
filter-by-commitish: true
commitish: master
autolabeler:
  - label: 'maintenance'
    files:
      - '*.md'
      - '.github/*'
  - label: 'bug'
    branch:
      - '/bug-.+'
  - label: 'maintenance'
    branch:
      - '/maintenance-.+'
  - label: 'feature'
    branch:
      - '/feature-.+'
categories:
  - title: '🔥 Breaking Changes'
    labels:
      - 'breakingchange'
  - title: '🧪 Experimental Features'
    labels:
      - 'experimental'
  - title: '🚀 New Features'
    labels:
      - 'feature'
      - 'enhancement'
  - title: '🐛 Bug Fixes'
    labels:
      - 'fix'
      - 'bugfix'
      - 'bug'
      - 'BUG'
  - title: '🧰 Maintenance'
    labels:
      - 'maintenance'
      - 'dependencies'
      - 'documentation'
      - 'docs'
      - 'testing'
change-template: '- $TITLE (#$NUMBER)'
exclude-labels:
  - 'skip-changelog'
template: |
  # Changes

  $CHANGES

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

  $CONTRIBUTORS



================================================
FILE: .github/workflows/codeql-analysis.yml
================================================
name: "CodeQL"

on:
  workflow_dispatch:
  push:
    branches: [ master ]
  pull_request:
    # The branches below must be a subset of the branches above
    branches: [ master ]
  schedule:
    - cron: '31 4 * * 4'

jobs:
  analyze:
    name: Analyze
    runs-on: ubuntu-latest
    permissions:
      security-events: write
      actions: read
      contents: read

    steps:
    - name: Checkout repository
      uses: actions/checkout@v4

    # Initializes the CodeQL tools for scanning.
    - name: Initialize CodeQL
      uses: github/codeql-action/init@v3
      with:
        languages: java
        dependency-caching: true
        build-mode: manual

    - name: Set up JDK 8
      uses: actions/setup-java@v4
      with:
        distribution: temurin
        java-version: '8'
        cache: maven

    - name: Build
      run: mvn -B package

    - name: Perform CodeQL Analysis
      uses: github/codeql-action/analyze@v3


================================================
FILE: .github/workflows/docs.yml
================================================
name: Publish Docs
on:
  push:
    branches: ["master"]
permissions:
  contents: read
  pages: write
  id-token: write
concurrency:
  group: "pages"
  cancel-in-progress: false
jobs:
  build-and-deploy:
    concurrency: ci-${{ github.ref }}
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with:
          python-version: 3.13
      - name: Install dependencies
        run: |
          python -m pip install --upgrade pip
          pip install -r docs/requirements.txt
      - name: Build docs
        run: |
          mkdocs build -d docsbuild
      - name: Setup Pages
        uses: actions/configure-pages@v3
      - name: Upload artifact
        uses: actions/upload-pages-artifact@v3
        with:
          path: 'docsbuild'
      - name: Deploy to GitHub Pages
        id: deployment
        uses: actions/deploy-pages@v4


================================================
FILE: .github/workflows/doctests.yml
================================================
name: Documentation Tests

on:
  push:
    branches:
      - master
      - 'emb-examples'
  pull_request:
  workflow_dispatch:

jobs:
  doctests:
    runs-on: ubuntu-latest
    services:
      redis:
        image: redis:latest
        options: >-
          --health-cmd "redis-cli ping" --health-interval 10s --health-timeout 5s --health-retries 5
        ports:
          - 6379:6379

    steps:
      - uses: actions/checkout@v4
      - name: Cache dependencies
        uses: actions/cache@v4
        with:
          path: |
            ~/.m2/repository
            /var/cache/apt
          key: jedis-${{hashFiles('**/pom.xml')}}
      - name: Set up Java
        uses: actions/setup-java@v4
        with:
          java-version: '11'
          distribution: 'temurin'
      - name: Maven offline
        run: |
          mvn -q dependency:go-offline
      - name: Run doctests
        run: |
          mvn -Pdoctests clean compile test


================================================
FILE: .github/workflows/format_check.yml
================================================
name: Java Format Check

on:
  workflow_dispatch:
  pull_request:
    paths:
      - '**/*.java' # Only trigger for Java file changes

jobs:
  check-format:
    runs-on: ubuntu-latest

    steps:
      # Step 1: Checkout the PR code
      - name: Checkout code
        uses: actions/checkout@v3 

      # Step 2: Set up Java (if needed for format check tools)
      - name: Set up JDK
        uses: actions/setup-java@v4
        with:
          java-version: '11'
          distribution: 'temurin'

      # Step 3: Fetch latest changes
      - name: Fetch latest changes
        run: git fetch origin

      - name: Get changed Java files
        id: changed_files
        run: |
          echo "::group::Changed Java Files"
          echo Base Branch: ${{ github.event.pull_request.base.ref }}
          CHANGED_FILES=$(git diff --name-only --diff-filter=A origin/${{ github.event.pull_request.base.ref }} | grep '\.java$' || true)
          echo "$CHANGED_FILES"
          echo "::endgroup::"
          # Write the multiline content to a file
          echo "$CHANGED_FILES" > changed_files.txt

      # Step 4: Get a list of changed Java files in the PR
      - name: Check Java file format
        run: |
          # Check if the changed_files.txt exists
          if [ ! -f changed_files.txt ]; then
            echo "No changed files found."
            exit 0
          fi

          # Read the multiline content from the file
          CHANGED_FILES=$(cat changed_files.txt)

          # Ensure there are changed files
          if [ -z "$CHANGED_FILES" ]; then
            echo "No Java files changed."
          else
            echo "Processing the following changed Java files:"

            # Iterate over the CHANGED_FILES variable, assuming files are separated by newlines
            while IFS= read -r FILE; do
              # Skip empty lines if any
              if [ -n "$FILE" ]; then
                FILE_NAME=$(basename "$FILE")
                echo "Checking for $FILE_NAME"
                
                # Run your formatter validation for each file
                mvn formatter:validate -f formatter-pom.xml "-Dformatter.includes=**/$FILE_NAME"
              fi
            done <<< "$CHANGED_FILES"
          fi


================================================
FILE: .github/workflows/integration.yml
================================================
---

name: Build and Test using local environment

on:
  push:
    paths-ignore:
      - 'docs/**'
      - '**/*.md'
      - '**/*.rst'
    branches:
      - master
      - '[0-9].*'
      - 'topic/**'
  pull_request:
    branches:
      - master
      - '[0-9].*'
  schedule:
    - cron: '0 1 * * *' # nightly build
  workflow_dispatch:

jobs:

  build:
    name: Build and Test
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Set up publishing to maven central
        uses: actions/setup-java@v4
        with:
          java-version: '8'
          distribution: 'temurin'
      - name: System setup
        run: |
          sudo apt update
          sudo apt install -y make
          make system-setup
      - name: Cache dependencies
        uses: actions/cache@v4
        with:
          path: |
            ~/.m2/repository
            /var/cache/apt
          key: jedis-${{hashFiles('**/pom.xml')}}
      - name: Maven offline
        run: |
          mvn -q dependency:go-offline
      - name: Build docs
        run: |
          mvn javadoc:jar
      - name: Run tests
        run: |
          export TEST_ENV_PROVIDER=oss-local
          make test-local
        env:
          JVM_OPTS: -Xmx3200m
          TERM: dumb


================================================
FILE: .github/workflows/release-drafter.yml
================================================
name: Release Drafter

on:
  push:
    # branches to consider in the event; optional, defaults to all
    branches:
      - master
  workflow_dispatch:

jobs:
  update_release_draft:
    runs-on: ubuntu-latest
    steps:
      # Drafts your next Release notes as Pull Requests are merged into "master"
      - uses: release-drafter/release-drafter@v5
        with:
          # (Optional) specify config name to use, relative to .github/. Default: release-drafter.yml
           config-name: release-drafter-config.yml
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}



================================================
FILE: .github/workflows/snapshot.yml
================================================
---

name: Publish Snapshot

on:
  push:
    branches:
      - master
      - '[0-9].x'
  workflow_dispatch:

jobs:

  snapshot:
    name: Deploy Snapshot
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Set up publishing to maven central
        uses: actions/setup-java@v4
        with:
          java-version: '8'
          distribution: 'temurin'
          server-id: central
          server-username: MAVEN_USERNAME
          server-password: MAVEN_PASSWORD
      - name: Cache dependencies
        uses: actions/cache@v4
        with:
          path: |
            ~/.m2/repository
            /var/cache/apt
          key: jedis-${{hashFiles('**/pom.xml')}}
      - name: mvn offline
        run: |
          mvn -q dependency:go-offline
      - name: deploy
        run: |
          mvn --no-transfer-progress \
            -DskipTests deploy
        env:
          MAVEN_USERNAME: ${{secrets.OSSH_USERNAME}}
          MAVEN_PASSWORD: ${{secrets.OSSH_TOKEN}}


================================================
FILE: .github/workflows/stale-issues.yml
================================================
name: "Close stale issues"
on:
  schedule:
  - cron: "0 0 * * *"

permissions: {}
jobs:
  stale:
    permissions:
      issues: write  #  to close stale issues (actions/stale)
      pull-requests: write  #  to close stale PRs (actions/stale)

    runs-on: ubuntu-latest
    steps:
    - uses: actions/stale@v3
      with:
        repo-token: ${{ secrets.GITHUB_TOKEN }}
        stale-issue-message: 'This issue is marked stale. It will be closed in 30 days if it is not updated.'
        stale-pr-message: 'This pull request is marked stale. It will be closed in 30 days if it is not updated.'
        days-before-stale: 30
        days-before-close: 30
        stale-issue-label: "stale"
        stale-pr-label: "stale"
        operations-per-run: 10
        remove-stale-when-updated: true
        only-labels: 'waiting-for-feedback'
        exempt-issue-labels: 'feedback-provided'
        exempt-pr-labels: 'feedback-provided'
        exempt-all-milestones: true

================================================
FILE: .github/workflows/test-on-docker.yml
================================================
---

name: Build and Test using a containerized environment
run-name: "Build and Test using ${{ github.event.inputs.client_libs_test_image_tag != '' && format('image: {0}', github.event.inputs.client_libs_test_image_tag) || 'a containerized environment' }}"

on:
  push:
    paths-ignore:
      - 'docs/**'
      - '**/*.md'
      - '**/*.rst'
    branches:
      - master
      - '[0-9].*'
      - 'feature/**'
      - 'topic/**'
  pull_request:
    branches:
      - master
      - '[0-9].*'
      - 'feature/**'
  schedule:
    - cron: '0 1 * * *' # nightly build
  workflow_dispatch:
    inputs:
      specific_test:
        description: 'Run specific test(s) (optional)'
        required: false
        default: ''
      client_libs_test_image_tag:
        description: 'Custom client libs test image tag to use instead of redis_version'
        required: false
        default: ''
jobs:

  build:
    name: Build and Test
    if: github.event.inputs.client_libs_test_image_tag == ''
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        redis_version:
          - "8.6"
          - "8.4"
          - "8.2"
          - "8.0"
          - "7.4"
          - "7.2"
          # - "6.2"
    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - uses: ./.github/actions/run-tests
        with:
          redis_version: ${{ matrix.redis_version }}
          specific_test: ${{ github.event.inputs.specific_test || '' }}
          codecov_token: ${{ secrets.CODECOV_TOKEN }}
          redis_env_work_dir: ${{ github.workspace }}/redis-env-work
          redis_env_conf_dir: ${{ github.workspace }}/src/test/resources/env

  build_using_custom_image:
    name: Build and Test using custom image
    if: github.event.inputs.client_libs_test_image_tag != ''
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - uses: ./.github/actions/run-tests
        with:
          client_libs_test_image_tag: ${{ github.event.inputs.client_libs_test_image_tag }}
          specific_test: ${{ github.event.inputs.specific_test || '' }}
          codecov_token: ${{ secrets.CODECOV_TOKEN }}
          redis_env_work_dir: ${{ github.workspace }}/redis-env-work
          redis_env_conf_dir: ${{ github.workspace }}/src/test/resources/env


================================================
FILE: .github/workflows/version-and-release.yml
================================================
name: Release

on:
  release:
    types: [published]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v4

      - name: get version from tag
        id: get_version
        run: |
          realversion="${GITHUB_REF/refs\/tags\//}"
          realversion="${realversion//v/}"
          echo "VERSION=$realversion" >> $GITHUB_OUTPUT

      - name: Set up publishing to maven central
        uses: actions/setup-java@v4
        with:
          java-version: '8'
          distribution: 'temurin'
          server-id: central
          server-username: MAVEN_USERNAME
          server-password: MAVEN_PASSWORD

      - name: mvn versions
        run: mvn versions:set -DnewVersion=${{ steps.get_version.outputs.VERSION }}

      - name: Install gpg key
        run: |
          cat <(echo -e "${{ secrets.OSSH_GPG_SECRET_KEY }}") | gpg --batch --import
          gpg --list-secret-keys --keyid-format LONG

      - name: Publish
        run: |
          mvn --no-transfer-progress \
            --batch-mode \
            -Dgpg.passphrase='${{ secrets.OSSH_GPG_SECRET_KEY_PASSWORD }}' \
            -DskipTests deploy -P release
        env:
          MAVEN_USERNAME: ${{secrets.OSSH_USERNAME}}
          MAVEN_PASSWORD: ${{secrets.OSSH_TOKEN}}


================================================
FILE: .gitignore
================================================
.classpath
*.iml
*.ipr
*.iws
nb*
.project
.settings/
.gradle/
target/
build/
bin/
tags
.idea
.run
*.aof
*.rdb
redis-git
appendonlydir/
.DS_Store
.vscode/settings.json


================================================
FILE: LICENSE
================================================
MIT License

Copyright (c) 2021-2023, Redis, inc.

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.


================================================
FILE: Makefile
================================================
PATH := ./redis-git/src:${PATH}

# Supported test env versions
SUPPORTED_TEST_ENV_VERSIONS := 8.6 8.4 8.2 8.0 7.4 7.2 6.2
DEFAULT_TEST_ENV_VERSION := 8.6
REDIS_ENV_WORK_DIR := $(or ${REDIS_ENV_WORK_DIR},/tmp/redis-env-work)
TOXIPROXY_IMAGE := ghcr.io/shopify/toxiproxy:2.8.0

define REDIS1_CONF
daemonize yes
protected-mode no
port 6379
requirepass foobared
user acljedis on allcommands allkeys >fizzbuzz
user deploy on allcommands allkeys >verify
pidfile /tmp/redis1.pid
logfile /tmp/redis1.log
save ""
appendonly no
enable-module-command yes
client-output-buffer-limit pubsub 256k 128k 5
endef

# UDS REDIS NODES
define REDIS_UDS
daemonize yes
protected-mode no
port 0
pidfile /tmp/redis_uds.pid
logfile /tmp/redis_uds.log
unixsocket /tmp/redis_uds.sock
unixsocketperm 777
save ""
appendonly no
endef

# UNAVAILABLE REDIS NODES
define REDIS_UNAVAILABLE_CONF
daemonize yes
protected-mode no
port 6400
pidfile /tmp/redis_unavailable.pid
logfile /tmp/redis_unavailable.log
save ""
appendonly no
endef

export REDIS1_CONF
export REDIS_UDS
export REDIS_UNAVAILABLE_CONF


start-local: cleanup compile-module
	# Simple local test env that provides only "standalone-0" endpoint and an instance listening on Unix socket
	export TEST_ENV_PROVIDER=oss-source
	echo "$$REDIS1_CONF" | redis-server -
	echo "$$REDIS_UDS" | redis-server -
	echo "$$REDIS_UNAVAILABLE_CONF" | redis-server -

cleanup:
	- rm -vf /tmp/redis*.log 2>/dev/null
	- rm dump.rdb appendonly.aof - 2>/dev/null

stop-local:
	@for pidfile in \
		/tmp/redis1.pid \
		/tmp/redis_uds.pid; do \
		if [ -f $$pidfile ]; then \
			pid=$$(cat $$pidfile); \
			if kill -0 $$pid 2>/dev/null; then \
				echo "Stopping process $$pid from $$pidfile"; \
				kill $$pid; \
				sleep 1; \
				if kill -0 $$pid 2>/dev/null; then \
					echo "PID $$pid did not exit, forcing kill"; \
					kill -9 $$pid; \
				fi; \
			fi; \
			rm -f $$pidfile; \
		fi; \
	done
	[ -f /tmp/redis_unavailable.pid ] && kill `cat /tmp/redis_unavailable.pid` || true

test-local: | start-local mvn-test-local stop-local

mvn-test-local:
	@TEST_ENV_PROVIDER=oss-source mvn -Dwith-param-names=true -Dtest=${TEST} clean verify

mvn-test:
	mvn -Dwith-param-names=true -Dtest=${TEST} clean verify

format:
	mvn java-formatter:format

system-setup:
	# Install gcc with Homebrew (macOS) or apt (Linux)
	if [ "$(shell uname)" = "Darwin" ]; then \
		brew install gcc || true; \
	else \
		sudo apt install -y gcc g++; \
	fi
	[ ! -e redis-git ] && git clone https://github.com/redis/redis.git --branch unstable --single-branch redis-git || true
	$(MAKE) -C redis-git clean
	$(MAKE) -C redis-git BUILD_TLS=yes

compile-module:
	gcc -shared -o /tmp/testmodule.so -fPIC src/test/resources/testmodule.c

# Start test environment with specific version using predefined docker compose setup

start:
	@if [ -z "$(version)" ]; then \
		version=$(arg); \
		if [ -z "$$version" ]; then \
			version="$(DEFAULT_TEST_ENV_VERSION)"; \
		fi; \
	fi; \
	if [ -n "$$CLIENT_LIBS_TEST_IMAGE_TAG" ]; then \
		echo "Using custom image tag: $$CLIENT_LIBS_TEST_IMAGE_TAG"; \
		version=""; \
	elif ! echo "$(SUPPORTED_TEST_ENV_VERSIONS)" | grep -qw "$$version"; then \
		echo "Error: Invalid version '$$version'. Supported versions are: $(SUPPORTED_TEST_ENV_VERSIONS)."; \
		exit 1; \
	fi; \
	default_env_file="src/test/resources/env/.env"; \
	custom_env_file="src/test/resources/env/.env.v$$version"; \
	env_files="--env-file $$default_env_file"; \
	if [ -f "$$custom_env_file" ]; then \
		env_files="$$env_files --env-file $$custom_env_file"; \
	fi; \
	rm -rf "$(REDIS_ENV_WORK_DIR)"; \
	mkdir -p "$(REDIS_ENV_WORK_DIR)"; \
	docker compose $$env_files -f src/test/resources/env/docker-compose.yml up -d --wait --quiet-pull; \
	echo "Started test environment with Redis version $$version. "

# Stop the test environment
stop:
	docker compose -f src/test/resources/env/docker-compose.yml down; \
	rm -rf "$(REDIS_ENV_WORK_DIR)"; \
	echo "Stopped test environment and performed cleanup."

test: | start mvn-test stop

.PHONY: test test-local start start-local stop stop-local cleanup mvn-test-local mvn-test format system-setup compile-module


================================================
FILE: README.md
================================================
# Jedis

[![Release](https://img.shields.io/github/release/redis/jedis.svg?sort=semver)](https://github.com/redis/jedis/releases/latest)
[![Maven Central](https://img.shields.io/maven-central/v/redis.clients/jedis.svg)](https://central.sonatype.com/artifact/redis.clients/jedis)
[![Javadocs](https://www.javadoc.io/badge/redis.clients/jedis.svg)](https://www.javadoc.io/doc/redis.clients/jedis)
[![MIT licensed](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/redis/jedis/blob/master/LICENSE)
[![codecov](https://codecov.io/gh/redis/jedis/branch/master/graph/badge.svg?token=pAstxAAjYo)](https://codecov.io/gh/redis/jedis)
[![Discord](https://img.shields.io/discord/697882427875393627?style=flat-square)](https://discord.gg/redis)

## What is Jedis?

Jedis is a Java client for [Redis](https://github.com/redis/redis "Redis") designed for performance and ease of use.

Are you looking for a high-level library to handle object mapping? See [redis-om-spring](https://github.com/redis/redis-om-spring)!

## How do I Redis?

[Learn for free at Redis University](https://university.redis.io/academy/)

[Try the Redis Cloud](https://redis.io/try-free/)

[Dive in developer tutorials](https://redis.io/learn/)

[Join the Redis community](https://redis.io/community/)

[Work at Redis](https://redis.io/careers/jobs/)

## Supported Redis versions

The most recent version of this library supports redis version 
[7.2](https://github.com/redis/redis/blob/7.2/00-RELEASENOTES),
[7.4](https://github.com/redis/redis/blob/7.4/00-RELEASENOTES),
[8.0](https://github.com/redis/redis/blob/8.0/00-RELEASENOTES),
[8.2](https://github.com/redis/redis/blob/8.2/00-RELEASENOTES) and
[8.4](https://github.com/redis/redis/blob/8.4/00-RELEASENOTES).

The table below highlights version compatibility of the most-recent library versions with Redis and JDK versions. Compatibility means communication features, and Redis command capabilities.


| Jedis version | Supported Redis versions              | JDK Compatibility |
|---------------|---------------------------------------|-------------------|
| 3.9+          | 5.0 to 6.2 Family of releases         | 8, 11             |
| >= 4.0        | Version 5.0 to 7.2 Family of releases | 8, 11, 17         |
| >= 5.0        | Version 6.0 to current                | 8, 11, 17, 21     |
| >= 5.2        | Version 7.2 to current                | 8, 11, 17, 21     |
| >= 6.0        | Version 7.2 to current                | 8, 11, 17, 21     |
| >= 7.0        | Version 7.2 to current                | 8, 11, 17, 21     |

## Getting started

To get started with Jedis, first add it as a dependency in your Java project. If you're using Maven, that looks like this:

```xml
<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>7.1.0</version>
</dependency>
```

To use the cutting-edge Jedis, check [here](https://redis.github.io/jedis/jedis-maven/).

Next, you'll need to connect to Redis. Consider installing a redis server with docker:

```bash
docker run -p 6379:6379 -it redis:latest
```

You can instantiate a RedisClient like so:

```java
RedisClient jedis = RedisClient.builder().hostAndPort("localhost", 6379).build();
```

Now you can send commands:

```java
jedis.sadd("planets", "Venus");
```

## Connecting to a Redis cluster

Jedis lets you connect to Redis Clusters, supporting the [Redis Cluster Specification](https://redis.io/topics/cluster-spec).
To do this, you'll need to connect using `RedisClusterClient`. See the example below:

```java
Set<HostAndPort> jedisClusterNodes = new HashSet<HostAndPort>();
jedisClusterNodes.add(new HostAndPort("127.0.0.1", 7379));
jedisClusterNodes.add(new HostAndPort("127.0.0.1", 7380));
RedisClusterClient jedis = RedisClusterClient.builder().nodes(jedisClusterNodes).build();
```

Now you can use the `RedisClusterClient` instance and send commands like you would with a standard pooled connection:

```java
jedis.sadd("planets", "Mars");
```

## Support for Redis data types

Jedis includes support for all [Redis data types](https://redis.io/docs/latest/develop/data-types/) and features such as
[JSON](https://redis.io/docs/latest/develop/data-types/json/) and [VectorSets](https://redis.io/docs/latest/develop/data-types/vector-sets/).

## Failover

Jedis supports retry and failover for your Redis deployments. This is useful when:

1. You have more than one Redis deployment. This might include two independent Redis servers or two or more Redis databases replicated across multiple [active-active Redis Enterprise](https://redis.io/docs/latest/operate/rs/databases/active-active/) clusters.
2. You want your application to connect to one deployment at a time and to fail over to the next available deployment if the first deployment becomes unavailable.

For the complete failover configuration options and examples, see the [Jedis failover docs](https://redis.github.io/jedis/failover/).

## Token-Based Authentication

Jedis supports Token-Based authentication (TBA) starting with 5.3.0 GA release. This feature is complemented by an extension library that enhances the developer experience and provides most of the components required for TBA functionality.

Notably, the extension library includes built-in support for **Microsoft EntraID**, offering a seamless integration as part of the generic solution.

For more details and examples, please refer to the [Advanced Usage](https://redis.github.io/jedis/advanced-usage/) documentation.

## Documentation

The [Jedis documentation site](https://redis.github.io/jedis/) contains several useful articles for using Jedis.

You can also check the [latest Jedis Javadocs](https://www.javadoc.io/doc/redis.clients/jedis/latest/index.html).

Some specific use-case examples can be found in [`redis.clients.jedis.examples`
package](https://github.com/redis/jedis/tree/master/src/test/java/redis/clients/jedis/examples/) of the test source codes.

## Troubleshooting

If you run into trouble or have any questions, we're here to help!

Hit us up on the [Redis Discord Server](http://discord.gg/redis) or 
[Jedis GitHub Discussions](https://github.com/redis/jedis/discussions).

## Contributing

We'd love your contributions!

Bug reports are always welcome! [You can open a bug report on GitHub](https://github.com/redis/jedis/issues/new).

You can also contribute documentation -- or anything to improve Jedis. Please see
[contribution guideline](https://github.com/redis/jedis/blob/master/.github/CONTRIBUTING.md) for more details.

## License

Jedis is licensed under the [MIT license](https://github.com/redis/jedis/blob/master/LICENSE).

## Sponsorship

[![Redis Logo](https://raw.githubusercontent.com/redis/jedis/master/redis-logo-full-color-rgb.png)](https://redis.io/)


================================================
FILE: docs/Dockerfile
================================================
FROM squidfunk/mkdocs-material
COPY requirements.txt .
RUN pip install -r requirements.txt


================================================
FILE: docs/README.md
================================================
# Jedis Documentation

This documentation uses [MkDocs](https://www.mkdocs.org/) to generate the static site.

See [mkdocs.yml](../mkdocs.yml) for the configuration. 

To develop the documentation locally, you can use the included [Dockerfile](Dockerfile) to build a container with all the 
dependencies, and run it to preview your changes:

```bash
# in docs/
docker build -t squidfunk/mkdocs-material .
# cd ..
docker run --rm -it -p 8000:8000 -v ${PWD}:/docs squidfunk/mkdocs-material 
```

================================================
FILE: docs/advanced-usage.md
================================================
# Advanced Usage

## Transactions

To do transactions in Jedis, you have to wrap operations in a transaction block, very similar to pipelining:

```java
jedis.watch (key1, key2, ...);
Transaction t = jedis.multi();
t.set("foo", "bar");
t.exec();
```

Note: when you have any method that returns values, you have to do like this:


```java
Transaction t = jedis.multi();
t.set("fool", "bar"); 
Response<String> result1 = t.get("fool");

t.zadd("foo", 1, "barowitch"); t.zadd("foo", 0, "barinsky"); t.zadd("foo", 0, "barikoviev");
Response<Set<String>> sose = t.zrange("foo", 0, -1);   // get the entire sortedset
t.exec();                                              // dont forget it

String foolbar = result1.get();                       // use Response.get() to retrieve things from a Response
int soseSize = sose.get().size();                      // on sose.get() you can directly call Set methods!

// List<Object> allResults = t.exec();                 // you could still get all results at once, as before
```
Note that a Response Object does not contain the result before t.exec() is called (it is a kind of a Future). Forgetting exec gives you exceptions. In the last lines, you see how transactions/pipelines were dealt with before version 2. You can still do it that way, but then you need to extract objects from a list, which contains also Redis status messages.

Note 2: Redis does not allow to use intermediate results of a transaction within that same transaction. This does not work:

```java
// this does not work! Intra-transaction dependencies are not supported by Redis!
jedis.watch(...);
Transaction t = jedis.multi();
if(t.get("key1").equals("something"))
   t.set("key2", "value2");
else 
   t.set("key", "value");
```

However, there are some commands like setnx, that include such a conditional execution. Those are of course supported within transactions. You can build your own customized commands using EVAL / LUA scripting. 


## Pipelining

Sometimes you need to send a bunch of different commands. A very cool way to do that, and have better performance than doing it the naive way, is to use pipelining. This way you send commands without waiting for response, and you actually read the responses at the end, which is faster. 

Here is how to do it:

```java
Pipeline p = jedis.pipelined();
p.set("fool", "bar"); 
p.zadd("foo", 1, "barowitch");  p.zadd("foo", 0, "barinsky"); p.zadd("foo", 0, "barikoviev");
Response<String> pipeString = p.get("fool");
Response<Set<String>> sose = p.zrange("foo", 0, -1);
p.sync(); 

int soseSize = sose.get().size();
Set<String> setBack = sose.get();
```
For more explanations see code comments in the transaction section.


## Publish/Subscribe

To subscribe to a channel in Redis, create an instance of JedisPubSub and call subscribe on the Jedis instance:

```java
class MyListener extends JedisPubSub {
        public void onMessage(String channel, String message) {
        }

        public void onSubscribe(String channel, int subscribedChannels) {
        }

        public void onUnsubscribe(String channel, int subscribedChannels) {
        }

        public void onPSubscribe(String pattern, int subscribedChannels) {
        }

        public void onPUnsubscribe(String pattern, int subscribedChannels) {
        }

        public void onPMessage(String pattern, String channel, String message) {
        }
}

MyListener l = new MyListener();

jedis.subscribe(l, "foo");
```
Note that subscribe is a blocking operation because it will poll Redis for responses on the thread that calls subscribe.  A single JedisPubSub instance can be used to subscribe to multiple channels.  You can call subscribe or psubscribe on an existing JedisPubSub instance to change your subscriptions.


## Monitoring

To use the monitor command you can do something like the following:

```java
new Thread(new Runnable() {
    public void run() {
        Jedis j = new Jedis("localhost");
        for (int i = 0; i < 100; i++) {
            j.incr("foobared");
            try {
                Thread.sleep(200);
            } catch (InterruptedException e) {
            }
        }
        j.disconnect();
    }
}).start();

jedis.monitor(new JedisMonitor() {
    public void onCommand(String command) {
        System.out.println(command);
    }
});
```
## Token-Based Authentication

Starting with version 5.3.0 GA, Jedis supports token-based authentication. The [redis-authx-entraid](https://github.com/redis/jvm-redis-authx-entraid) repository provides the necessary components that Jedis utilizes to enable this functionality. 

Additionally, support for Microsoft EntraID has been fully implemented and is now available as an extension for Azure Managed Redis (AMR) and Azure Cache for Redis(ACR).

### Using With Custom Identity Provider
Jedis provides a token-based authentication mechanism with a generic identity provider of your choice. 
For custom use of this feature, you will need to provide an implementation of `IdentityProvider` and `IdentityProviderConfig` and configure it in the way Jedis expects. 

You will have the required interfaces from transitive Jedis dependencies;

```
    <dependency>
        <groupId>redis.clients.authentication</groupId>
        <artifactId>redis-authx-core</artifactId>
        <version>${version}</version>
    </dependency>
```

**An example to get started:**
```java
public class YourCustomIdentityProviderConfig implements IdentityProviderConfig {
    ...
}

public class YourCustomIdentityProvider implements IdentityProvider {
    ...
}
```

Then configure Jedis like this:
```java
IdentityProviderConfig yourCustomIdentityProviderConfig = new YourCustomIdentityProviderConfig();
TokenAuthConfig tokenAuthConfig = TokenAuthConfig.builder().identityProviderConfig(yourCustomIdentityProviderConfig);

JedisClientConfig config = DefaultJedisClientConfig.builder()
                .authXManager(new AuthXManager(tokenAuthConfig)).build();
...
```
### Using With Microsoft EntraID

Extension for EntraID is fully integrated and ready to use with [Azure Managed Redis](https://azure.microsoft.com/en-us/products/managed-redis)(AMR) or [Azure Cache for Redis](https://azure.microsoft.com/en-us/products/cache/)(ACR). All you need is to add the EntraID dependency and code for configuration for chosen authentication type with Microsoft EntraID service.

To get started, add the `redis-authx-entraid` extension as dependency;

```
    <dependency>
        <groupId>redis.clients.authentication</groupId>
        <artifactId>redis-authx-entraid</artifactId>
        <version>${version}</version>
    </dependency>
```

After adding the dependency, configure it using `EntraIDTokenAuthConfigBuilder`:

```java
...
    TokenAuthConfig tokenAuthConfig = EntraIDTokenAuthConfigBuilder.builder()
        .expirationRefreshRatio(0.8F)
        .clientId("yourClientId")
        .secret("yourClientSecret")
        .authority("yourAuthority")
        .scopes("yourRedisScopes").build();

    AuthXManager authXManager = new AuthXManager(tokenAuthConfig);

    JedisClientConfig config = DefaultJedisClientConfig.builder()
        .authXManager(authXManager).build();
...
```

Here you will see the `AuthXManager` class that is built into Jedis. Essentially it integrates the extension into Jedis and handles the authentication process.  
For other available configurations, detailed information and usage of Jedis with Microsoft EntraID, please refer to the [official guide](https://redis.io/docs/latest/develop/clients/jedis/amr/)

**Setting Up AMR or ACR with Microsoft EntraID:**

To use Microsoft EntraID with AMR or ACR, for sure you will need to set up and configure your AMR/ACR services as well as Microsoft EntraID. The following resources provide useful information;

[Azure Managed Redis](https://azure.microsoft.com/en-us/products/managed-redis)

[Azure Cache for Redis](https://azure.microsoft.com/en-us/products/cache/)

[Microsoft Entra ID for AMR authentication](https://learn.microsoft.com/en-us/azure/azure-cache-for-redis/managed-redis/managed-redis-entra-for-authentication)

[Microsoft Entra ID for ACR authentication](https://learn.microsoft.com/en-us/azure/azure-cache-for-redis/cache-azure-active-directory-for-authentication)

[Use Microsoft Entra](https://learn.microsoft.com/en-us/azure/app-service/configure-authentication-provider-aad?tabs=workforce-configuration)

## HostAndPortMapper

When running Jedis in certain network environments, such as behind a NAT gateway, or within container orchestration systems like Docker or Kubernetes, the host and port that the client needs to connect to might be different from the host and port that the Redis Cluster nodes report. To handle this discrepancy, Jedis provides the `HostAndPortMapper` interface.

This allows you to dynamically map the address reported by a Redis node to a different address that the client can actually reach. You can implement this either by creating a dedicated class or by using a concise lambda expression.

### Example use case: NAT or Docker with different advertised ports
Suppose you run a Redis cluster inside Docker on a remote host.
Inside the cluster config, nodes announce addresses like:
```
172.18.0.2:6379
172.18.0.3:6379
172.18.0.4:6379
```
But externally, you reach them through the host IP with mapped ports:
```
my-redis.example.com:7001
my-redis.example.com:7002
my-redis.example.com:7003
```
### Implementing with a Dedicated Class

You can provide your mapping logic by creating a class that implements the `HostAndPortMapper` interface. This approach is useful for more complex mapping logic or for reusability.

First, define your custom mapper class:

```java
public class DockerNATMapper implements HostAndPortMapper {

    // Key: The address reported by Redis (internal).
    // Value: The address the client should connect to (external).
    private final Map<HostAndPort, HostAndPort> mapping;

    public DockerNATMapper(Map<HostAndPort, HostAndPort> mapping) {
        this.mapping = mapping;
    }

    @Override
    public HostAndPort getHostAndPort(HostAndPort hostAndPort) {
        return mapping.getOrDefault(hostAndPort, hostAndPort);
    }
}
```

Then, instantiate this class and pass it to the RedisClusterClient builder:

```java
Map<HostAndPort, HostAndPort> nodeMapping = new HashMap<>();
nodeMapping.put(new HostAndPort("172.18.0.2", 6379), new HostAndPort("my-redis.example.com", 7001));
nodeMapping.put(new HostAndPort("172.18.0.3", 6379), new HostAndPort("my-redis.example.com", 7002));
nodeMapping.put(new HostAndPort("172.18.0.4", 6379), new HostAndPort("my-redis.example.com", 7002));

Set<HostAndPort> initialNodes = new HashSet<>();
// seed node
initialNodes.add(new HostAndPort("my-redis.example.com", 7001));

HostAndPortMapper mapper = new DockerNATMapper(nodeMapping);

JedisClientConfig jedisClientConfig = DefaultJedisClientConfig.builder()
        .user("myuser")
        .password("mypassword")
        .hostAndPortMapper(mapper)
        .build();

RedisClusterClient jedisCluster = RedisClusterClient.builder()
        .nodes(initialNodes)
        .clientConfig(jedisClientConfig)
        .build();
```

Now, when RedisClusterClient discovers a node at "172.18.0.2:6379", the mapper will translate it to "localhost:7001" before attempting to connect.

### Implementing with a Lambda Expression
Since HostAndPortMapper is a functional interface (it has only one abstract method), you can also provide the implementation more concisely using a lambda expression. This is often preferred for simpler, inline mapping logic.

```java
Map<HostAndPort, HostAndPort> nodeMapping = new HashMap<>();
nodeMapping.put(new HostAndPort("172.18.0.2", 6379), new HostAndPort("my-redis.example.com", 7001));
nodeMapping.put(new HostAndPort("172.18.0.3", 6379), new HostAndPort("my-redis.example.com", 7002));
nodeMapping.put(new HostAndPort("172.18.0.4", 6379), new HostAndPort("my-redis.example.com", 7002));

Set<HostAndPort> initialNodes = new HashSet<>();
initialNodes.add(new HostAndPort("my-redis.example.com", 7001));

HostAndPortMapper mapper = internalAddress -> nodeMapping.getOrDefault(internalAddress, internalAddress);

JedisClientConfig jedisClientConfig = DefaultJedisClientConfig.builder()
        .user("myuser")
        .password("mypassword")
        .hostAndPortMapper(mapper)
        .build();

RedisClusterClient jedisCluster = RedisClusterClient.builder()
        .nodes(initialNodes)
        .clientConfig(jedisClientConfig)
        .build();
```

## Miscellaneous 

### A note about String and Binary - what is native?

Redis/Jedis talks a lot about Strings. And here [[http://redis.io/topics/internals]] it says Strings are the basic building block of Redis. However, this stress on strings may be misleading. Redis' "String" refer to the C char type (8 bit), which is incompatible with Java Strings (16-bit). Redis sees only 8-bit blocks of data of predefined length, so normally it doesn't interpret the data (it's "binary safe"). Therefore in Java, byte[] data is "native", whereas Strings have to be encoded before being sent, and decoded after being retrieved by the SafeEncoder. This has some minor performance impact.
In short: if you have binary data, don't encode it into String, but use the binary versions.

### A note on Redis' master/slave distribution

A Redis network consists of redis servers, which can be either masters or slaves. Slaves are synchronized to the master (master/slave replication). However, master and slaves look identical to a client, and slaves do accept write requests, but they will not be propagated "up-hill" and could eventually be overwritten by the master. It makes sense to route reads to slaves, and write demands to the master. Furthermore, being a slave doesn't prevent from being considered master by another slave.


================================================
FILE: docs/css/extra.css
================================================
/* extra.css */
.md-header {
    background-color: #FB2A2C; 
}


================================================
FILE: docs/failover.md
================================================
# Automatic Failover and Failback with Jedis

> API was significantly changed in 7.0.0. Please follow the migration guide below.
> 
> This feature is experimental and may change in future versions.

Jedis supports failover and failback for your Redis deployments. This is useful when:
1. You have more than one Redis deployment. This might include two independent Redis servers or two or more Redis databases replicated across multiple [active-active Redis Enterprise](https://docs.redis.com/latest/rs/databases/active-active/) clusters.
2. You want your application to connect to and use one deployment at a time.
3. You want your application to fail over to the next available deployment if the current deployment becomes unavailable.
4. You want your application to fail back to the original deployment when it becomes available again.

Jedis will fail over to a subsequent Redis deployment after reaching a configurable failure threshold.
This failure threshold is implemented using a [circuit breaker pattern](https://en.wikipedia.org/wiki/Circuit_breaker_design_pattern).

You can also configure Jedis to retry failed calls to Redis.
Once a maximum number of retries have been exhausted, the circuit breaker will record a failure.
When the circuit breaker reaches its failure threshold, a failover will be triggered on the subsequent operation.
In the background, Jedis executes configured health checks to determine when a Redis deployment is available again.
When this occurs, Jedis will fail back to the original deployment after a configurable grace period.

The remainder of this guide describes:

* A basic failover and health check configuration
* Supported retry and circuit breaker settings
* Failback and the database selection API
* Dynamic database management for adding and removing databases at runtime
* Dynamic weight management for runtime priority adjustments (since 7.4.0)

We recommend that you read this guide carefully and understand the configuration settings before enabling Jedis failover
in production.

## Migration from 6.x to 7.x

In Jedis 6.x, failover was supported using special constructor for `UnifiedJedis`.
In Jedis 7.x, failover is supported using `MultiDbClient` and `MultiDbConfig.builder`:
```java
// Jedis 6.x
JedisClientConfig config = DefaultJedisClientConfig.builder().user("cache").password("secret").build();

ClusterConfig[] clientConfigs = new ClusterConfig[2];
clientConfigs[0] = new ClusterConfig(new HostAndPort("redis-east.example.com", 14000), config);
clientConfigs[1] = new ClusterConfig(new HostAndPort("redis-west.example.com", 14000), config);

MultiClusterClientConfig.Builder builder = new MultiClusterClientConfig.Builder(clientConfigs);
// ...
MultiClusterPooledConnectionProvider provider = new MultiClusterPooledConnectionProvider(builder.build());
UnifiedJedis client = new UnifiedJedis(provider);

// Jedis 7.x
// MultiClusterClientConfig was renamed to MultiDbConfig and MultiDbClient with convenient builder was added
MultiDbConfig multiConfig = MultiDbConfig.builder()
        .database(DatabaseConfig.builder(east, config).weight(1.0f).build())
        .database(DatabaseConfig.builder(west, config).weight(0.5f).build())
        .build();
// Use MultiDbClient instead of UnifiedJedis
MultiDbClient multiDbClient = MultiDbClient.builder().multiDbConfig(multiConfig).build();
```
For more details on configuration options see sections below.

## Installing optional dependencies

Jedis failover support is provided by optional dependencies.
To use failover, add the following dependencies to your project:
```xml
<dependency>
    <groupId>io.github.resilience4j</groupId>
    <artifactId>resilience4j-all</artifactId>
    <version>1.7.1</version>
</dependency>
<dependency>
    <groupId>io.github.resilience4j</groupId>
    <artifactId>resilience4j-circuitbreaker</artifactId>
    <version>1.7.1</version>
</dependency>
<dependency>
    <groupId>io.github.resilience4j</groupId>
    <artifactId>resilience4j-retry</artifactId>
    <version>1.7.1</version>
</dependency>
```

## Basic usage

To configure Jedis for failover, you specify a weighted list of Redis databases.
Jedis will connect to the Redis database in the list with the highest weight. 
If the highest-weighted database becomes unavailable,
Jedis will attempt to connect to the database with the next highest weight in the list, and so on.

Database weights determine the priority for selecting which database becomes active. Weights can be configured at initialization and can also be changed dynamically at runtime (introduced in version 7.4.0), allowing you to adjust active database selection priorities without recreating the client.

Suppose you run two Redis deployments.
We'll call them `redis-east` and `redis-west`.
You want your application to first connect to `redis-east`.
If `redis-east` becomes unavailable, you want your application to connect to `redis-west`.

Let's look at one way of configuring Jedis for this scenario.

First, start by defining the initial configuration for each Redis database available and prioritize them using weights.

```java
JedisClientConfig config = DefaultJedisClientConfig.builder()
        .user("cache").password("secret")
        .socketTimeoutMillis(5000).connectionTimeoutMillis(5000).build();

// Custom pool config per database can be provided
ConnectionPoolConfig poolConfig = new ConnectionPoolConfig();
poolConfig.setMaxTotal(8);
poolConfig.setMaxIdle(8);
poolConfig.setMinIdle(0);
poolConfig.setBlockWhenExhausted(true);
poolConfig.setMaxWait(Duration.ofSeconds(1));
poolConfig.setTestWhileIdle(true);
poolConfig.setTimeBetweenEvictionRuns(Duration.ofSeconds(1));

HostAndPort east = new HostAndPort("redis-east.example.com", 14000);
HostAndPort west = new HostAndPort("redis-west.example.com", 14000);

MultiDbConfig.Builder multiConfig = MultiDbConfig.builder()
        .database(DatabaseConfig.builder(east, config).connectionPoolConfig(poolConfig).weight(1.0f).build())
        .database(DatabaseConfig.builder(west, config).connectionPoolConfig(poolConfig).weight(0.5f).build());
```

The configuration above represents your two Redis deployments: `redis-east` and `redis-west`.

Continue using the `MultiDbConfig.Builder` builder to set your preferred retry and failover configuration.
Then build a `MultiDbClient`:

```java
// Configure circuit breaker for failure detection
multiConfig
        .failureDetector(MultiDbConfig.CircuitBreakerConfig.builder()
                .slidingWindowSize(1000)        // Sliding window size in number of calls
                .failureRateThreshold(50.0f)    // percentage of failures to trigger circuit breaker
                .minNumOfFailures(500)          // Minimum number of failures before circuit breaker is tripped
                .build())
        .failbackSupported(true)                // Enable failback
        .failbackCheckInterval(1000)            // Check every second the unhealthy database to see if it has recovered
        .gracePeriod(10000)                     // Keep database disabled for 10 seconds after it becomes unhealthy
        // Optional: configure retry settings
        .commandRetry(MultiDbConfig.RetryConfig.builder()
                .maxAttempts(3)                  // Maximum number of retry attempts (including the initial call)
                .waitDuration(500)               // Number of milliseconds to wait between retry attempts
                .exponentialBackoffMultiplier(2) // Exponential backoff factor multiplied against wait duration between retries
                .build())
        // Optional: configure fast failover
        .fastFailover(true)                       // Force closing connections to unhealthy database on failover
        .retryOnFailover(false);                  // Do not retry failed commands during failover

MultiDbClient multiDbClient = MultiDbClient.builder()
        .multiDbConfig(multiConfig.build())
        .build();
```

In the configuration here, we've set a sliding window size of 1000 and a failure rate threshold of 50%.
This means that a failover will be triggered only if both 500 out of any 1000 calls to Redis fail (i.e., the failure rate threshold is reached) and the minimum number of failures is also met.

You can now use this `MultiDbClient` instance in your application to execute Redis commands.

## Configuration options

Under the hood, Jedis' failover support relies on [resilience4j](https://resilience4j.readme.io/docs/getting-started),
a fault-tolerance library that implements [retry](https://resilience4j.readme.io/docs/retry) and [circuit breakers](https://resilience4j.readme.io/docs/circuitbreaker).

Once you configure a `MultiDbClient`, each call to Redis is decorated with a resilience4j retry and circuit breaker.

By default, any call that throws a `JedisConnectionException` will be retried up to 3 times.
If the call fail then the circuit breaker will record a failure.

The circuit breaker maintains a record of failures in a sliding window data structure.
If the failure rate reaches a configured threshold (e.g., when 50% of the last 1000 calls have failed),
then the circuit breaker's state transitions from `CLOSED` to `OPEN`.
When this occurs, Jedis will attempt to connect to the next Redis database with the highest weight in its client configuration list.

The supported retry and circuit breaker settings, and their default values, are described below.
You can configure any of these settings using the `MultiDbConfig.Builder` builder.
Refer the basic usage above for an example of this.

### Retry configuration
Configuration for command retry behavior is encapsulated in `MultiDbConfig.RetryConfig`.
Jedis uses the following retry settings:

| Setting                          | Default value              | Description                                                                                                                                                                                                     |
|----------------------------------|----------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Max retry attempts               | 3                          | Maximum number of retry attempts (including the initial call)                                                                                                                                                   |
| Retry wait duration              | 500 ms                     | Number of milliseconds to wait between retry attempts                                                                                                                                                           |
| Wait duration backoff multiplier | 2                          | Exponential backoff factor multiplied against wait duration between retries. For example, with a wait duration of 1 second and a multiplier of 2, the retries would occur after 1s, 2s, 4s, 8s, 16s, and so on. |
| Retry included exception list    | [JedisConnectionException] | A list of Throwable classes that count as failures and should be retried.                                                                                                                                       |
| Retry ignored exception list     | null                       | A list of Throwable classes to explicitly ignore for the purposes of retry.                                                                                                                                     |

To disable retry, set `maxAttempts` to 1.

### Circuit breaker configuration
For failover, Jedis uses a circuit breaker to detect when a Redis database has failed.
Failover configuration is encapsulated in `MultiDbConfig.CircuitBreakerConfig` and can be provided using the `MultiDbConfig.Builder.failureDetector()`.
Jedis uses the following circuit breaker settings:

| Setting                                 | Default value              | Description                                                                                                              |
|-----------------------------------------|----------------------------|--------------------------------------------------------------------------------------------------------------------------|
| Sliding window size                     | 2                          | The size of the sliding window. Units depend on sliding window type. The size represents seconds.                        |
| Threshold min number of failures        | 1000                       | Minimum number of failures before circuit breaker is tripped.                                                            |
| Failure rate threshold                  | `10.0f`                    | Percentage of calls within the sliding window that must fail before the circuit breaker transitions to the `OPEN` state. |
| Circuit breaker included exception list | [JedisConnectionException] | A list of Throwable classes that count as failures and add to the failure rate.                                          |
| Circuit breaker ignored exception list  | null                       | A list of Throwable classes to explicitly ignore for failure rate calculations.                                          |                                                                                                               |

### Health Check Configuration and Customization

The `MultiDbClient` includes a comprehensive health check system that continuously monitors the availability of Redis databases to enable automatic failover and failback.

The health check system serves several critical purposes in the failover architecture:

1. **Proactive Monitoring**: Continuously monitors passive databases that aren't currently receiving traffic
2. **Failback Detection**: Determines when a previously failed database has recovered and is ready to accept traffic
3. **Circuit Breaker Integration**: Works with the circuit breaker pattern to manage database state transitions
4. **Customizable Strategies**: Supports pluggable health check implementations for different deployment scenarios

The health check system operates independently of your application traffic, running background checks at configurable intervals to assess database health without impacting performance.

#### Available Health Check Types

##### 1. PingStrategy (Default)

The `PingStrategy` is the default health check implementation that uses Redis's `PING` command to verify both connectivity and write capability.

**Use Cases:**
- General-purpose health checking for most Redis deployments
- Verifying both read and write operations
- Simple connectivity validation

**How it works:**
- Sends `PING` command to the Redis server
- Expects exact response `"PONG"` to consider the server healthy
- Any exception or unexpected response marks the server as unhealthy

##### 2. LagAwareStrategy [PREVIEW] (Redis Enterprise)

The `LagAwareStrategy` is designed specifically for Redis Enterprise Active-Active deployments and uses the Redis Enterprise REST API to check database availability and replication lag.

**Use Cases:**
- Redis Enterprise Active-Active (CRDB) deployments
- Scenarios where replication lag tolerance is critical
- Enterprise environments with REST API access

**How it works:**
- Queries Redis Enterprise REST API for database availability
- Optionally validates replication lag against configurable thresholds
- Automatically discovers database IDs based on endpoint hostnames

**Example Configuration:**
```java
BiFunction<HostAndPort, Supplier<RedisCredentials>, MultiDbConfig.StrategySupplier> healthCheckStrategySupplier =
        (HostAndPort dbHostPort, Supplier<RedisCredentials> credentialsSupplier) -> {
            LagAwareStrategy.Config lagConfig = LagAwareStrategy.Config.builder(dbHostPort, credentialsSupplier)
                    .interval(5000)                                          // Check every 5 seconds
                    .timeout(3000)                                           // 3 second timeout
                    .extendedCheckEnabled(true)
                    .build();

            return (hostAndPort, jedisClientConfig) -> new LagAwareStrategy(lagConfig);
        };

// Configure REST API endpoint and credentials
HostAndPort restEndpoint = new HostAndPort("redis-enterprise-db-fqdn", 9443);
Supplier<RedisCredentials> credentialsSupplier = () ->
        new DefaultRedisCredentials("rest-api-user", "pwd");

MultiDbConfig.StrategySupplier lagawareStrategySupplier = healthCheckStrategySupplier.apply(
        restEndpoint, credentialsSupplier);

MultiDbConfig.DatabaseConfig dbConfig =
        MultiDbConfig.DatabaseConfig.builder(hostAndPort, clientConfig)
                .healthCheckStrategySupplier(lagawareStrategySupplier)
                .build();
```

##### 3. Custom Health Check Strategies

You can implement custom health check strategies by implementing the `HealthCheckStrategy` interface.

**Use Cases:**
- Application-specific health validation logic
- Integration with external monitoring systems
- Custom performance or latency-based health checks

Use the `healthCheckStrategySupplier()` method to provide a custom health check implementation:

```java
// Custom strategy supplier
MultiDbConfig.StrategySupplier customStrategy =
        (hostAndPort, jedisClientConfig) -> {
            // Return your custom HealthCheckStrategy implementation
            return new MyCustomHealthCheckStrategy(hostAndPort, jedisClientConfig);
        };

MultiDbConfig.DatabaseConfig dbConfig =
        MultiDbConfig.DatabaseConfig.builder(hostAndPort, clientConfig)
                .healthCheckStrategySupplier(customStrategy)
                .weight(1.0f)
                .build();
```

You can implement custom health check strategies by implementing the `HealthCheckStrategy` interface:

```java
MultiDbConfig.StrategySupplier pingStrategy = (hostAndPort, jedisClientConfig) -> {
    return new HealthCheckStrategy() {
        @Override
        public int getInterval() {
            return 1000; // Check every second
        }

        @Override
        public int getTimeout() {
            return 500; // 500ms timeout
        }


        @Override
        public int getNumProbes() {
            return 1;
        }

        @Override
        public ProbingPolicy getPolicy() {
            return ProbingPolicy.BuiltIn.ANY_SUCCESS;
        }

        @Override
        public int getDelayInBetweenProbes() {
            return 100;
        }
        @Override
        public HealthStatus doHealthCheck(Endpoint endpoint) {
            try (UnifiedJedis jedis = new UnifiedJedis(hostAndPort, jedisClientConfig)) {
                String result = jedis.ping();
                return "PONG".equals(result) ? HealthStatus.HEALTHY : HealthStatus.UNHEALTHY;
            } catch (Exception e) {
                return HealthStatus.UNHEALTHY;
            }
        }

        @Override
        public void close() {
            // Cleanup resources if needed
        }
    };
};

MultiDbConfig.DatabaseConfig dbConfig =
        MultiDbConfig.DatabaseConfig.builder(hostAndPort, clientConfig)
                .healthCheckStrategySupplier(pingStrategy)
                .build();
```

#### Disabling Health Checks

Use the `healthCheckEnabled(false)` method to completely disable health checks:

```java
MultiDbConfig.DatabaseConfig dbConfig = MultiDbConfig.DatabaseConfig.builder(east, config)
    .healthCheckEnabled(false) // Disable health checks entirely
    .build();
```

### Fallback configuration

Jedis uses the following fallback settings:

| Setting                 | Default value                                         | Description                                        |
|-------------------------|-------------------------------------------------------|----------------------------------------------------|
| Fallback exception list | [CallNotPermittedException, JedisConnectionException] | A list of Throwable classes that trigger fallback. |

### Failover callbacks

In the event that Jedis fails over, you may wish to take some action. This might include logging a warning, recording
a metric, or externally persisting the database connection state, to name just a few examples. For this reason,
`MultiDbClient` lets you register a custom callback that will be called whenever Jedis
fails over to a new database.

To use this feature, you'll need to design a class that implements `java.util.function.Consumer`.
This class must implement the `accept` method, as you can see below.

```java
public class FailoverReporter implements Consumer<DatabaseSwitchEvent> {
    
    @Override
    public void accept(DatabaseSwitchEvent e) {
        System.out.println("Jedis failover to database: " + e.getDatabaseName() + " due to " + e.getReason());
    }
}
```

DatabaseSwitchEvent consumer can be registered as follows:

```java
FailoverReporter reporter = new FailoverReporter();
MultiDbClient client = MultiDbClient.builder()
        .databaseSwitchListener(reporter)
        .build();
```
The provider will call your `accept` whenever a failover occurs.
or directly using lambda expression:
```java
MultiDbClient client = MultiDbClient.builder()
        .databaseSwitchListener(event -> System.out.println("Switched to: " + event.getEndpoint()))
        .build();
```


## Failing back

Jedis supports automatic failback based on health checks or manual failback using the database selection API.

## Failback scenario

When a failover is triggered, Jedis will attempt to connect to the next Redis server based on the weights of server configurations
you provide at setup.

For example, recall the `redis-east` and `redis-west` deployments from the basic usage example above.
Jedis will attempt to connect to `redis-east` first.
If `redis-east` becomes unavailable (and the circuit breaker transitions), then Jedis will attempt to use `redis-west`.

Now suppose that `redis-east` eventually comes back online.
You will likely want to fail your application back to `redis-east`.

### Automatic failback based on health checks

When health checks are enabled, Jedis automatically monitors the health of all configured databases, including those that are currently inactive due to previous failures. 
The automatic failback process works as follows:

1. **Continuous Monitoring**: Health checks run continuously for all databases, regardless of their current active status
2. **Recovery Detection**: When a previously failed database passes the required number of consecutive health checks, it's marked as healthy
3. **Weight-Based Failback**: If automatic failback is enabled and a recovered database has a higher weight than the currently active database, Jedis will automatically switch to the recovered database
4. **Grace Period Respect**: Failback only occurs after the configured grace period has elapsed since the database was marked as unhealthy

## Manual Failback using the database selection API

Once you've determined that it's safe to fail back to a previously-unavailable database,
you need to decide how to trigger the failback. There are two ways to accomplish this:

`MultiDbClient` exposes a method that you can use to manually select which database Jedis should use.
To select a different database to use, pass the database's `HostAndPort` to `setActiveDatabase()`:
```
        Endpoint endpoint =  new HostAndPort("redis-east.example.com", 14000);
        client.setActiveDatabase(endpoint);
```

This method is thread-safe.

If you decide to implement manual failback, you will need a way for external systems to trigger this method in your
application. For example, if your application exposes a REST API, you might consider creating a REST endpoint
to call `setActiveDatabase` and fail back the application.

## Dynamic Weight Management

> Introduced in version 7.4.0

Jedis allows you to dynamically adjust database weights at runtime without recreating the `MultiDbClient`.

**Important**: Weight determines the **priority for selecting which database becomes the active database**. At any given time, only ONE database is active and receives all traffic. Weight does not distribute load across databases - it determines which single database Jedis will prefer to use as the active connection.

This is useful for scenarios where you need to change the active database selection priority based on operational conditions, such as:

- Changing which database should be preferred during planned maintenance
- Adjusting selection priority based on database performance or regional preferences
- Implementing controlled switchover between databases
- Responding to changing infrastructure conditions

### Getting and Setting Weights

The `MultiDbClient` provides methods to query and modify database weights at runtime:

```java
// Get the current weight of a database
HostAndPort east = new HostAndPort("redis-east.example.com", 14000);
float currentWeight = client.getWeight(east);
System.out.println("Current weight: " + currentWeight);

// Set a new weight for a database
client.setWeight(east, 2.0f);
```

### Weight Constraints

When setting weights dynamically, the following constraints apply:

- **Weight must be greater than 0**: Attempting to set a weight of 0 or negative values will throw an `IllegalArgumentException`
- **Endpoint must exist**: The endpoint must be part of the configured databases, otherwise a `JedisValidationException` is thrown

### Runtime Behavior

When you change a database's weight at runtime:

1. **Immediate Effect on Selection**: The weight change takes effect immediately for future active database selection decisions during failover or failback
2. **Automatic Failback Trigger**: If automatic failback is enabled and you increase a database's weight above the currently active database, Jedis will automatically switch to the higher-weight database during the next periodic failback check (if the database is healthy and the grace period has elapsed)
3. **No Disruption**: Changing weights does not interrupt ongoing operations or force an immediate switch
4. **Single Active Database**: Remember that only one database is active at any time - all traffic goes to that single database

### How Weight Affects Database Selection

During failover or failback, Jedis selects the active database by:

1. Filtering for healthy databases (passing health checks, not in grace period, circuit breaker not open)
2. Sorting the healthy databases by weight in descending order (highest weight first)
3. Selecting the first database from this sorted list as the active database

### Example: Changing Active Database Priority

Here's a practical example of dynamically adjusting weights to control which database should be active:

```java
// Initial configuration - primary has higher weight, so it will be selected as active
HostAndPort primary = new HostAndPort("redis-primary.example.com", 6379);
HostAndPort secondary = new HostAndPort("redis-secondary.example.com", 6379);

MultiDbConfig config = MultiDbConfig.builder()
        .database(DatabaseConfig.builder(primary, clientConfig).weight(2.0f).build())
        .database(DatabaseConfig.builder(secondary, clientConfig).weight(1.0f).build())
        .failbackSupported(true)
        .failbackCheckInterval(1000)
        .build();

MultiDbClient client = MultiDbClient.builder()
        .multiDbConfig(config)
        .build();

// At this point, 'primary' is the active database (weight 2.0 > 1.0)

// Before planned maintenance on primary, make secondary the preferred database
client.setWeight(secondary, 3.0f);  // Now secondary has highest weight
// During the next failback check, Jedis will switch to secondary as the active database

// After maintenance, restore primary as the preferred database
client.setWeight(primary, 4.0f);  // Now primary has highest weight again
// During the next failback check, Jedis will switch back to primary as the active database
```

### Monitoring Database Switches

You can combine weight changes with failover callbacks to monitor when the active database switches due to weight adjustments:

```java
MultiDbClient client = MultiDbClient.builder()
        .multiDbConfig(config)
        .databaseSwitchListener(event -> {
            System.out.println("Active database switched to: " + event.getEndpoint() +
                             " due to: " + event.getReason());
        })
        .build();

// Change weight - may trigger automatic failback to switch active database
client.setWeight(secondary, 5.0f);
```

## Dynamic Database Management

Jedis allows you to dynamically add and remove database endpoints at runtime without recreating the `MultiDbClient`. This provides flexibility for scenarios such as:

- Adding new database replicas or regions as they become available
- Removing databases during planned maintenance or decommissioning
- Scaling your Redis infrastructure dynamically
- Responding to infrastructure changes without application restarts

### Adding Databases at Runtime

The `MultiDbClient` provides two overloaded methods for adding databases dynamically:

#### Method 1: Using DatabaseConfig

This method provides maximum flexibility for advanced configurations including custom health check strategies, connection pool settings, and other database-specific options.

```java
// Create a fully configured DatabaseConfig
HostAndPort newEndpoint = new HostAndPort("redis-new.example.com", 6379);
JedisClientConfig clientConfig = DefaultJedisClientConfig.builder()
        .user("cache").password("secret").build();

DatabaseConfig databaseConfig = DatabaseConfig.builder(newEndpoint, clientConfig)
        .weight(1.5f).connectionPoolConfig(poolConfig).healthCheckEnabled(true).build();

// Add the database to the client
client.addDatabase(databaseConfig);
```

#### Method 2: Using Endpoint, Weight, and ClientConfig

This is a convenience method for simpler configurations when you don't need advanced customization.

```java
HostAndPort newEndpoint = new HostAndPort("redis-new.example.com", 6379);
JedisClientConfig clientConfig = DefaultJedisClientConfig.builder()
        .user("cache").password("secret").build();

// Add the database with basic configuration
client.addDatabase(newEndpoint, 1.5f, clientConfig);
```

### Removing Databases at Runtime

You can remove database endpoints dynamically using the `removeDatabase()` method:

```java
HostAndPort endpointToRemove = new HostAndPort("redis-old.example.com", 6379);

// Remove the database from the client
client.removeDatabase(endpointToRemove);
```

### Behavior and Constraints

When adding or removing databases, the following behavior applies:

#### Adding Databases

- **Immediate Availability**: The new endpoint becomes available for failover operations immediately after being added
- **Health Check Integration**: If health checks are configured, the new database will be monitored according to the configured health check strategy
- **Duplicate Prevention**: Attempting to add an endpoint that already exists will throw a `JedisValidationException`
- **Weight-Based Selection**: The new database participates in weight-based active database selection according to its configured weight

#### Removing Databases

- **Automatic Failover**: If the removed endpoint is currently the active database, Jedis will automatically failover to the next available healthy endpoint based on weight priority
- **Last Database Protection**: You cannot remove the last remaining endpoint - attempting to do so will throw a `JedisValidationException`
- **Non-Existent Endpoint**: Attempting to remove an endpoint that doesn't exist will throw a `JedisValidationException`
- **Resource Cleanup**: The removed database's connections and resources are properly closed and cleaned up
- **Health Check Cleanup**: Health checks for the removed database are automatically stopped and unregistered

### Querying Configured Databases

You can retrieve the set of all currently configured database endpoints:

```java
Set<Endpoint> endpoints = client.getDatabaseEndpoints();
System.out.println("Configured databases: " + endpoints);
```

### Complete Example: Dynamic Database Management

Here's a practical example demonstrating dynamic database management:

```java
// Initial setup with two databases, primary and secondary.
HostAndPort primary = new HostAndPort("redis-primary.example.com", 6379);
HostAndPort secondary = new HostAndPort("redis-secondary.example.com", 6379);

JedisClientConfig clientConfig = DefaultJedisClientConfig.builder()
        .user("cache").password("secret").build();

MultiDbConfig config = MultiDbConfig.builder()
        .database(DatabaseConfig.builder(primary, clientConfig).weight(2.0f).build())
        .database(DatabaseConfig.builder(secondary, clientConfig).weight(1.0f).build())
        .failbackSupported(true)
        .build();

MultiDbClient client = MultiDbClient.builder()
        .multiDbConfig(config)
        .databaseSwitchListener(event -> {
            System.out.println("Switched to: " + event.getEndpoint() +
                             " due to: " + event.getReason());
        })
        .build();

// Add a new database in a different region
HostAndPort newRegion = new HostAndPort("redis-eu.example.com", 6379);
client.addDatabase(newRegion, 1.0f, clientConfig);
System.out.println("Added new database: " + newRegion);

// Verify the database was added
Set<Endpoint> endpoints = client.getDatabaseEndpoints();
System.out.println("Current databases: " + endpoints);
// Output: [redis-primary.example.com:6379, redis-secondary.example.com:6379, redis-eu.example.com:6379]

// Later, remove the secondary database for maintenance
client.removeDatabase(secondary);
System.out.println("Removed database: " + secondary);
// If secondary was active, automatic failover occurs to primary or newRegion

// Verify the database was removed
endpoints = client.getDatabaseEndpoints();
System.out.println("Current databases: " + endpoints);
// Output: [redis-primary.example.com:6379, redis-eu.example.com:6379]

```

### Thread Safety

Both `addDatabase()` and `removeDatabase()` methods are thread-safe and can be called concurrently from multiple threads. The client ensures that database additions and removals are properly synchronized with ongoing operations.

## Troubleshooting Failover and Failback Issues

#### Health Checks Always Report Unhealthy

**Common causes:**
- Timeout too aggressive for network conditions
- Authentication issues with Redis server
- Network connectivity problems

**Solutions:**
```java
// Increase timeout values
HealthCheckStrategy.Config config = HealthCheckStrategy.Config.builder()
    .timeout(3000)  // Increase from default 1000ms
    .build();
```

#### Intermittent Health Check Failures

**Solutions:**
```java
// Require more consecutive successes for stability
HealthCheckStrategy.Config config = HealthCheckStrategy.Config.builder()
    .interval(5000)                 // Less frequent checks
    .timeout(2000)                  // More generous timeout
    .build();
```

#### Slow Failback After Recovery

**Solutions:**
```java
// Faster recovery configuration
HealthCheckStrategy.Config config = HealthCheckStrategy.Config.builder()
    .interval(1000)                    // More frequent checks
    .build();

// Adjust failback timing
MultiDbConfig multiConfig = MultiDbConfig.builder()
        .gracePeriod(5000)                 // Shorter grace period
        .build();
```

## Need help or have questions?
For assistance with this automatic failover and failback feature,
[start a discussion](https://github.com/redis/jedis/discussions/new?category=q-a).


================================================
FILE: docs/faq.md
================================================
# Frequently Asked Questions

## If you get `java.net.SocketTimeoutException: Read timed out` exception

Try setting own `timeout` value when constructing `JedisPool` using the following constructor:
```java
JedisPool(GenericObjectPoolConfig poolConfig, String host, int port, int timeout)
```
where `timeout` is given as milliseconds.

Default `timeout` value is **2 seconds**.

## JedisPool blocks after getting 8 connections

JedisPool defaults to 8 connections, you can change this in the PoolConfig:

```java
JedisPoolConfig poolConfig = new JedisPoolConfig();
poolConfig.setMaxTotal(maxTotal); // maximum active connections
poolConfig.setMaxIdle(maxIdle);  // maximum idle connections
```

Take into account that `JedisPool` inherits commons-pool [BaseObjectPoolConfig](https://commons.apache.org/proper/commons-pool/api-2.3/org/apache/commons/pool2/impl/BaseObjectPoolConfig.html) which has a lot of configuration parameters. 
We've set some defined ones which suit most of the cases. In case, you experience [issues](https://github.com/xetorthio/jedis/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+JedisPool) tuning these parameters may help.

## How to configure the buffer size of socket(s)

The buffer size of all Jedis sockets in an application can be configured through system property.

Buffer size of input stream can be configured by setting `jedis.bufferSize.input` or `jedis.bufferSize` system property.  
Buffer size of output stream can be configured by setting `jedis.bufferSize.output` or `jedis.bufferSize` system property.  
If you want to set the buffer size of both input and output stream to same value, you can just set `jedis.bufferSize`.

Note: This feature is available since Jedis 4.2.0.

## How to avoid cluster initialization error

As of Jedis 4.0.0, a `JedisClusterOperationException` is raised with the message `Could not initialize cluster slots cache.` when the cluster initialization process fails. 

Should you would want to avoid this error (for example, creating `JedisConnectionFactory` to an unavailable cluster for a spring-data-redis `Bean`), set the system property `jedis.cluster.initNoError` to any value.  
In the console, add the option `-Djedis.cluster.initNoError`.
In an application, `System.setProperty("jedis.cluster.initNoError", "");` can be set before creating any cluster object.

Note: This feature is available since Jedis 4.4.2.

================================================
FILE: docs/index.md
================================================
{% include 'README.md' %}

================================================
FILE: docs/jedis-maven.md
================================================
## Use Jedis as a maven dependency:

### Official Releases

```xml
<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>6.2.0</version>
</dependency>
```

### Snapshots

```xml
<repositories>
    <repository>
        <id>sonatype-snapshots</id>
        <url>https://oss.sonatype.org/content/repositories/snapshots</url>
        <releases>
            <enabled>false</enabled>
        </releases>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </repository>
</repositories>
```

and

```xml
<dependencies>
    <dependency>
        <groupId>redis.clients</groupId>
        <artifactId>jedis</artifactId>
        <version>7.0.0-SNAPSHOT</version>
    </dependency>
</dependencies>
```


================================================
FILE: docs/migration-guides/v3-to-v4-primitives.md
================================================
## The following methods now return primitive values:
\>> `long`/`boolean`/`double` instead of `Long`/`Boolean`/`Double`:

- dbSize()
- lastsave()
- slowlogLen()
- clientId()
- clientUnblock(long clientId, UnblockType unblockType)
- clientKill(ClientKillParams params)
- aclDelUser(String name)
- aclDelUser(byte[] name)
- move(String key, int dbIndex)
- move(byte[] key, int dbIndex)
- waitReplicas(int replicas, long timeout)
- waitReplicas(String key, int replicas, long timeout)
- exists(String key)
- exists(byte[] key)
- exists(String... keys)
- exists(byte[]... keys)
- persist(String key)
- expire(String key, long seconds)
- expire(byte[] key, long seconds)
- pexpire(String key, long milliseconds)
- pexpire(byte[] key, long milliseconds)
- expireAt(String key, long unixTime)
- expireAt(byte[] key, long unixTime)
- pexpireAt(String key, long millisecondsTimestamp)
- pexpireAt(byte[] key, long millisecondsTimestamp)
- ttl(String key)
- ttl(byte[] key)
- pttl(String key)
- touch(String key)
- touch(byte[] key)
- touch(String... keys)
- touch(byte[]... keys)
- setbit(String key, long offset, boolean value)
- setbit(byte[] key, long offset, boolean value)
- getbit(String key, long offset)
- getbit(byte[] key, long offset)
- setrange(String key, long offset, String value)
- setrange(byte[] key, long offset, byte[] value)
- setnx(String key, String value)
- setnx(byte[] key, byte[] value)
- incr(String key)
- incr(byte[] key)
- decr(String key)
- decr(byte[] key)
- incrBy(String key, long increment)
- incrBy(byte[] key, long increment)
- decrBy(String key, long decrement)
- decrBy(byte[] key, long decrement)
- incrByFloat(String key, double increment)
- incrByFloat(byte[] key, double increment)
- append(String key, String value)
- append(byte[] key, byte[] value)
- hset(String key, String field, String value)
- hset(byte[] key, byte[] field, byte[] value)
- hset(String key, Map<String, String> hash)
- hset(byte[] key, Map<byte[], byte[]> hash)
- hsetnx(String key, String field, String value)
- hsetnx(byte[] key, byte[] field, byte[] value)
- hincrBy(String key, String field, long value)
- hincrBy(byte[] key, byte[] field, long value)
- hincrByFloat(String key, String field, double value)
- hincrByFloat(byte[] key, byte[] field, double value)
- hexists(String key, String field)
- hexists(byte[] key, byte[] field)
- hdel(String key, String... field)
- hdel(byte[] key, byte[]... field)
- hlen(String key)
- hlen(byte[] key)
- rpush(String key, String... string)
- rpush(byte[] key, byte[]... args)
- lpush(String key, String... string)
- lpush(byte[] key, byte[]... args)
- llen(String key)
- llen(byte[] key)
- lrem(String key, long count, String value)
- lrem(byte[] key, long count, byte[] value)
- sadd(String key, String... member)
- sadd(byte[] key, byte[]... member)
- scard(String key)
- scard(byte[] key)
- sismember(String key, String member)
- sismember(byte[] key, byte[] member)
- strlen(String key)
- strlen(byte[] key)
- zadd(String key, double score, String member)
- zadd(byte[] key, double score, byte[] member)
- zadd(String key, double score, String member, ZAddParams params)
- zadd(byte[] key, double score, byte[] member, ZAddParams params)
- zadd(String key, Map<String, Double> scoreMembers)
- zadd(byte[] key, Map<byte[], Double> scoreMembers)
- zadd(String key, Map<String, Double> scoreMembers, ZAddParams params)
- zadd(byte[] key, Map<byte[], Double> scoreMembers, ZAddParams params)
- zrem(String key, String... members)
- zrem(byte[] key, byte[]... members)
- zincrby(String key, double increment, String member)
- zincrby(byte[] key, double increment, byte[] member)
- zcard(String key)
- zcard(byte[] key)
- zcount(String key, double min, double max)
- zcount(byte[] key, double min, double max)
- zcount(String key, String min, String max)
- zcount(byte[] key, byte[] min, byte[] max)
- zremrangeByRank(String key, long start, long stop)
- zremrangeByRank(byte[] key, long start, long stop)
- zremrangeByScore(String key, double min, double max)
- zremrangeByScore(byte[] key, double min, double max)
- zremrangeByScore(String key, String min, String max)
- zremrangeByScore(byte[] key, byte[] min, byte[] max)
- zlexcount(String key, String min, String max)
- zlexcount(byte[] key, byte[] min, byte[] max)
- zremrangeByLex(String key, String min, String max)
- zremrangeByLex(byte[] key, byte[] min, byte[] max)
- linsert(String key, ListPosition where, String pivot, String value)
- linsert(byte[] key, ListPosition where, byte[] pivot, byte[] value)
- lpushx(String key, String... string)
- lpushx(byte[] key, byte[]... arg)
- rpushx(String key, String... string)
- rpushx(byte[] key, byte[]... arg)
- del(String key)
- del(byte[] key)
- del(String... keys)
- unlink(String key)
- unlink(byte[] key)
- unlink(String... keys)
- bitcount(String key)
- bitcount(byte[] key)
- bitcount(String key, long start, long end)
- bitcount(byte[] key, long start, long end)
- bitpos(String key, boolean value)
- bitpos(String key, boolean value, BitPosParams params)
- pfadd(String key, String... elements)
- pfadd(byte[] key, byte[]... elements)
- pfcount(byte[]... keys)
- geoadd(String key, double longitude, double latitude, String member)
- geoadd(byte[] key, double longitude, double latitude, byte[] member)
- geoadd(String key, Map<String, GeoCoordinate> memberCoordinateMap)
- geoadd(byte[] key, Map<byte[], GeoCoordinate> memberCoordinateMap)
- geoadd(String key, GeoAddParams params, Map<String, GeoCoordinate> memberCoordinateMap)
- geoadd(byte[] key, GeoAddParams params, Map<byte[], GeoCoordinate> memberCoordinateMap)
- hstrlen(String key, String field)
- hstrlen(byte[] key, byte[] field)
- xlen(String key)
- xlen(byte[] key)
- xack(String key, String group, StreamEntryID... ids)
- xack(byte[] key, byte[] group, byte[]... ids)
- xgroupDestroy(String key, String groupname)
- xgroupDestroy(byte[] key, byte[] consumer)
- xgroupDelConsumer( String key, String groupname, String consumername)
- xgroupDelConsumer(byte[] key, byte[] consumer, byte[] consumerName)
- xdel(String key, StreamEntryID... ids)
- xdel(byte[] key, byte[]... ids)
- xtrim(String key, long maxLen, boolean approximate)
- xtrim(byte[] key, long maxLen, boolean approximateLength)
- xtrim(String key, XTrimParams params)
- xtrim(byte[] key, XTrimParams params)
- clusterKeySlot(String key)
- clusterCountKeysInSlot(int slot)
- msetnx(String... keysvalues)
- msetnx(byte[]... keysvalues)
- renamenx(String oldkey, String newkey)
- renamenx(byte[] oldkey, byte[] newkey)
- sdiffstore(String dstkey, String... keys)
- sdiffstore(byte[] dstkey, byte[]... keys)
- sinterstore(String dstkey, String... keys)
- sinterstore(byte[] dstkey, byte[]... keys)
- smove(String srckey, String dstkey, String member)
- smove(byte[] srckey, byte[] dstkey, byte[] member)
- sort(String key, String dstkey)
- sort(byte[] key, byte[] dstkey)
- sort(String key, SortingParams sortingParameters, String dstkey)
- sort(byte[] key, SortingParams sortingParameters, byte[] dstkey)
- sunionstore(String dstkey, String... keys)
- sunionstore(byte[] dstkey, byte[]... keys)
- zdiffStore(String dstkey, String... keys)
- zdiffStore(byte[] dstkey, byte[]... keys)
- zinterstore(String dstkey, String... sets)
- zinterstore(byte[] dstkey, byte[]... sets)
- zinterstore(String dstkey, ZParams params, String... sets)
- zinterstore(byte[] dstkey, ZParams params, byte[]... sets)
- zunionstore(String dstkey, String... sets)
- zunionstore(byte[] dstkey, byte[]... sets)
- zunionstore(String dstkey, ZParams params, String... sets)
- zunionstore(byte[] dstkey, ZParams params, byte[]... sets)
- bitop(BitOP op, String destKey, String... srcKeys)
- bitop(BitOP op, byte[] destKey, byte[]... srcKeys)
- georadiusStore(String key, double longitude, double latitude, double radius, GeoUnit unit, GeoRadiusParam param, GeoRadiusStoreParam storeParam)
- georadiusStore(byte[] key, double longitude, double latitude, double radius, GeoUnit unit, GeoRadiusParam param, GeoRadiusStoreParam storeParam)
- georadiusByMemberStore(String key, String member, double radius, GeoUnit unit, GeoRadiusParam param, GeoRadiusStoreParam storeParam)
- georadiusByMemberStore(byte[] key, byte[] member, double radius, GeoUnit unit, GeoRadiusParam param, GeoRadiusStoreParam storeParam)
- copy(String srcKey, String dstKey, int db, boolean replace)
- copy(byte[] srcKey, byte[] dstKey, int db, boolean replace)
- copy(String srcKey, String dstKey, boolean replace)
- copy(byte[] srcKey, byte[] dstKey, boolean replace)


================================================
FILE: docs/migration-guides/v3-to-v4-zset-list.md
================================================
## Each of the following sorted set methods now return a Java `List` instead of a `Set`:

- zrange(byte[] key, long start, long stop)
- zrange(String key, long start, long stop)
- zrevrange(byte[] key, long start, long stop)
- zrevrange(String key, long start, long stop)
- zrangeWithScores(byte[] key, long start, long stop)
- zrangeWithScores(String key, long start, long stop)
- zrevrangeWithScores(byte[] key, long start, long stop)
- zrevrangeWithScores(String key, long start, long stop)
- zrandmember(byte[] key, long count)
- zrandmember(String key, long count)
- zrandmemberWithScores(byte[] key, long count)
- zrandmemberWithScores(String key, long count)
- zpopmax(byte[] key, int count)
- zpopmax(String key, int count)
- zpopmin(byte[] key, int count)
- zpopmin(String key, int count)
- zrangeByScore(byte[] key, double min, double max)
- zrangeByScore(String key, double min, double max)
- zrangeByScore(byte[] key, byte[] min, byte[] max)
- zrangeByScore(String key, String min, String max)
- zrevrangeByScore(byte[] key, double max, double min)
- zrevrangeByScore(String key, double max, double min)
- zrangeByScore(byte[] key, double min, double max, int offset, int count)
- zrangeByScore(String key, double min, double max, int offset, int count)
- zrevrangeByScore(byte[] key, byte[] max, byte[] min)
- zrevrangeByScore(String key, String max, String min)
- zrangeByScore(byte[] key, byte[] min, byte[] max, int offset, int count)
- zrangeByScore(String key, String min, String max, int offset, int count)
- zrevrangeByScore(byte[] key, double max, double min, int offset, int count)
- zrevrangeByScore(String key, double max, double min, int offset, int count)
- zrangeByScoreWithScores(byte[] key, double min, double max)
- zrangeByScoreWithScores(String key, double min, double max)
- zrevrangeByScoreWithScores(byte[] key, double max, double min)
- zrevrangeByScoreWithScores(String key, double max, double min)
- zrangeByScoreWithScores(byte[] key, double min, double max, int offset, int count)
- zrangeByScoreWithScores(String key, double min, double max, int offset, int count)
- zrevrangeByScore(byte[] key, byte[] max, byte[] min, int offset, int count)
- zrevrangeByScore(String key, String max, String min, int offset, int count)
- zrangeByScoreWithScores(byte[] key, byte[] min, byte[] max)
- zrangeByScoreWithScores(String key, String min, String max)
- zrevrangeByScoreWithScores(byte[] key, byte[] max, byte[] min)
- zrevrangeByScoreWithScores(String key, String max, String min)
- zrangeByScoreWithScores(byte[] key, byte[] min, byte[] max, int offset, int count)
- zrangeByScoreWithScores(String key, String min, String max, int offset, int count)
- zrevrangeByScoreWithScores(byte[] key, double max, double min, int offset, int count)
- zrevrangeByScoreWithScores(String key, double max, double min, int offset, int count)
- zrevrangeByScoreWithScores(byte[] key, byte[] max, byte[] min, int offset, int count)
- zrevrangeByScoreWithScores(String key, String max, String min, int offset, int count)
- zrangeByLex(byte[] key, byte[] min, byte[] max)
- zrangeByLex(String key, String min, String max)
- zrangeByLex(byte[] key, byte[] min, byte[] max, int offset, int count)
- zrangeByLex(String key, String min, String max, int offset, int count)
- zrevrangeByLex(byte[] key, byte[] max, byte[] min)
- zrevrangeByLex(String key, String max, String min)
- zrevrangeByLex(byte[] key, byte[] max, byte[] min, int offset, int count)
- zrevrangeByLex(String key, String max, String min, int offset, int count)


================================================
FILE: docs/migration-guides/v3-to-v4.md
================================================
# Jedis 4 Breaking Changes

- The `BinaryJedis` and `BinaryJedisCluster` classes have been removed.

  The methods from these classes are available in the `Jedis` and `JedisCluster` classes
  respectively.

- The following cases now throws an `IllegalStateException` instead of a
`JedisDataException`.
  - `Cannot use Jedis when in Multi. Please use Transaction or reset Jedis state.`
  - `Cannot use Jedis when in Pipeline. Please use Pipeline or reset Jedis state.`

- The Redis transaction methods `multi()`, `exec()` and `discard()` have
  been removed from `Pipeline`.

- The `execGetResponse()` method has been removed from `Transaction`.

- The `watch()` and `unwatch()` methods from the `Transaction` class are unsupported
within MULTI (i.e., after the `multi()` method). However, `watch()` and `unwatch
()` can still be used before calling MULTI.

- The `JedisCluster` constructors with `GenericObjectPoolConfig<Jedis>` now accept
  `GenericObjectPoolConfig<Connection>`.

- All `JedisCluster` constructors now throw a `JedisClusterOperationException` if
unable to connect to any of the provided `HostAndPort(s)`. Previously, the
connection would go into an unusable state.

- `JedisCluster.getClusterNodes()` returns `Map<String, ConnectionPool>` instead of
  `Map<String, JedisPool>`.

- `JedisCluster.getConnectionFromSlot(int)` returns `Connection` instead of `Jedis`.

- `JedisNoReachableClusterNodeException` has been removed.
`JedisClusterOperationException`, with a similar message, is thrown instead.

- `JedisClusterMaxAttemptsException` has been removed.
`JedisClusterOperationException`, with a similar message, is thrown instead.

- `JedisExhaustedPoolException` has been removed. A `JedisException` with a similar message is thrown
  instead.

- [Many sorted set methods](v3-to-v4-zset-list.md) return a Java `List` instead of a
`Set`. [See the complete list](v3-to-v4-zset-list.md).

- [Many methods return primitive values](v3-to-v4-primitives.md)) (`long`/`boolean`/`double` instead of
`Long`/`Boolean`/
  `Double`). [See the complete list](v3-to-v4-primitives.md).

- `scriptExists(byte[])` method now returns `Boolean` instead of `Long`.

- `scriptExists(byte[]...)` method now returns `List<Boolean>` instead of `List<Long>`.

- In the [`xadd`](https://redis.io/commands/XADD) method with StreamEntryID
parameter, sending untyped `null` raises an exception.

  Casting the `null` to StreamEntryID (`(StreamEntryID) null`) resolves this issue.

- In the [`xrange`](https://redis.io/commands/XRANGE) and
  [`xrevrange`](https://redis.io/commands/xrevrange) methods with StreamEntryID parameters, sending
  untyped `null`s for both start and end parameters raises an exception.

  Casting the `null`s to StreamEntryID (`(StreamEntryID) null`) resolves this issue.

- The return type of `Jedis.shutdown()` is now `void`. Previously, it would return null.

- The `eval` and `evalsha` methods are now non-blocking. These methods were
blocking in Jedis 3.x.

- The `HostAndPort.localhost` constant has been removed.

- The following methods have been removed from HostAndPort class:
  - `extractParts()`
  - `parseString()`
  - `convertHost()`
  - `setLocalhost()`
  - `getLocalhost()`
  - `getLocalHostQuietly()`

- The following classes have been moved to the `redis.clients.jedis.args` package.
  - `BitOP`
  - `GeoUnit`
  - `ListPosition`

- The following classes have been moved to the `redis.clients.jedis.params` package.
  - `BitPosParams`
  - `ScanParams`
  - `SortingParams`
  - `ZParams`

- The following classes have been moved to the `redis.clients.jedis.resps` package.
  - `AccessControlLogEntry`
  - `AccessControlUser`
  - `GeoRadiusResponse`
  - `ScanResult`
  - `Slowlog`
  - `StreamConsumersInfo`
  - `StreamEntry`
  - `StreamGroupInfo`
  - `StreamInfo`
  - `StreamPendingEntry`
  - `StreamPendingSummary`
  - `Tuple`

- Jedis and JedisPool constructors with a `String` parameter, and no `int`
parameter, only support a URL or URI string.
  - Jedis(String)
  - JedisPool(String)
  - JedisPool(String, SSLSocketFactory, SSLParameters, HostnameVerifier)
  - JedisPool(GenericObjectPoolConfig<Jedis>, String)

- The `Client` and `BinaryClient` classes have been removed.

- `redis.clients.jedis.commands` package has been reimplemented, meaning that the
`Commands` interfaces have been restructured.

- The `ShardedJedisPool`, `Sharded`, `ShardedJedis`, `BinaryShardedJedis`, `ShardInfo`,
`JedisShardInfo` classes have been removed.
  - Introduced `JedisSharding` class to replace `ShardedJedisPool`.

    Earlier code without the use of "name" and "weight" (in ShardInfo/JedisShardInfo) are
    transferable to the new class.

- `ShardedJedisPipeline` class has been removed.
  - Introduced `ShardedPipeline` class to replace `ShardedJedisPipeline`.

- The type of `Protocol.CHARSET` has been changed to `java.nio.charset.Charset`.

- `Jedis.debug(DebugParams)` method has been removed.

- The `DebugParams` class has been removed.

- The `Jedis.sync()` method has been removed.

- The `Jedis.pubsubNumSub(String...)` method now returns `Map<String, Long>`
instead of `Map<String, String>`.

- `setDataSource` method in Jedis class now has `protected` access.

- `JedisPoolAbstract` class has been removed. Use `Pool<Jedis>`.

- The `Pool.initPool()` method has been removed.

- The `Pool.getNumActive()` method now returns `0` (via GenericObjectPool) when the
pool is closed.

- The `Connection.getRawObjectMultiBulkReply()` method has been removed. Use
  `Connection.getUnflushedObjectMultiBulkReply()` method.

- The `Queable.getResponse(Builder<T> builder)` method has been renamed to
  `Queable.enqueResponse(Builder<T> builder)`.

- All methods in Queable are now `final`:
  - `clean()`
  - `generateResponse(Object data)`
  - `enqueResponse(Builder<T> builder)`
  - `getPipelinedResponseLength()`

- These BuilderFactory implementations have been removed:
  - `OBJECT` (use `RAW_OBJECT`)
  - `BYTE_ARRAY_ZSET` (use `BINARY_LIST` or `BINARY_SET`)
  - `BYTE_ARRAY_MAP` (use `BINARY_MAP`)
  - `STRING_ZSET` (use `STRING_LIST` or `STRING_SET`)
  - `EVAL_RESULT` (use `ENCODED_OBJECT`)
  - `EVAL_BINARY_RESULT` (use `RAW_OBJECT`)

- All String variables representing Cluster, Sentinel and PubSub subcommands in Protocol class
  have been removed.

- `ClientKillParams.Type` has been removed. Use `ClientType`.

- `ClusterReset` has been removed. Use `ClusterResetType`.

- The `JedisClusterHostAndPortMap` interface has been removed. Use the
`HostAndPortMapper` interface.

- `JedisClusterHashTagUtil` class has been renamed to `JedisClusterHashTag`.

- The `KeyMergeUtil` class has been removed.


================================================
FILE: docs/migration-guides/v4-to-v5.md
================================================
# Jedis 5 Breaking Changes

- All variants of `blmpop` and `bzmpop` methods now take `double timeout` parameter instead of `long timeout` parameter.
  This is breaking ONLY IF you are using `Long` for timeout.

- `Reducer` abstract class is refactored:
  - **`Reducer(String field)` constructor is removed; `Reducer(String name, String field)` constructor is added.**
  - **`Reducer(String name)` constructor is added; it will cause runtime error with older `Reducer(String field)` constructor.**
  - `getName` method is removed.
  - `getAlias` method is removed.
  - `setAlias` method is removed; use `as` method.
  - `setAliasAsField` method is removed.
  - `getOwnArgs` method is now abstract.
  - `getArgs` method is removed.

- `quit()` method has been removed from `Connection` and `ServerCommands` interface and implementations.

- `updatePassword(String password)` method has been removed from `JedisClientConfig` and implementations.

- `setPassword(String password)` method has been removed from both `JedisFactory` and `ConnectionFactory` classes.

- Both `bzpopmax(double timeout, String... keys)` and `bzpopmin(double timeout, String... keys)` now return `KeyValue<String, Tuple>` (instead of `KeyedZSetElement`).

- Both `bzpopmax(double timeout, byte[]... keys)` and `bzpopmin(double timeout, byte[]... keys)` now return `KeyValue<byte[], Tuple>` (instead of `List<byte[]>`).

- Following methods now return `KeyValue<String, String>` instead of `KeyedListElement`:
  - `blpop(double timeout, String key)`
  - `blpop(double timeout, String... keys)`
  - `brpop(double timeout, String key)`
  - `brpop(double timeout, String... keys)`

- Following methods now return `KeyValue<byte[], byte[]>` instead of `List<byte[]>`:
  - `blpop(double timeout, byte[]... keys)`
  - `brpop(double timeout, byte[]... keys)`

- `zdiff(String... keys)` method now returns `List<String>` (instead of `Set<String>`).
- `zdiff(byte[]... keys)` method now returns `List<byte[]>` (instead of `Set<byte[]>`).
- Both `zdiffWithScores(String... keys)` and `zdiffWithScores(byte[]... keys)` methods now return `List<Tuple>` (instead of `Set<Tuple>`).

- `zinter(ZParams params, String... keys)` method now returns `List<String>` (instead of `Set<String>`).
- `zinter(ZParams params, byte[]... keys)` method now returns `List<byte[]>` (instead of `Set<byte[]>`).
- Both `zinterWithScores(ZParams params, String... keys)` and `zinterWithScores(ZParams params, byte[]... keys)` methods now return `List<Tuple>` (instead of `Set<Tuple>`).

- `zunion(ZParams params, String... keys)` method now returns `List<String>` (instead of `Set<String>`).
- `zunion(ZParams params, byte[]... keys)` method now returns `List<byte[]>` (instead of `Set<byte[]>`).
- Both `zunionWithScores(ZParams params, String... keys)` and `zunionWithScores(ZParams params, byte[]... keys)` methods now return `List<Tuple>` (instead of `Set<Tuple>`).

- Both `configGet(String pattern)` and `configGet(String... patterns)` methods now return `Map<String, String>` instead of `List<String>`.
- Both `configGet(byte[] pattern)` and `configGet(byte[]... patterns)` methods now return `Map<byte[], byte[]>` instead of `List<byte[]>`.

- New `aclDelUser(String... names)` method replaces `aclDelUser(String name)` and `aclDelUser(String name, String... names)` methods.
- New `aclDelUser(byte[]... names)` method replaces `aclDelUser(byte[] name)` and `aclDelUser(byte[] name, byte[]... names)` methods.

- `tsMGet(TSMGetParams multiGetParams, String... filters)` method now returns `Map<String, TSMGetElement>` instead of `List<TSKeyValue<TSElement>>`.

- Following methods now return `Map<String, TSMRangeElements>` instead of `List<TSKeyedElements>`:
  - `tsMRange(long fromTimestamp, long toTimestamp, String... filters)`
  - `tsMRange(TSMRangeParams multiRangeParams)`
  - `tsMRevRange(long fromTimestamp, long toTimestamp, String... filters)`
  - `tsMRevRange(TSMRangeParams multiRangeParams)`

- `jsonNumIncrBy(String key, Path2 path, double value)` method now returns `Object` instead of `JSONArray`.
  - The returning object would still be JSONArray for all previous cases. So simple type casting is enough to handle this change.
  - The returning object will be `List<Double>` when running under RESP3 protocol.

- `getAgeSeconds()` in `AccessControlLogEntry` now returns `Double` instead of `String`.

- Both `ftConfigGet(String option)` and `ftConfigGet(String indexName, String option)` methods now return `Map<String, Object>` instead of `Map<String, String>`.

- `ftList()` method now returns `Set<String>` instead of `List<String>`.

- `graphSlowlog(String graphName)` now returns `List<List<Object>>` (instead of `List<List<String>>`).

- `CommandListFilterByParams` now throws `IllegalArgumentException` (instead of `JedisDataException`) in case of unfulfilling filter.

- `FailoverParams` now throws `IllegalArgumentException` (instead of `IllegalStateException`) in case of unfulfilling optional arguments.

- `XPendingParams` now throws `IllegalArgumentException` (instead of `IllegalStateException`) in case of unfulfilling optional arguments.

- `get()` option has been removed from `SetParams`.  Following methods have been added in Jedis/UnifiedJedis for convenience:
  - `setGet(String key, String value)` method has been added in `StringCommands` interface.
  - `setGet(byte[] key, byte[] value)` method has been added in `StringBinaryCommands` interface.

- `xpending(String key, String groupName, StreamEntryID start, StreamEntryID end, int count, String consumerName)` method has been removed from everywhere.
  - Use `xpending(java.lang.String, java.lang.String, redis.clients.jedis.params.XPendingParams)` instead.

- `xpending(byte[] key, byte[] groupName, byte[] start, byte[] end, int count, byte[] consumerName)` method has been removed from everywhere.
  - Use `xpending(byte[], byte[], redis.clients.jedis.params.XPendingParams)` instead.

- `retentionTime(long retentionTime)` method in `TSAlterParams` has been removed. Use `retention(long)` method instead.

- Following classes have been removed:
  - `KeyedZSetElement`
  - `KeyedListElement`
  - `TSKeyValue`
  - `TSKeyedElements`
  - `Limit`

- Following BuilderFactory implementations have been removed:
  - `BYTE_ARRAY` (use `BINARY`)
  - `BYTE_ARRAY_LIST` (use `BINARY_LIST`)
  - `BINARY_MAP_FROM_PAIRS`
  - `STRING_ORDERED_SET`

- All _payload_ related parameters are removed from _search_ related classes; namely `Document`, `IndexDefinition`, `Query`.

- `topkCount(String key, String... items)` method has been removed from everywhere.

- Following methods supporting JSON.RESP command have been removed:
  - `jsonResp(String key)`
  - `jsonResp(String key, Path path)`
  - `jsonResp(String key, Path2 path)`

- `RedisJsonCommands` and `RedisJsonPipelineCommands` interfaces have been moved into `redis.clients.jedis.json.commands` package.

- `AbortedTransactionException` is removed.

- `Queable` class is removed.

- `Params` abstract class is removed.
  - `toString()` support used by its sub-classes is now unavailable.

- `getParams()` method is removed from `SortingParams` class.

- Both `SEARCH_AGGREGATION_RESULT` and `SEARCH_AGGREGATION_RESULT_WITH_CURSOR` implementations from `SearchBuilderFactory` class have been moved to `AggregationResult` class.

- All `AggregationResult` constructors have been made `private`.

- `getArgs()`, `getArgsString()` and `serializeRedisArgs(List<byte[]> redisArgs)` methods have been removed from `AggregationBuilder`.

- `totalResults` variable in `AggregationResult` has been made private. Use `getTotalResults()` method instead.

- `getArgs()` and `limit(Limit limit)` methods have been removed from `Group` class.

- `addCommandEncodedArguments` and `addCommandBinaryArguments` methods have been removed from `FieldName` class.

- `addObjects(int[] ints)` method has been removed from `CommandArguments`.

- Following methods have been removed:
  - `strAlgoLCSStrings(String strA, String strB, StrAlgoLCSParams params)`
  - `strAlgoLCSStrings(byte[] strA, byte[] strB, StrAlgoLCSParams params)`
  - `strAlgoLCSKeys(String keyA, String keyB, StrAlgoLCSParams params)`
  - `strAlgoLCSKeys(byte[] keyA, byte[] keyB, StrAlgoLCSParams params)`

- `StrAlgoLCSParams` class has been removed.

- Following methods have been removed from all Pipeline classes:
  - `ftCursorRead(String indexName, long cursorId, int count)`
  - `ftCursorDel(String indexName, long cursorId)`
  - `ftDropIndex(String indexName)`
  - `ftDropIndexDD(String indexName)`
  - `ftAliasAdd(String aliasName, String indexName)`
  - `ftAliasUpdate(String aliasName, String indexName)`
  - `ftAliasDel(String aliasName)`

- `JedisSentineled(String masterName, Set<HostAndPort> sentinels, JedisClientConfig masterClientConfig, JedisClientConfig sentinelClientConfig)` and
`JedisSentineled(String masterName, Set<HostAndPort> sentinels, GenericObjectPoolConfig<Connection> poolConfig, JedisClientConfig masterClientConfig, JedisClientConfig sentinelClientConfig)`
constructors have been removed.

- `JedisClusterInfoCache(JedisClientConfig clientConfig)` and `JedisClusterInfoCache(JedisClientConfig clientConfig, GenericObjectPoolConfig<Connection> poolConfig)`
constructors have been removed.


================================================
FILE: docs/migration-guides/v5-to-v6.md
================================================
# Jedis 6.0.0 Migration Guide

This guide helps you migrate from Jedis 5.x to Jedis 6.0.0. Version 6.0.0 includes breaking changes focused on Redis 8.0 support, removal of deprecated modules, and improvements to the Search API.

## Table of Contents

- [Overview](#overview)
- [Breaking Changes](#breaking-changes)
  - [Removed RedisGraph Support](#removed-redisgraph-support)
  - [Removed Triggers and Functions (RedisGears v2)](#removed-triggers-and-functions-redisgears-v2)
  - [Search Dialect Default Change](#search-dialect-default-change)
  - [FT.PROFILE Return Type Change](#ftprofile-return-type-change)
  - [COMMAND INFO Response Changes](#command-info-response-changes)
- [New Features](#new-features)
  - [Redis 8.0 Support](#redis-80-support)
  - [SslOptions for Advanced SSL Configuration](#ssloptions-for-advanced-ssl-configuration)
  - [Token-Based Authentication](#token-based-authentication)
  - [New Hash Commands](#new-hash-commands)
  - [Search Warning Messages](#search-warning-messages)
- [Additional Resources](#additional-resources)

## Overview

Jedis 6.0.0 is a major release that adds Redis 8.0 support and removes deprecated features. The main focus areas are:

1. **Redis 8.0 compatibility** - Full support for Redis 8.0 features including built-in JSON, Search, and TimeSeries
2. **Module deprecations** - Removal of RedisGraph and Triggers & Functions (RedisGears v2) support
3. **Search API improvements** - Default dialect change and enhanced profiling responses
4. **Security enhancements** - New SSL options and token-based authentication support

## Breaking Changes

### Removed RedisGraph Support

RedisGraph module support has been completely removed from Jedis 6.0.0 as the module has been deprecated by Redis.

#### Removed Classes and Interfaces

All classes in the `redis.clients.jedis.graph` package have been removed:

- `RedisGraphCommands` interface
- `RedisGraphPipelineCommands` interface
- `GraphCommandObjects` class
- `GraphCache`, `GraphProtocol`, `GraphQueryParams` classes
- `ResultSet`, `ResultSetBuilder`, `Record`, `Header`, `Statistics` classes
- All entity classes: `Edge`, `Node`, `Path`, `Point`, `Property`, `GraphEntity`

### Removed Triggers and Functions (RedisGears v2)

Support for Triggers and Functions (RedisGears v2) has been removed from Jedis 6.0.0.

#### Removed Classes and Interfaces

All classes in the `redis.clients.jedis.gears` package have been removed:

- `RedisGearsCommands` interface
- `RedisGearsProtocol` class
- `TFunctionListParams`, `TFunctionLoadParams` classes
- Response classes: `FunctionInfo`, `FunctionStreamInfo`, `GearsLibraryInfo`, `StreamTriggerInfo`, `TriggerInfo`

### Search Dialect Default Change

**BREAKING:** The default search dialect has changed from server-side default to **DIALECT 2** (client-side override).

#### Impact

Starting with Jedis 6.0.0, all `FT.SEARCH` and `FT.AGGREGATE` commands automatically append `DIALECT 2` unless explicitly configured otherwise. This may affect query results if you were relying on DIALECT 1 behavior.

#### Migration Path

**Option 1: Accept DIALECT 2 (Recommended)**

Review your search queries to ensure they work correctly with DIALECT 2. Most queries should work without changes.

**Option 2: Revert to DIALECT 1**

If you need to maintain DIALECT 1 behavior:

```java
JedisPooled jedis = new JedisPooled("redis://localhost:6379");

// Set default dialect to 1
jedis.setDefaultSearchDialect(1);

// Now all search commands will use DIALECT 1
SearchResult result = jedis.ftSearch("idx:products", "@category:electronics");
```

### FT.PROFILE Return Type Change

The return type of `FT.PROFILE` commands has changed from `Map<String, Object>` to a structured `ProfilingInfo` object.

#### Changed Methods

**Before (v5.x):**
```java
Map.Entry<SearchResult, Map<String, Object>> ftProfileSearch(
    String indexName, FTProfileParams profileParams, Query query);

Map.Entry<AggregationResult, Map<String, Object>> ftProfileAggregate(
    String indexName, FTProfileParams profileParams, AggregationBuilder aggr);
```

**After (v6.0.0):**
```java
Map.Entry<SearchResult, ProfilingInfo> ftProfileSearch(
    String indexName, FTProfileParams profileParams, Query query);

Map.Entry<AggregationResult, ProfilingInfo> ftProfileAggregate(
    String indexName, FTProfileParams profileParams, AggregationBuilder aggr);
```

### COMMAND INFO Response Changes

The response format for `COMMAND INFO` has been updated to include subcommand details, making it compatible with Redis 7.0+ and Redis 8.0.

#### Impact

If you were parsing the `COMMAND INFO` response, you may need to update your code to handle the new structure that includes subcommand information.

**Before (v5.x):**
```java
List<Object> commandInfo = jedis.commandInfo("SET");
// Returns basic command information
```

**After (v6.0.0):**
```java
List<Object> commandInfo = jedis.commandInfo("SET");
// Returns command information including subcommand details
// Compatible with Redis 7.0+ format
```

## New Features

### Redis 8.0 Support

Jedis 6.0.0 adds full support for Redis 8.0, which includes built-in support for:

- **JSON** - Native JSON data type (previously RedisJSON module)
- **Search and Query** - Full-text search capabilities (previously RediSearch module)
- **TimeSeries** - Time-series data support (previously RedisTimeSeries module)

**Example:**
```java
JedisPooled jedis = new JedisPooled("redis://localhost:6379");

// JSON operations (built-in in Redis 8.0)
jedis.jsonSet("user:1", Path2.of("$"), "{\"name\":\"John\",\"age\":30}");
String json = jedis.jsonGet("user:1");

// Search operations (built-in in Redis 8.0)
jedis.ftCreate("idx:users",
    FTCreateParams.createParams()
        .on(IndexDataType.JSON)
        .addPrefix("user:"),
    TextField.of("$.name").as("name"),
    NumericField.of("$.age").as("age"));

SearchResult result = jedis.ftSearch("idx:users", "@name:John");
```

### SslOptions for Advanced SSL Configuration

A new `SslOptions` class provides advanced SSL/TLS configuration options for secure connections.

**Features:**
- Custom keystore and truststore configuration
- SSL protocol selection
- SSL verification mode control
- SSL parameters customization

**Example:**
```java
SslOptions sslOptions = SslOptions.builder()
    .keystore(new File("/path/to/keystore.jks"))
    .keystorePassword("keystorePassword".toCharArray())
    .truststore(new File("/path/to/truststore.jks"))
    .truststorePassword("truststorePassword".toCharArray())
    .sslVerifyMode(SslVerifyMode.FULL)
    .build();

JedisClientConfig config = DefaultJedisClientConfig.builder()
    .ssl(true)
    .sslOptions(sslOptions)
    .build();

JedisPooled jedis = new JedisPooled("localhost", 6379, config);
```

### Token-Based Authentication

Jedis 6.0.0 introduces support for token-based authentication, useful for cloud environments and managed Redis services.

**Example:**
```java
// Token-based authentication with automatic token refresh
TokenCredentials tokenCredentials = new TokenCredentials("initial-token");

JedisClientConfig config = DefaultJedisClientConfig.builder()
    .credentials(tokenCredentials)
    .build();

JedisPooled jedis = new JedisPooled("localhost", 6379, config);

// Token can be updated dynamically
tokenCredentials.updateToken("new-token");
```

### New Hash Commands

Support for new hash field expiration commands introduced in Redis 7.4:

- `HGETDEL` - Get and delete a hash field
- `HGETEX` - Get a hash field with expiration options
- `HSETEX` - Set a hash field with expiration

**Example:**
```java
// HSETEX - Set field with expiration
jedis.hsetex("user:1", 3600, "session", "abc123");

// HGETEX - Get field and update expiration
String session = jedis.hgetex("user:1", "session", 
    HGetExParams.hgetExParams().ex(7200));

// HGETDEL - Get and delete field
String oldSession = jedis.hgetdel("user:1", "session");
```

### Search Warning Messages

Search and aggregation queries now support warning messages in results, helping identify potential issues with queries.

**Example:**
```java
SearchResult result = jedis.ftSearch("idx:products", "@name:laptop");

// Check for warnings
if (result.hasWarnings()) {
    List<String> warnings = result.getWarnings();
    warnings.forEach(warning -> 
        System.out.println("Search warning: " + warning));
}
```

## Additional Resources

- [Redis 8.0 Release Notes](https://github.com/redis/redis/blob/8.0/00-RELEASENOTES)
- [Redis Search Documentation](https://redis.io/docs/interact/search-and-query/)
- [Redis Query Dialects](https://redis.io/docs/interact/search-and-query/advanced-concepts/dialects/)

## Getting Help

If you encounter issues during migration:

1. Check the [Jedis GitHub Issues](https://github.com/redis/jedis/issues)
2. Join the [Redis Discord](https://discord.gg/redis)
3. Review the [Jedis Javadocs](https://www.javadoc.io/doc/redis.clients/jedis/latest/)
4. Start a [Discussion](https://github.com/redis/jedis/discussions)



================================================
FILE: docs/migration-guides/v6-to-v7.md
================================================
# Jedis 7.0.0 Migration Guide

This guide helps you migrate from Jedis 6.2.0 to Jedis 7.0.0. Version 7.0.0 includes several breaking changes focused on removing deprecated features and improving the API design.

## Table of Contents

- [Overview](#overview)
- [Breaking Changes](#breaking-changes)
  - [Removed Deprecated Sharding/Sharded Features](#removed-deprecated-shardingsharded-features)
  - [Base Class Changes](#base-class-changes)
  - [UnifiedJedis Constructor Changes](#unifiedjedis-constructor-changes) 
  - [Return Type Changes](#return-type-changes)
- [New Features](#new-features)
  - [Automatic Failover and Failback](#automatic-failover-and-failback)
  - [Builder Pattern for Client Creation](#builder-pattern-for-client-creation)

## Overview

Jedis 7.0.0 is a major release that removes previously deprecated features and modernizes the API. The main focus areas are:

1. **Removal of deprecated sharding features** - JedisSharding and related classes have been removed
2. **Base class consolidation** - Pipeline and Transaction base classes have been renamed
3. **Builder pattern introduction** - New fluent builders for JedisPooled, JedisCluster, and JedisSentineled
4. **API cleanup** - Removal of deprecated constructors and methods

## Breaking Changes

### Removed Deprecated Sharding Features

The following classes and features have been **completely removed** in Jedis 7.0.0:

#### Removed Classes

- `JedisSharding` - Use `JedisCluster` for distributed Redis deployments instead
- `ShardedPipeline` - Use `Pipeline` with `JedisCluster` instead
- `ShardedConnectionProvider` - No replacement needed
- `ShardedCommandArguments` - Internal class, no replacement needed
- `ShardedCommandObjects` - Internal class, no replacement needed

#### Migration Path

If you were using `JedisSharding`:

**Before (v6.2.0):**
```java
List<HostAndPort> shards = Arrays.asList(
    new HostAndPort("localhost", 6379),
    new HostAndPort("localhost", 6380)
);
JedisSharding jedisSharding = new JedisSharding(shards);
jedisSharding.set("key", "value");
```

**After (v7.0.0):**
```java
// Option 1: Use JedisCluster for distributed deployments
Set<HostAndPort> nodes = new HashSet<>(Arrays.asList(
    new HostAndPort("localhost", 6379),
    new HostAndPort("localhost", 6380)
));
JedisCluster jedisCluster = new JedisCluster(nodes);
jedisCluster.set("key", "value");

// Option 2: Use JedisPooled for single-node deployments
JedisPooled jedis = new JedisPooled("localhost", 6379);
jedis.set("key", "value");
```

### Base Class Changes

Several base classes have been renamed to better reflect their purpose:

#### Pipeline Base Class

- `PipelineBase` has been **removed**
- `Pipeline` now extends `AbstractPipeline` instead

**Impact:** If you were using `PipelineBase` as a type reference, change it to `AbstractPipeline`.

**Before (v6.2.0):**
```java
PipelineBase pipeline = jedis.pipelined();
```

**After (v7.0.0):**
```java
AbstractPipeline pipeline = jedis.pipelined();
// Or use the concrete type:
Pipeline pipeline = (Pipeline) jedis.pipelined();
```

#### Transaction Base Class

- `TransactionBase` has been **removed**
- `Transaction` now extends `AbstractTransaction` instead

**Impact:** If you were using `TransactionBase` as a type reference, change it to `AbstractTransaction`.

**Before (v6.2.0):**
```java
TransactionBase transaction = jedis.multi();
```

**After (v7.0.0):**
```java
AbstractTransaction transaction = jedis.multi();
// Or use the concrete type:
Transaction transaction = (Transaction) jedis.multi();
```

### UnifiedJedis Constructor Changes

Several deprecated constructors have been removed from `UnifiedJedis`:

#### Removed Constructors

1. **Cluster constructors with maxAttempts:**
   ```java
   // REMOVED in v7.0.0
   UnifiedJedis(Set<HostAndPort> nodes, JedisClientConfig config, int maxAttempts)
   UnifiedJedis(Set<HostAndPort> nodes, JedisClientConfig config, int maxAttempts, Duration maxTotalRetriesDuration)
   UnifiedJedis(Set<HostAndPort> nodes, JedisClientConfig config, GenericObjectPoolConfig<Connection> poolConfig, int maxAttempts, Duration maxTotalRetriesDuration)
   ```

2. **Sharding constructors:**
   ```java
   // REMOVED in v7.0.0
   UnifiedJedis(ShardedConnectionProvider provider)
   UnifiedJedis(ShardedConnectionProvider provider, Pattern tagPattern)
   ```

#### Migration Path

**Before (v6.2.0):**
```java
Set<HostAndPort> nodes = new HashSet<>();
nodes.add(new HostAndPort("localhost", 6379));
JedisClientConfig config = DefaultJedisClientConfig.builder().build();

UnifiedJedis jedis = new UnifiedJedis(nodes, config, 3);
```

**After (v7.0.0):**
```java
Set<HostAndPort> nodes = new HashSet<>();
nodes.add(new HostAndPort("localhost", 6379));
JedisClientConfig config = DefaultJedisClientConfig.builder().build();

// Use JedisCluster instead
JedisCluster jedis = new JedisCluster(nodes, config);

// Or use the new builder pattern
JedisCluster jedis = JedisCluster.builder()
    .nodes(nodes)
    .clientConfig(config)
    .build();
```

### Return Type Changes

#### UnifiedJedis.pipelined()

The return type has been changed to be more generic:

**Before (v6.2.0):**
```java
PipelineBase pipelined()
```

**After (v7.0.0):**
```java
AbstractPipeline pipelined()
```

**Impact:** Minimal - `AbstractPipeline` is the parent class, so existing code should continue to work.

## New Features

### Automatic Failover and Failback

Jedis 7.0.0 significantly refactors the automatic failover and failback API. If you were using the failover features in v6.2.0 with `MultiClusterClientConfig` and `MultiClusterPooledConnectionProvider`, these have been renamed and improved in v7.0.0.

**For detailed migration guidance on automatic failover and failback** please refer to the **[Automatic Failover and Failback Migration Guide](https://redis.github.io/jedis/failover/#migration-from-6x-to-7x)**.

### Builder Pattern for Client Creation

Jedis 7.0.0 introduces a fluent builder pattern for creating client instances, making configuration more intuitive and discoverable.

#### JedisPooled Builder

**New in v7.0.0:**
```java
JedisPooled jedis = JedisPooled.builder()
    .hostAndPort("localhost", 6379)
    .clientConfig(DefaultJedisClientConfig.builder()
        .user("myuser")
        .password("mypassword")
        .database(0)
        .build())
    .poolConfig(new GenericObjectPoolConfig<>())
    .build();
```

#### JedisCluster Builder

**New in v7.0.0:**
```java
Set<HostAndPort> nodes = new HashSet<>();
nodes.add(new HostAndPort("localhost", 7000));
nodes.add(new HostAndPort("localhost", 7001));

JedisCluster cluster = JedisCluster.builder()
    .nodes(nodes)
    .clientConfig(DefaultJedisClientConfig.builder()
        .password("mypassword")
        .build())
    .maxAttempts(5)
    .maxTotalRetriesDuration(Duration.ofSeconds(10))
    .build();
```

#### JedisSentineled Builder

**New in v7.0.0:**
```java
Set<HostAndPort> sentinels = new HashSet<>();
sentinels.add(new HostAndPort("localhost", 26379));
sentinels.add(new HostAndPort("localhost", 26380));

JedisSentineled jedis = JedisSentineled.builder()
    .masterName("mymaster")
    .sentinels(sentinels)
    .clientConfig(DefaultJedisClientConfig.builder()
        .password("mypassword")
        .build())
    .build();
```

## Getting Help

If you encounter issues during migration create an issue or [start a discussion](https://github.com/redis/jedis/discussions/new?category=q-a).



================================================
FILE: docs/redisearch.md
================================================
# RediSearch Jedis Quick Start

To use RediSearch features with Jedis, you'll need to use an implementation of RediSearchCommands.

## Creating the RediSearch client

Initializing the client with RedisClient:

```java
RedisClient client = RedisClient.builder().hostAndPort("localhost", 6379).build();
```

Initializing the client with RedisClusterClient:

```java
Set<HostAndPort> nodes = new HashSet<>();
nodes.add(new HostAndPort("127.0.0.1", 7379));
nodes.add(new HostAndPort("127.0.0.1", 7380));

RedisClusterClient client = RedisClusterClient.builder().nodes(nodes).build();
```

## Indexing and querying

### Indexing

Defining a schema for an index and creating it:

```java
Schema sc = new Schema()
        .addTextField("title", 5.0)
        .addTextField("body", 1.0)
        .addNumericField("price");

IndexDefinition def = new IndexDefinition()
        .setPrefixes(new String[]{"item:", "product:"})
        .setFilter("@price>100");

client.ftCreate("item-index", IndexOptions.defaultOptions().setDefinition(def), sc);
```

Alternatively, we can create the same index using FTCreateParams:

```java
client.ftCreate("item-index",

        FTCreateParams.createParams()
                .prefix("item:", "product:")
                .filter("@price>100"),

        TextField.of("title").weight(5.0),
        TextField.of("body"),
        NumericField.of("price")
);
```

### Inserting

Adding documents to the index:

```java
Map<String, Object> fields = new HashMap<>();
fields.put("title", "hello world");
fields.put("state", "NY");
fields.put("body", "lorem ipsum");
fields.put("price", 1337);

client.hset("item:hw", RediSearchUtil.toStringMap(fields));
```

Another way to insert documents:

```java
client.hsetObject("item:hw", fields);
```

### Querying

Searching the index:

```java
Query q = new Query("hello world")
        .addFilter(new Query.NumericFilter("price", 0, 1000))
        .limit(0, 5);

SearchResult sr = client.ftSearch("item-index", q);
```

Alternative searching using FTSearchParams:

```java
SearchResult sr = client.ftSearch("item-index",
        "hello world",
        FTSearchParams.searchParams()
                .filter("price", 0, 1000)
                .limit(0, 5));
```

Aggregation query:

```java
AggregationBuilder ab = new AggregationBuilder("hello")
        .apply("@price/1000", "k")
        .groupBy("@state", Reducers.avg("@k").as("avgprice"))
        .filter("@avgprice>=2")
        .sortBy(10, SortedField.asc("@state"));

AggregationResult ar = client.ftAggregate("item-index", ab);
```


================================================
FILE: docs/redisjson.md
================================================
# RedisJSON Jedis Quick Start

Jedis supports [RedisJSON](https://redis.io/docs/latest/develop/data-types/json/) and [RediSearch](https://redis.io/docs/latest/develop/interact/search-and-query/).

The latest versions of RedisJSON let you store, manipulate, index, and query JSON.
To use these features with Jedis, you'll need to use the `UnifiedJedis` interface or a sub-class of it.

Let's see how this works.

## Creating with RedisJSON client

First, let's create a `RedisClient` client instance:

```java
RedisClient client = RedisClient.builder().hostAndPort("localhost", 6479).build();
```

Or, a `RedisClusterClient` client instance:

```java
Set<HostAndPort> nodes = new HashSet<>();
nodes.add(new HostAndPort("127.0.0.1", 7379));
nodes.add(new HostAndPort("127.0.0.1", 7380));

RedisClusterClient client = RedisClusterClient.builder().nodes(nodes).build();
```

Now we can start working with JSON. For these examples, we'll be using [GSON](https://github.com/google/gson)
to handle the serialization of POJOs to JSON.

## Creating JSON documents

Suppose we're building an online learning platform, and we want to represent students.
Let's create a POJO to represent our students:

```java
private class Student {
    private String firstName;
    private String lastName;

    public Student(String firstName, String lastName) {
        this.firstName = firstName;
        this.lastName = lastName;
    }

    public String getFirstName() {
        return firstName;
    }

    public String getLastName() {
        return lastName;
    }
}
```

Now we can create some students and store them in Redis as JSON:

```java
final Gson gson = new Gson();

Student maya = new Student("Maya", "Jayavant");
client.jsonSet("student:111", gson.toJson(maya));

Student oliwia = new Student("Oliwia", "Jagoda");
client.jsonSet("student:112", gson.toJson(oliwia));
```

Some of other ways to store POJOs as JSON:

```
client.jsonSetLegacy("student:111", maya);
client.jsonSetWithEscape("student:112", oliwia);
```

## Querying and indexing JSON

If we want to be able to query this JSON, we'll need to create an index. Let's create an index on the "firstName" and "lastName" fields.

1. We define which fields to index ("firstName" and "lastName").
2. We set up the index definition to recognize JSON and include only those documents whose key starts with "student:".
3. Then we actually create the index, called "student-index", by calling `ftCreate()`.

```java
Schema schema = new Schema().addTextField("$.firstName", 1.0).addTextField("$.lastName", 1.0);

IndexDefinition rule = new IndexDefinition(IndexDefinition.Type.JSON)
        .setPrefixes(new String[]{"student:"});

client.ftCreate("student-index", IndexOptions.defaultOptions().setDefinition(rule), schema);
```

Alternatively creating the same index using FTCreateParams: 

```java
client.ftCreate("student-index",
        FTCreateParams.createParams().on(IndexDataType.JSON).prefix("student:"),
        TextField.of("$.firstName"), TextField.of("$.lastName"));
```

With an index now defined, we can query our JSON. Let's find all students whose name begins with "maya":

```java
Query q = new Query("@\\$\\.firstName:maya*");
SearchResult mayaSearch = client.ftSearch("student-index", q);
```

Same query can be done using FTSearchParams:

```java
SearchResult mayaSearch = client.ftSearch("student-index",
        "@\\$\\.firstName:maya*",
        FTSearchParams.searchParams());
```

We can then iterate over our search results:

```java
List<Document> docs = mayaSearch.getDocuments();
for (Document doc : docs) {
   System.out.println(doc);
}
```

This example just scratches the surface. You can atomically manipulate JSON documents and query them in a variety of ways.
See the [RedisJSON docs](https://oss.redis.com/redisjson/), the [RediSearch](https://oss.redis.com/redisearch/) docs,
and our course, ["Querying, Indexing, and Full-text Search in Redis"](https://university.redis.com/courses/ru203/),
for a lot more examples.


================================================
FILE: docs/requirements.txt
================================================
mkdocs~=1.6
mkdocs-material~=9.5
pymdown-extensions~=10.8
mkdocs-macros-plugin~=1.0
mkdocs-glightbox

================================================
FILE: docs/transactions-multi.md
================================================
# Transactions/Multi

## Overview

Transactions guarantee that all the included commands will execute to completion without being interrupted by commands from other clients. See the [Transactions](https://redis.io/docs/latest/develop/interact/transactions/) page for more information.

To execute commands in a transaction, create a transaction object with the `multi()` command, call command methods on that object, and then call the transaction object's `exec()` method to execute it. You can access the results from commands in the transaction using `Response` objects. The `exec()` method also returns a `List<Object>` value that contains all the result values in the order the commands were executed.


## Immediate Transaction Start

The simplest way to use transactions is to call `multi()` on your Jedis client, which immediately starts a transaction by sending the `MULTI` command to Redis. All subsequent commands are queued until `exec()` is called.

```java
import redis.clients.jedis.RedisClient;
import redis.clients.jedis.AbstractTransaction;
import redis.clients.jedis.Response;
import java.util.List;

RedisClient jedis = RedisClient.create("redis://localhost:6379");

// Create a transaction that immediately sends MULTI
try (AbstractTransaction tx = jedis.multi()) {
    // Commands are queued
    Response<String> set1 = tx.set("counter:1", "0");
    Response<Long> incr1 = tx.incrBy("counter:1", 1);
    Response<Long> incr2 = tx.incrBy("counter:1", 2);
    
    // Execute the transaction
    List<Object> results = tx.exec();
    
    // Access results via Response objects
    System.out.println(incr1.get()); // 1
    System.out.println(incr2.get()); // 3
    
    // Or via the results list
    System.out.println(results.get(0)); // OK
    System.out.println(results.get(1)); // 1
    System.out.println(results.get(2)); // 3
}

jedis.close();
```

### Response Handling

Commands invoked within a transaction return `Response<T>` objects. These responses become available only after `exec()` is called:

- Before `exec()`: Calling `response.get()` will throw `IllegalStateException` with the message "Please close pipeline or multi block before calling this method."
- After `exec()`: Response objects contain the actual results from Redis

The `exec()` method returns a `List<Object>` containing all command results in the order they were queued.

## Manual Transaction Start

For more control, you can create a transaction without immediately sending `MULTI`. This is useful when you need to:

- Execute commands before starting the transaction
- Use `WATCH` to implement optimistic locking
- Conditionally start the transaction

Create a manual transaction by passing `false` to the `transaction()` method:

```java
RedisClient jedis = RedisClient.create("redis://localhost:6379");

// Create transaction without sending MULTI
try (AbstractTransaction tx = jedis.transaction(false)) {
    
    // Commands before multi() are executed immediately
    Response<String> setBeforeMulti = tx.set("mykey", "initial_value");
    Response<String> getBeforeMulti = tx.get("mykey");
    
    // These responses are available immediately
    System.out.println(setBeforeMulti.get()); // OK
    System.out.println(getBeforeMulti.get()); // initial_value
    
    // Now start the transaction
    tx.multi();
    
    // Commands after multi() are queued
    Response<String> set = tx.set("mykey", "new_value");
    Response<String> get = tx.get("mykey");
    
    // Execute the transaction
    List<Object> results = tx.exec();
    
    // Results from queued commands
    System.out.println(set.get()); // OK
    System.out.println(get.get()); // new_value
}

jedis.close();
```

### Using WATCH for Optimistic Locking

The `WATCH` command monitors keys for changes. If any watched key is modified before `EXEC`, the transaction is aborted and `exec()` returns `null`.

**Important:** `WATCH` must be executed through the transaction object to ensure it uses the transaction's dedicated connection.

```java
try (AbstractTransaction tx = jedis.transaction(false)) {
    // WATCH must be on the transaction's dedicated connection
    tx.watch("counter");

    // Read current value - can use the client directly
    String current = jedis.get("counter");
    int newValue = Integer.parseInt(current) + 1;

    // Start transaction and queue update
    tx.multi();
    tx.set("counter", String.valueOf(newValue));

    // Returns null if key was modified by another client
    List<Object> results = tx.exec();

    if (results == null) {
        System.out.println("Transaction aborted - key was modified");
    }
}
```

## Connection Lifecycle

A transaction acquires a dedicated connection that is held until `close()` is called. Ensure the transaction is closed on error:

```java
try (AbstractTransaction tx = jedis.multi()) {
    tx.set("key", "value");
    tx.exec();
}
```

**Important:** `WATCH` must be executed through the transaction object to ensure it uses the transaction's dedicated connection.



## Transaction Completion

Complete a transaction by calling either:

- **`exec()`** - Executes all queued commands atomically and returns a `List<Object>` with the results
- **`discard()`** - Discards all queued commands without executing them

### Automatic Cleanup

When using try-with-resources, `close()` automatically sends `DISCARD` (if in `MULTI` state) or `UNWATCH` (if in `WATCH` state) to ensure the connection is returned to the pool in a clean state.





================================================
FILE: docs/tutorials_examples.md
================================================
# Tutorials and Examples

## General

* Redis for Java Developers: <https://university.redis.io/learningpath/kllayn0wtd847i>
* Jedis Guide: <https://redis.io/docs/latest/develop/clients/jedis/>
* Connecting to a Redis server: <https://redis.io/docs/latest/develop/clients/jedis/connect/>
* Using Jedis in production: <https://redis.io/docs/latest/develop/clients/jedis/produsage/>

## Client-side Caching

* Client-side Caching: <https://github.com/Redislabs-Solution-Architects/redis-client-side-caching-csc-jedis-demo>

## JSON

* Store, Read and Search JSON: <https://redis.io/kb/doc/1cd7hi2721/learn-to-store-read-and-search-data-in-json-documents-using-jedis>

## Search

* Vector Search: <https://redis.io/kb/doc/13qsrk8xpx/how-to-perform-vector-search-in-java-with-the-jedis-client-library>
* Spring Boot Search: <https://github.com/Redislabs-Solution-Architects/Spring-Boot-RediSearch-Example>


================================================
FILE: docs/verifying-artifacts.md
================================================
## Verifying contents
Jedis artifacts published on Maven central are signed. For each artifact, there is an associated signature file with the `.asc` suffix.

## Keys used for signing
```
pub   rsa3072 2023-12-17 [SC]
165E63A75659104C72B49129C2B44BE148BDCEC8
uid           [ unknown] Redis OSS <oss@redis.com>
sig 3        C2B44BE148BDCEC8 2023-12-17  [self-signature]
```
A copy of this key is stored on the  keyserver [Ubuntu keyserver](https://keyserver.ubuntu.com/pks/lookup?op=vindex&search=0xC2B44BE148BDCEC8)

### Before 2023-12-17 
```
pub   rsa3072 2023-09-03 [SC]
6BF6C1905C9642D1181D157443543D884CC71C96
uid           [ unknown] Redis OSS <oss@redis.com>
sig 3        43543D884CC71C96 2023-09-03  [self-signature]
```
A copy of this key is stored on the  keyserver [Ubuntu keyserver](https://keyserver.ubuntu.com/pks/lookup?op=vindex&search=0x43543D884CC71C96)

### Before 2023-09-03
```
pub   rsa3072 2021-06-27 [SC] [expired: 2023-06-27]
      1C913D6D36DAD0A679863F5CB68CD0A11D28B97D
uid           [ expired] RedisLabs OSS <oss@redislabs.com>
sig 3        B68CD0A11D28B97D 2021-06-27  [self-signature]
```
A copy of this key is stored on the keyserver [Ubuntu keyserver](https://keyserver.ubuntu.com/pks/lookup?op=vindex&search=0xB68CD0A11D28B97D)
### Before 2021-06-27
```
pub   rsa3072 2018-08-12 [SC] [expired: 2020-08-11]
      4EC78BD38D30A2E85C02C39C2D62B50EF8D3297A
uid           [ expired] Guy Korlad <guy.korland@redislabs.com>
sig 3        2D62B50EF8D3297A 2018-08-12  [self-signature]
```
A copy of this key is stored on the keyserver [Ubuntu keyserver](https://keyserver.ubuntu.com/pks/lookup?op=vindex&search=0x2D62B50EF8D3297A)

================================================
FILE: formatter-pom.xml
================================================
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
	<parent>
		<groupId>org.sonatype.oss</groupId>
		<artifactId>oss-parent</artifactId>
		<version>7</version>
	</parent>

	<modelVersion>4.0.0</modelVersion>
	<packaging>jar</packaging>
	<groupId>redis.clients</groupId>
	<artifactId>jedis</artifactId>
	<name>Jedis</name>
	<version>5.3.0</version>
	<description>Jedis is a blazingly small and sane Redis java client.</description>
	<url>https://github.com/redis/jedis</url>


	<build>
		<plugins>
			<plugin>
				<groupId>net.revelc.code.formatter</groupId>
				<artifactId>formatter-maven-plugin</artifactId>
				<version>2.16.0</version>
				<configuration>
					<configFile>${project.basedir}/hbase-formatter.xml</configFile>
				</configuration>
				<executions>
					<execution>
						<goals>
							<goal>validate</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
		</plugins>
	</build>
</project>


================================================
FILE: hbase-formatter.xml
================================================
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<profiles version="12">
<profile kind="CodeFormatterProfile" name="'HBase Apache Current'" version="12">
<setting id="org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.disabling_tag" value="@formatter:off"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_field" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.use_on_off_tags" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_ellipsis" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_multiple_fields" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_conditional_expression" value="80"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_binary_operator" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_array_initializer" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_after_package" value="1"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.continuation_indentation" value="2"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation" value="20"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk" value="1"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_binary_operator" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_package" value="0"/>
<setting id="org.eclipse.jdt.core.compiler.source" value="1.7"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.format_line_comments" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.join_wrapped_lines" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_member_type" value="1"/>
<setting id="org.eclipse.jdt.core.formatter.align_type_members_on_columns" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_unary_operator" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.indent_parameter_description" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.lineSplit" value="100"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.indentation.size" value="2"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.enabling_tag" value="@formatter:on"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_assignment" value="0"/>
<setting id="org.eclipse.jdt.core.compiler.problem.assertIdentifier" value="error"/>
<setting id="org.eclipse.jdt.core.formatter.tabulation.char" value="space"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.indent_statements_compare_to_body" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_method" value="1"/>
<setting id="org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_method_declaration" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_switch" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments" value="do not insert"/>
<setting id="org.eclipse.jdt.core.compiler.problem.enumIdentifier" value="error"/>
<setting id="org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_ellipsis" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_block" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_method_declaration" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.compact_else_if" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_enum_constant" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.comment.indent_root_tags" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.tabulation.size" value="2"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.indent_empty_lines" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_block_in_case" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve" value="1"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter" value="insert"/>
<setting id="org.eclipse.jdt.core.compiler.compliance" value="1.7"/>
<setting id="org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer" value="2"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_unary_operator" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_binary_expression" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while" value="do not insert"/>
<setting id="org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode" value="enabled"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_label" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.comment.format_javadoc_comments" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.comment.line_length" value="100"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_between_import_groups" value="1"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.wrap_before_binary_operator" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations" value="1"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.indent_statements_compare_to_block" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.join_lines_in_comments" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_compact_if" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_imports" value="1"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.format_html" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.format_source_code" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer" value="insert"/>
<setting id="org.eclipse.jdt.core.compiler.codegen.targetPlatform" value="1.7"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_resources_in_try" value="80"/>
<setting id="org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.comment.format_header" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.comment.format_block_comments" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_enum_constants" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_type_declaration" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_after_imports" value="1"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line" value="true"/>
</profile>
</profiles>


================================================
FILE: mkdocs.yml
================================================
site_name: Jedis
repo_name: Jedis
site_author: Redis, Inc.
site_description: Jedis is a Redis client for the JVM.
repo_url: https://github.com/redis/jedis
remote_branch: gh-pages

theme:
  name: material
  logo: assets/images/logo.png
  favicon: assets/images/favicon-16x16.png
extra_css:
  - css/extra.css

plugins:
  - search
  - macros:
      include_dir: .

markdown_extensions:
  - pymdownx.highlight:
      anchor_linenums: true
      line_spans: __span
      pygments_lang_class: true
  - pymdownx.inlinehilite
  - pymdownx.snippets
  - pymdownx.superfences
  - admonition
  - pymdownx.details

nav:
  - Home: index.md
  - Jedis Maven: jedis-maven.md
  - User Guide:
    - Transactions/Multi: transactions-multi.md
  - Migrating to newer versions:
      - Jedis 7: migration-guides/v6-to-v7.md
      - Jedis 6: migration-guides/v5-to-v6.md
      - Jedis 5: migration-guides/v4-to-v5.md
      - Jedis 4:
        - Breaking changes: migration-guides/v3-to-v4.md
        - Primitives: migration-guides/v3-to-v4-primitives.md
        - ZSET: migration-guides/v3-to-v4-zset-list.md
  - Using Jedis with ...:
    - Search: redisearch.md
    - JSON: redisjson.md
  - Failover: failover.md
  - Verifying artifacts: verifying-artifacts.md
  - FAQ: faq.md
  - API Reference: https://www.javadoc.io/doc/redis.clients/jedis/latest/index.html
  - Tutorials and Examples:  tutorials_examples.md
  - Jedis Guide: https://redis.io/docs/latest/develop/connect/clients/java/jedis/
  - Redis Command Reference: https://redis.io/docs/latest/commands/
  - Advanced Usage: advanced-usage.md



================================================
FILE: pom.xml
================================================
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
	<parent>
		<groupId>org.sonatype.oss</groupId>
		<artifactId>oss-parent</artifactId>
		<version>7</version>
	</parent>

	<modelVersion>4.0.0</modelVersion>
	<packaging>jar</packaging>
	<groupId>redis.clients</groupId>
	<artifactId>jedis</artifactId>
	<version>8.0.0-SNAPSHOT</version>
	<name>Jedis</name>
	<description>Jedis is a blazingly small and sane Redis java client.</description>
	<url>https://github.com/redis/jedis</url>

	<mailingLists>
		<mailingList>
			<name>Jedis Mailing List</name>
			<post>jedis_redis@googlegroups.com</post>
			<archive>
				https://groups.google.com/group/jedis_redis
			</archive>
		</mailingList>
	</mailingLists>

	<licenses>
		<license>
			<name>MIT</name>
			<url>https://github.com/redis/jedis/blob/master/LICENSE</url>
			<distribution>repo</distribution>
		</license>
	</licenses>

	<issueManagement>
		<system>github</system>
		<url>https://github.com/redis/jedis/issues</url>
	</issueManagement>

	<scm>
		<connection>scm:git:git@github.com:redis/jedis.git</connection>
		<url>scm:git:git@github.com:redis/jedis.git</url>
		<developerConnection>https://github.com/redis/jedis/tree/master</developerConnection>
	</scm>

	<developers>
		<developer>
			<id>redis</id>
			<name>Redis Ltd.</name>
			<organization>Redis</organization>
			<organizationUrl>https://redis.io</organizationUrl>
		</developer>
	</developers>

	<properties>
		<github.global.server>github</github.global.server>
		<jedis.module.name>redis.clients.jedis</jedis.module.name>
		<slf4j.version>1.7.36</slf4j.version>
		<resilience4j.version>1.7.1</resilience4j.version>
		<jackson.version>2.21.1</jackson.version>
		<maven.surefire.version>3.5.5</maven.surefire.version>
		<junit.version>5.14.3</junit.version>
		<!-- Default JVM options for tests -->
		<JVM_OPTS></JVM_OPTS>
		<!-- Default excluded groups for tests - can be overridden from command line -->
		<excludedGroupsForUnitTests>integration,scenario</excludedGroupsForUnitTests>
		<skipUnitTests>false</skipUnitTests>
		<skipIntegrationTests>false</skipIntegrationTests>
		<skipScenarioTests>true</skipScenarioTests>
	</properties>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.junit</groupId>
				<artifactId>junit-bom</artifactId>
				<version>${junit.version}</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>

	<dependencies>
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-api</artifactId>
			<version>${slf4j.version}</version>
		</dependency>
		<dependency>
			<groupId>org.apache.commons</groupId>
			<artifactId>commons-pool2</artifactId>
			<version>2.12.1</version>
		</dependency>
		<dependency>
			<groupId>org.json</groupId>
			<artifactId>json</artifactId>
			<version>20251224</version>
		</dependency>
		<dependency>
			<groupId>com.google.code.gson</groupId>
			<artifactId>gson</artifactId>
			<version>2.13.2</version>
		</dependency>

		<dependency>
			<groupId>redis.clients.authentication</groupId>
			<artifactId>redis-authx-core</artifactId>
			<version>0.1.1-beta2</version>
		</dependency>

		<!-- Optional dependencies -->

		<!-- UNIX socket connection support -->
		<dependency>
			<groupId>com.kohlschutter.junixsocket</groupId>
			<artifactId>junixsocket-core</artifactId>
			<version>2.10.1</version>
			<type>pom</type>
			<scope>test</scope>
		</dependency>
		<!-- Well-known text representation of geometry in RediSearch support -->
		<dependency>
			<groupId>org.locationtech.jts</groupId>
			<artifactId>jts-core</artifactId>
			<version>1.20.0</version>
			<scope>test</scope>
		</dependency>

		<!-- test -->
		<dependency>
			<groupId>org.junit.jupiter</groupId>
			<artifactId>junit-jupiter-api</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.junit.jupiter</groupId>
			<artifactId>junit-jupiter-params</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.mockito</groupId>
			<artifactId>mockito-junit-jupiter</artifactId>
			<version>4.11.0</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.junit.jupiter</groupId>
			<artifactId>junit-jupiter-engine</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.hamcrest</groupId>
			<artifactId>hamcrest</artifactId>
			<version>3.0</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>ch.qos.logback</groupId>
			<artifactId>logback-classic</artifactId>
			<version>1.2.13</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.mockito</groupId>
			<artifactId>mockito-inline</artifactId>
			<version>4.11.0</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-databind</artifactId>
			<version>${jackson.version}</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>com.fasterxml.jackson.datatype</groupId>
			<artifactId>jackson-datatype-jsr310</artifactId>
			<version>${jackson.version}</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>net.javacrumbs.json-unit</groupId>
			<artifactId>json-unit</artifactId>
			<version>2.40.1</version> <!-- 3.x requires Java 17 -->
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.apache.httpcomponents.client5</groupId>
			<artifactId>httpclient5-fluent</artifactId>
			<version>5.6</version>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>org.awaitility</groupId>
			<artifactId>awaitility</artifactId>
			<version>4.3.0</version>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>redis.clients.authentication</groupId>
			<artifactId>redis-authx-entraid</artifactId>
			<version>0.1.1-beta2</version>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>eu.rekawek.toxiproxy</groupId>
			<artifactId>toxiproxy-java</artifactId>
			<version>2.1.11</version>
			<scope>test</scope>
		</dependency>
		<!-- circuit breaker / failover -->
		<dependency>
			<groupId>io.github.resilience4j</groupId>
			<artifactId>resilience4j-all</artifactId>
			<version>${resilience4j.version}</version>
			<optional>true</optional>
		</dependency>
		<dependency>
			<groupId>io.github.resilience4j</groupId>
			<artifactId>resilience4j-circuitbreaker</artifactId>
			<version>${resilience4j.version}</version>
			<optional>true</optional>
		</dependency>
		<dependency>
			<groupId>io.github.resilience4j</groupId>
			<artifactId>resilience4j-retry</artifactId>
			<version>${resilience4j.version}</version>
			<optional>true</optional>
		</dependency>
	</dependencies>

	<distributionManagement>
		<repository>
			<id>central</id>
			<url>https://central.sonatype.com/api/v1/publisher/deployments/upload/</url>
		</repository>
		<snapshotRepository>
			<id>central</id>
			<url>https://central.sonatype.com/repository/maven-snapshots/</url>
		</snapshotRepository>
	</distributionManagement>

	<build>
		<resources>
			<resource>
				<directory>src/main/resources</directory>
				<filtering>true</filtering>
			</resource>
		</resources>
		<plugins>
			<plugin>
				<groupId>org.jacoco</groupId>
				<artifactId>jacoco-maven-plugin</artifactId>
				<version>0.8.14</version>
				<executions>
					<!-- Collect coverage for unit tests -->
					<execution>
						<id>prepare-agent-ut</id>
						<goals>
							<goal>prepare-agent</goal>
						</goals>
						<configuration>
							<propertyName>argLine</propertyName>
							<destFile>${project.build.directory}/jacoco-ut.exec</destFile>
						</configuration>
					</execution>
					<!-- Collect coverage for integration tests tagged with @Tag("integration") -->
					<execution>
						<id>prepare-agent-it-tagged</id>
						<goals>
							<goal>prepare-agent</goal>
						</goals>
						<configuration>
							<propertyName>failsafeTaggedArgLine</propertyName>
							<destFile>${project.build.directory}/jacoco-it-tagged.exec</destFile>
						</configuration>
					</execution>
					<!-- Collect coverage for integration tests with filename suffix IntegrationTest(s) -->
					<execution>
						<id>prepare-agent-it-suffix</id>
						<goals>
							<goal>prepare-agent</goal>
						</goals>
						<configuration>
							<propertyName>failsafeSuffixArgLine</propertyName>
							<destFile>${project.build.directory}/jacoco-it-suffix.exec</destFile>
						</configuration>
					</execution>
					<!-- Collect coverage for scenario tests -->
					<execution>
						<id>prepare-a
Download .txt
gitextract_6u_dou_5/

├── .github/
│   ├── CONTRIBUTING.md
│   ├── ISSUE_TEMPLATE
│   ├── actions/
│   │   └── run-tests/
│   │       └── action.yml
│   ├── codecov.yml
│   ├── dependabot.yml
│   ├── release-drafter-config.yml
│   └── workflows/
│       ├── codeql-analysis.yml
│       ├── docs.yml
│       ├── doctests.yml
│       ├── format_check.yml
│       ├── integration.yml
│       ├── release-drafter.yml
│       ├── snapshot.yml
│       ├── stale-issues.yml
│       ├── test-on-docker.yml
│       └── version-and-release.yml
├── .gitignore
├── LICENSE
├── Makefile
├── README.md
├── docs/
│   ├── Dockerfile
│   ├── README.md
│   ├── advanced-usage.md
│   ├── css/
│   │   └── extra.css
│   ├── failover.md
│   ├── faq.md
│   ├── index.md
│   ├── jedis-maven.md
│   ├── migration-guides/
│   │   ├── v3-to-v4-primitives.md
│   │   ├── v3-to-v4-zset-list.md
│   │   ├── v3-to-v4.md
│   │   ├── v4-to-v5.md
│   │   ├── v5-to-v6.md
│   │   └── v6-to-v7.md
│   ├── redisearch.md
│   ├── redisjson.md
│   ├── requirements.txt
│   ├── transactions-multi.md
│   ├── tutorials_examples.md
│   └── verifying-artifacts.md
├── formatter-pom.xml
├── hbase-formatter.xml
├── mkdocs.yml
├── pom.xml
└── src/
    ├── main/
    │   ├── java/
    │   │   └── redis/
    │   │       └── clients/
    │   │           └── jedis/
    │   │               ├── AbstractPipeline.java
    │   │               ├── AbstractTransaction.java
    │   │               ├── BinaryJedisPubSub.java
    │   │               ├── BinaryJedisShardedPubSub.java
    │   │               ├── Builder.java
    │   │               ├── BuilderFactory.java
    │   │               ├── ClientSetInfoConfig.java
    │   │               ├── ClusterCommandObjects.java
    │   │               ├── ClusterPipeline.java
    │   │               ├── CommandArguments.java
    │   │               ├── CommandFlagsRegistry.java
    │   │               ├── CommandKeyArgumentPreProcessor.java
    │   │               ├── CommandObject.java
    │   │               ├── CommandObjects.java
    │   │               ├── Connection.java
    │   │               ├── ConnectionFactory.java
    │   │               ├── ConnectionPool.java
    │   │               ├── ConnectionPoolConfig.java
    │   │               ├── DefaultJedisClientConfig.java
    │   │               ├── DefaultJedisSocketFactory.java
    │   │               ├── DefaultRedisCredentials.java
    │   │               ├── DefaultRedisCredentialsProvider.java
    │   │               ├── DriverInfo.java
    │   │               ├── Endpoint.java
    │   │               ├── GeoCoordinate.java
    │   │               ├── HostAndPort.java
    │   │               ├── HostAndPortMapper.java
    │   │               ├── Jedis.java
    │   │               ├── JedisClientConfig.java
    │   │               ├── JedisCluster.java
    │   │               ├── JedisClusterInfoCache.java
    │   │               ├── JedisFactory.java
    │   │               ├── JedisMetaInfo.java
    │   │               ├── JedisMonitor.java
    │   │               ├── JedisPool.java
    │   │               ├── JedisPoolConfig.java
    │   │               ├── JedisPooled.java
    │   │               ├── JedisPubSub.java
    │   │               ├── JedisPubSubBase.java
    │   │               ├── JedisSafeAuthenticator.java
    │   │               ├── JedisSentinelPool.java
    │   │               ├── JedisSentineled.java
    │   │               ├── JedisShardedPubSub.java
    │   │               ├── JedisShardedPubSubBase.java
    │   │               ├── JedisSocketFactory.java
    │   │               ├── Module.java
    │   │               ├── MultiDbClient.java
    │   │               ├── MultiDbConfig.java
    │   │               ├── MultiNodePipelineBase.java
    │   │               ├── Pipeline.java
    │   │               ├── PipeliningBase.java
    │   │               ├── Protocol.java
    │   │               ├── RedisClient.java
    │   │               ├── RedisClusterClient.java
    │   │               ├── RedisCredentials.java
    │   │               ├── RedisCredentialsProvider.java
    │   │               ├── RedisProtocol.java
    │   │               ├── RedisSentinelClient.java
    │   │               ├── ReliableTransaction.java
    │   │               ├── Response.java
    │   │               ├── SSLSocketWrapper.java
    │   │               ├── ScanIteration.java
    │   │               ├── SslOptions.java
    │   │               ├── SslVerifyMode.java
    │   │               ├── StaticCommandFlagsRegistry.java
    │   │               ├── StaticCommandFlagsRegistryInitializer.java
    │   │               ├── StreamEntryID.java
    │   │               ├── Transaction.java
    │   │               ├── UnifiedJedis.java
    │   │               ├── annots/
    │   │               │   ├── Experimental.java
    │   │               │   ├── Internal.java
    │   │               │   └── VisibleForTesting.java
    │   │               ├── args/
    │   │               │   ├── BitCountOption.java
    │   │               │   ├── BitOP.java
    │   │               │   ├── ClientAttributeOption.java
    │   │               │   ├── ClientPauseMode.java
    │   │               │   ├── ClientType.java
    │   │               │   ├── ClusterFailoverOption.java
    │   │               │   ├── ClusterResetType.java
    │   │               │   ├── ExpiryOption.java
    │   │               │   ├── FlushMode.java
    │   │               │   ├── FunctionRestorePolicy.java
    │   │               │   ├── GeoUnit.java
    │   │               │   ├── HotkeysMetric.java
    │   │               │   ├── LatencyEvent.java
    │   │               │   ├── ListDirection.java
    │   │               │   ├── ListPosition.java
    │   │               │   ├── Rawable.java
    │   │               │   ├── RawableFactory.java
    │   │               │   ├── SaveMode.java
    │   │               │   ├── SortedSetOption.java
    │   │               │   ├── SortingOrder.java
    │   │               │   ├── StreamDeletionPolicy.java
    │   │               │   ├── UnblockType.java
    │   │               │   └── package-info.java
    │   │               ├── authentication/
    │   │               │   ├── AuthXEventListener.java
    │   │               │   ├── AuthXManager.java
    │   │               │   ├── JedisAuthenticationException.java
    │   │               │   └── TokenCredentials.java
    │   │               ├── bloom/
    │   │               │   ├── BFInsertParams.java
    │   │               │   ├── BFReserveParams.java
    │   │               │   ├── CFInsertParams.java
    │   │               │   ├── CFReserveParams.java
    │   │               │   ├── RedisBloomProtocol.java
    │   │               │   ├── TDigestMergeParams.java
    │   │               │   ├── commands/
    │   │               │   │   ├── BloomFilterCommands.java
    │   │               │   │   ├── BloomFilterPipelineCommands.java
    │   │               │   │   ├── CountMinSketchCommands.java
    │   │               │   │   ├── CountMinSketchPipelineCommands.java
    │   │               │   │   ├── CuckooFilterCommands.java
    │   │               │   │   ├── CuckooFilterPipelineCommands.java
    │   │               │   │   ├── RedisBloomCommands.java
    │   │               │   │   ├── RedisBloomPipelineCommands.java
    │   │               │   │   ├── TDigestSketchCommands.java
    │   │               │   │   ├── TDigestSketchPipelineCommands.java
    │   │               │   │   ├── TopKFilterCommands.java
    │   │               │   │   ├── TopKFilterPipelineCommands.java
    │   │               │   │   └── package-info.java
    │   │               │   └── package-info.java
    │   │               ├── builders/
    │   │               │   ├── AbstractClientBuilder.java
    │   │               │   ├── ClusterClientBuilder.java
    │   │               │   ├── MultiDbClientBuilder.java
    │   │               │   ├── SentinelClientBuilder.java
    │   │               │   └── StandaloneClientBuilder.java
    │   │               ├── commands/
    │   │               │   ├── AccessControlLogBinaryCommands.java
    │   │               │   ├── AccessControlLogCommands.java
    │   │               │   ├── BitBinaryCommands.java
    │   │               │   ├── BitCommands.java
    │   │               │   ├── BitPipelineBinaryCommands.java
    │   │               │   ├── BitPipelineCommands.java
    │   │               │   ├── ClientBinaryCommands.java
    │   │               │   ├── ClientCommands.java
    │   │               │   ├── ClusterCommands.java
    │   │               │   ├── CommandCommands.java
    │   │               │   ├── ConfigCommands.java
    │   │               │   ├── ControlBinaryCommands.java
    │   │               │   ├── ControlCommands.java
    │   │               │   ├── DatabaseCommands.java
    │   │               │   ├── DatabasePipelineCommands.java
    │   │               │   ├── FunctionBinaryCommands.java
    │   │               │   ├── FunctionCommands.java
    │   │               │   ├── FunctionPipelineBinaryCommands.java
    │   │               │   ├── FunctionPipelineCommands.java
    │   │               │   ├── GenericControlCommands.java
    │   │               │   ├── GeoBinaryCommands.java
    │   │               │   ├── GeoCommands.java
    │   │               │   ├── GeoPipelineBinaryCommands.java
    │   │               │   ├── GeoPipelineCommands.java
    │   │               │   ├── HashBinaryCommands.java
    │   │               │   ├── HashCommands.java
    │   │               │   ├── HashPipelineBinaryCommands.java
    │   │               │   ├── HashPipelineCommands.java
    │   │               │   ├── HyperLogLogBinaryCommands.java
    │   │               │   ├── HyperLogLogCommands.java
    │   │               │   ├── HyperLogLogPipelineBinaryCommands.java
    │   │               │   ├── HyperLogLogPipelineCommands.java
    │   │               │   ├── JedisBinaryCommands.java
    │   │               │   ├── JedisCommands.java
    │   │               │   ├── KeyBinaryCommands.java
    │   │               │   ├── KeyCommands.java
    │   │               │   ├── KeyPipelineBinaryCommands.java
    │   │               │   ├── KeyPipelineCommands.java
    │   │               │   ├── ListBinaryCommands.java
    │   │               │   ├── ListCommands.java
    │   │               │   ├── ListPipelineBinaryCommands.java
    │   │               │   ├── ListPipelineCommands.java
    │   │               │   ├── ModuleCommands.java
    │   │               │   ├── PipelineBinaryCommands.java
    │   │               │   ├── PipelineCommands.java
    │   │               │   ├── ProtocolCommand.java
    │   │               │   ├── RedisModuleCommands.java
    │   │               │   ├── RedisModulePipelineCommands.java
    │   │               │   ├── SampleBinaryKeyedCommands.java
    │   │               │   ├── SampleBinaryKeyedPipelineCommands.java
    │   │               │   ├── SampleKeyedCommands.java
    │   │               │   ├── SampleKeyedPipelineCommands.java
    │   │               │   ├── ScriptingControlCommands.java
    │   │               │   ├── ScriptingKeyBinaryCommands.java
    │   │               │   ├── ScriptingKeyCommands.java
    │   │               │   ├── ScriptingKeyPipelineBinaryCommands.java
    │   │               │   ├── ScriptingKeyPipelineCommands.java
    │   │               │   ├── SentinelCommands.java
    │   │               │   ├── ServerCommands.java
    │   │               │   ├── SetBinaryCommands.java
    │   │               │   ├── SetCommands.java
    │   │               │   ├── SetPipelineBinaryCommands.java
    │   │               │   ├── SetPipelineCommands.java
    │   │               │   ├── SlowlogCommands.java
    │   │               │   ├── SortedSetBinaryCommands.java
    │   │               │   ├── SortedSetCommands.java
    │   │               │   ├── SortedSetPipelineBinaryCommands.java
    │   │               │   ├── SortedSetPipelineCommands.java
    │   │               │   ├── StreamBinaryCommands.java
    │   │               │   ├── StreamCommands.java
    │   │               │   ├── StreamPipelineBinaryCommands.java
    │   │               │   ├── StreamPipelineCommands.java
    │   │               │   ├── StringBinaryCommands.java
    │   │               │   ├── StringCommands.java
    │   │               │   ├── StringPipelineBinaryCommands.java
    │   │               │   ├── StringPipelineCommands.java
    │   │               │   ├── VectorSetBinaryCommands.java
    │   │               │   ├── VectorSetCommands.java
    │   │               │   ├── VectorSetPipelineBinaryCommands.java
    │   │               │   ├── VectorSetPipelineCommands.java
    │   │               │   └── package-info.java
    │   │               ├── csc/
    │   │               │   ├── AbstractCache.java
    │   │               │   ├── Cache.java
    │   │               │   ├── CacheConfig.java
    │   │               │   ├── CacheConnection.java
    │   │               │   ├── CacheEntry.java
    │   │               │   ├── CacheFactory.java
    │   │               │   ├── CacheKey.java
    │   │               │   ├── CacheStats.java
    │   │               │   ├── Cacheable.java
    │   │               │   ├── DefaultCache.java
    │   │               │   ├── DefaultCacheable.java
    │   │               │   ├── EvictionPolicy.java
    │   │               │   ├── LRUEviction.java
    │   │               │   ├── RedisVersion.java
    │   │               │   ├── package-info.java
    │   │               │   └── util/
    │   │               │       ├── AllowAndDenyListWithStringKeys.java
    │   │               │       └── package-info.java
    │   │               ├── exceptions/
    │   │               │   ├── ClusterAggregationException.java
    │   │               │   ├── InvalidURIException.java
    │   │               │   ├── JedisAccessControlException.java
    │   │               │   ├── JedisAskDataException.java
    │   │               │   ├── JedisBroadcastException.java
    │   │               │   ├── JedisBusyException.java
    │   │               │   ├── JedisCacheException.java
    │   │               │   ├── JedisClusterException.java
    │   │               │   ├── JedisClusterOperationException.java
    │   │               │   ├── JedisConnectionException.java
    │   │               │   ├── JedisDataException.java
    │   │               │   ├── JedisException.java
    │   │               │   ├── JedisMovedDataException.java
    │   │               │   ├── JedisNoScriptException.java
    │   │               │   ├── JedisRedirectionException.java
    │   │               │   ├── JedisValidationException.java
    │   │               │   ├── UnsupportedAggregationException.java
    │   │               │   └── package-info.java
    │   │               ├── executors/
    │   │               │   ├── ClusterCommandExecutor.java
    │   │               │   ├── CommandExecutor.java
    │   │               │   ├── ConnectionResolver.java
    │   │               │   ├── ConnectionResolverFactory.java
    │   │               │   ├── DefaultCommandExecutor.java
    │   │               │   ├── ReplicaOnlyConnectionResolver.java
    │   │               │   ├── RetryableCommandExecutor.java
    │   │               │   ├── RoundRobinConnectionResolver.java
    │   │               │   ├── SimpleCommandExecutor.java
    │   │               │   ├── SingleConnectionResolver.java
    │   │               │   ├── SlotBasedConnectionResolver.java
    │   │               │   ├── aggregators/
    │   │               │   │   ├── Aggregator.java
    │   │               │   │   ├── ClusterReplyAggregator.java
    │   │               │   │   ├── DefaultPolicyAggregator.java
    │   │               │   │   ├── FirstNonNullAggregator.java
    │   │               │   │   ├── JedisByteHashMapAggregator.java
    │   │               │   │   ├── JedisByteMapAggregator.java
    │   │               │   │   ├── ListAggregator.java
    │   │               │   │   ├── LogicalAndAggregator.java
    │   │               │   │   ├── LogicalBinaryAggregator.java
    │   │               │   │   ├── LogicalOrAggregator.java
    │   │               │   │   ├── MapAggregator.java
    │   │               │   │   ├── MaxAggregator.java
    │   │               │   │   ├── MinAggregator.java
    │   │               │   │   ├── MultiNodeResultAggregator.java
    │   │               │   │   ├── SetAggregator.java
    │   │               │   │   └── SumAggregator.java
    │   │               │   └── package-info.java
    │   │               ├── json/
    │   │               │   ├── DefaultGsonObjectMapper.java
    │   │               │   ├── JsonBuilderFactory.java
    │   │               │   ├── JsonObjectMapper.java
    │   │               │   ├── JsonProtocol.java
    │   │               │   ├── JsonSetParams.java
    │   │               │   ├── Path.java
    │   │               │   ├── Path2.java
    │   │               │   ├── commands/
    │   │               │   │   ├── RedisJsonCommands.java
    │   │               │   │   ├── RedisJsonPipelineCommands.java
    │   │               │   │   ├── RedisJsonV1Commands.java
    │   │               │   │   ├── RedisJsonV1PipelineCommands.java
    │   │               │   │   ├── RedisJsonV2Commands.java
    │   │               │   │   └── RedisJsonV2PipelineCommands.java
    │   │               │   └── package-info.java
    │   │               ├── mcf/
    │   │               │   ├── CircuitBreakerThresholdsAdapter.java
    │   │               │   ├── ConnectionFailoverException.java
    │   │               │   ├── ConnectionInitializationContext.java
    │   │               │   ├── DatabaseSwitchEvent.java
    │   │               │   ├── HealthCheck.java
    │   │               │   ├── HealthCheckCollection.java
    │   │               │   ├── HealthCheckImpl.java
    │   │               │   ├── HealthCheckStrategy.java
    │   │               │   ├── HealthStatus.java
    │   │               │   ├── HealthStatusChangeEvent.java
    │   │               │   ├── HealthStatusListener.java
    │   │               │   ├── HealthStatusManager.java
    │   │               │   ├── InitializationPolicy.java
    │   │               │   ├── JedisFailoverException.java
    │   │               │   ├── LagAwareStrategy.java
    │   │               │   ├── MultiDbCommandExecutor.java
    │   │               │   ├── MultiDbConnectionProvider.java
    │   │               │   ├── MultiDbConnectionSupplier.java
    │   │               │   ├── MultiDbFailoverBase.java
    │   │               │   ├── MultiDbPipeline.java
    │   │               │   ├── MultiDbTransaction.java
    │   │               │   ├── PingStrategy.java
    │   │               │   ├── ProbingPolicy.java
    │   │               │   ├── RedisRestAPI.java
    │   │               │   ├── StatusTracker.java
    │   │               │   ├── SwitchReason.java
    │   │               │   ├── TrackingConnectionPool.java
    │   │               │   └── package-info.java
    │   │               ├── params/
    │   │               │   ├── BaseGetExParams.java
    │   │               │   ├── BaseSetExParams.java
    │   │               │   ├── BitPosParams.java
    │   │               │   ├── ClientKillParams.java
    │   │               │   ├── CommandListFilterByParams.java
    │   │               │   ├── FailoverParams.java
    │   │               │   ├── GeoAddParams.java
    │   │               │   ├── GeoRadiusParam.java
    │   │               │   ├── GeoRadiusStoreParam.java
    │   │               │   ├── GeoSearchParam.java
    │   │               │   ├── GetExParams.java
    │   │               │   ├── HGetExParams.java
    │   │               │   ├── HSetExParams.java
    │   │               │   ├── HotkeysParams.java
    │   │               │   ├── IParams.java
    │   │               │   ├── LCSParams.java
    │   │               │   ├── LPosParams.java
    │   │               │   ├── LolwutParams.java
    │   │               │   ├── MSetExParams.java
    │   │               │   ├── MigrateParams.java
    │   │               │   ├── ModuleLoadExParams.java
    │   │               │   ├── RestoreParams.java
    │   │               │   ├── ScanParams.java
    │   │               │   ├── SetParams.java
    │   │               │   ├── ShutdownParams.java
    │   │               │   ├── SortingParams.java
    │   │               │   ├── VAddParams.java
    │   │               │   ├── VSimParams.java
    │   │               │   ├── XAddParams.java
    │   │               │   ├── XAutoClaimParams.java
    │   │               │   ├── XCfgSetParams.java
    │   │               │   ├── XClaimParams.java
    │   │               │   ├── XPendingParams.java
    │   │               │   ├── XReadGroupParams.java
    │   │               │   ├── XReadParams.java
    │   │               │   ├── XTrimParams.java
    │   │               │   ├── ZAddParams.java
    │   │               │   ├── ZIncrByParams.java
    │   │               │   ├── ZParams.java
    │   │               │   ├── ZRangeParams.java
    │   │               │   └── package-info.java
    │   │               ├── providers/
    │   │               │   ├── ClusterConnectionProvider.java
    │   │               │   ├── ConnectionProvider.java
    │   │               │   ├── ManagedConnectionProvider.java
    │   │               │   ├── PooledConnectionProvider.java
    │   │               │   ├── SentineledConnectionProvider.java
    │   │               │   └── package-info.java
    │   │               ├── resps/
    │   │               │   ├── AccessControlLogEntry.java
    │   │               │   ├── AccessControlUser.java
    │   │               │   ├── ClusterShardInfo.java
    │   │               │   ├── ClusterShardNodeInfo.java
    │   │               │   ├── CommandDocument.java
    │   │               │   ├── CommandInfo.java
    │   │               │   ├── FunctionStats.java
    │   │               │   ├── GeoRadiusResponse.java
    │   │               │   ├── HotkeysInfo.java
    │   │               │   ├── LCSMatchResult.java
    │   │               │   ├── LatencyHistoryInfo.java
    │   │               │   ├── LatencyLatestInfo.java
    │   │               │   ├── LibraryInfo.java
    │   │               │   ├── RawVector.java
    │   │               │   ├── ScanResult.java
    │   │               │   ├── Slowlog.java
    │   │               │   ├── StreamConsumerFullInfo.java
    │   │               │   ├── StreamConsumerInfo.java
    │   │               │   ├── StreamConsumersInfo.java
    │   │               │   ├── StreamEntry.java
    │   │               │   ├── StreamEntryBinary.java
    │   │               │   ├── StreamEntryDeletionResult.java
    │   │               │   ├── StreamFullInfo.java
    │   │               │   ├── StreamGroupFullInfo.java
    │   │               │   ├── StreamGroupInfo.java
    │   │               │   ├── StreamInfo.java
    │   │               │   ├── StreamPendingEntry.java
    │   │               │   ├── StreamPendingSummary.java
    │   │               │   ├── TrackingInfo.java
    │   │               │   ├── Tuple.java
    │   │               │   ├── VSimScoreAttribs.java
    │   │               │   ├── VectorInfo.java
    │   │               │   └── package-info.java
    │   │               ├── search/
    │   │               │   ├── Apply.java
    │   │               │   ├── Combiner.java
    │   │               │   ├── Combiners.java
    │   │               │   ├── Document.java
    │   │               │   ├── FTCreateParams.java
    │   │               │   ├── FTProfileParams.java
    │   │               │   ├── FTSearchParams.java
    │   │               │   ├── FTSpellCheckParams.java
    │   │               │   ├── FieldName.java
    │   │               │   ├── Filter.java
    │   │               │   ├── FtSearchIteration.java
    │   │               │   ├── IndexDataType.java
    │   │               │   ├── IndexDefinition.java
    │   │               │   ├── IndexOptions.java
    │   │               │   ├── Limit.java
    │   │               │   ├── ProfilingInfo.java
    │   │               │   ├── Query.java
    │   │               │   ├── RediSearchCommands.java
    │   │               │   ├── RediSearchPipelineCommands.java
    │   │               │   ├── RediSearchUtil.java
    │   │               │   ├── Schema.java
    │   │               │   ├── Scorer.java
    │   │               │   ├── Scorers.java
    │   │               │   ├── SearchBuilderFactory.java
    │   │               │   ├── SearchProtocol.java
    │   │               │   ├── SearchResult.java
    │   │               │   ├── aggr/
    │   │               │   │   ├── AggregationBuilder.java
    │   │               │   │   ├── AggregationResult.java
    │   │               │   │   ├── FtAggregateIteration.java
    │   │               │   │   ├── Group.java
    │   │               │   │   ├── Reducer.java
    │   │               │   │   ├── Reducers.java
    │   │               │   │   ├── Row.java
    │   │               │   │   ├── SortedField.java
    │   │               │   │   └── package-info.java
    │   │               │   ├── hybrid/
    │   │               │   │   ├── FTHybridParams.java
    │   │               │   │   ├── FTHybridPostProcessingParams.java
    │   │               │   │   ├── FTHybridSearchParams.java
    │   │               │   │   ├── FTHybridVectorParams.java
    │   │               │   │   └── HybridResult.java
    │   │               │   ├── package-info.java
    │   │               │   ├── querybuilder/
    │   │               │   │   ├── DisjunctNode.java
    │   │               │   │   ├── DisjunctUnionNode.java
    │   │               │   │   ├── DoubleRangeValue.java
    │   │               │   │   ├── GeoValue.java
    │   │               │   │   ├── IntersectNode.java
    │   │               │   │   ├── LongRangeValue.java
    │   │               │   │   ├── Node.java
    │   │               │   │   ├── OptionalNode.java
    │   │               │   │   ├── QueryBuilders.java
    │   │               │   │   ├── QueryNode.java
    │   │               │   │   ├── RangeValue.java
    │   │               │   │   ├── UnionNode.java
    │   │               │   │   ├── Value.java
    │   │               │   │   ├── ValueNode.java
    │   │               │   │   └── Values.java
    │   │               │   └── schemafields/
    │   │               │       ├── GeoField.java
    │   │               │       ├── GeoShapeField.java
    │   │               │       ├── NumericField.java
    │   │               │       ├── SchemaField.java
    │   │               │       ├── TagField.java
    │   │               │       ├── TextField.java
    │   │               │       └── VectorField.java
    │   │               ├── timeseries/
    │   │               │   ├── AggregationType.java
    │   │               │   ├── DuplicatePolicy.java
    │   │               │   ├── EncodingFormat.java
    │   │               │   ├── RedisTimeSeriesCommands.java
    │   │               │   ├── RedisTimeSeriesPipelineCommands.java
    │   │               │   ├── TSAddParams.java
    │   │               │   ├── TSAlterParams.java
    │   │               │   ├── TSArithByParams.java
    │   │               │   ├── TSCreateParams.java
    │   │               │   ├── TSDecrByParams.java
    │   │               │   ├── TSElement.java
    │   │               │   ├── TSGetParams.java
    │   │               │   ├── TSIncrByParams.java
    │   │               │   ├── TSInfo.java
    │   │               │   ├── TSMGetElement.java
    │   │               │   ├── TSMGetParams.java
    │   │               │   ├── TSMRangeElements.java
    │   │               │   ├── TSMRangeParams.java
    │   │               │   ├── TSRangeParams.java
    │   │               │   ├── TimeSeriesBuilderFactory.java
    │   │               │   ├── TimeSeriesProtocol.java
    │   │               │   └── package-info.java
    │   │               └── util/
    │   │                   ├── ByteArrayComparator.java
    │   │                   ├── CompareCondition.java
    │   │                   ├── Delay.java
    │   │                   ├── DoublePrecision.java
    │   │                   ├── IOUtils.java
    │   │                   ├── JedisAsserts.java
    │   │                   ├── JedisByteHashMap.java
    │   │                   ├── JedisByteMap.java
    │   │                   ├── JedisClusterCRC16.java
    │   │                   ├── JedisClusterHashTag.java
    │   │                   ├── JedisCommandIterationBase.java
    │   │                   ├── JedisURIHelper.java
    │   │                   ├── KeyValue.java
    │   │                   ├── LazyRawable.java
    │   │                   ├── Pool.java
    │   │                   ├── PrefixedKeyArgumentPreProcessor.java
    │   │                   ├── RedisInputStream.java
    │   │                   ├── RedisOutputStream.java
    │   │                   ├── SafeEncoder.java
    │   │                   └── package-info.java
    │   └── resources/
    │       └── redis/
    │           └── clients/
    │               └── jedis/
    │                   └── pom.properties
    └── test/
        ├── java/
        │   ├── io/
        │   │   └── redis/
        │   │       ├── examples/
        │   │       │   ├── BitMapsExample.java
        │   │       │   ├── BitfieldExample.java
        │   │       │   ├── BloomFilterExample.java
        │   │       │   ├── CMSExample.java
        │   │       │   ├── CmdsCnxmgmtExample.java
        │   │       │   ├── CmdsGenericExample.java
        │   │       │   ├── CmdsHashExample.java
        │   │       │   ├── CmdsListExample.java
        │   │       │   ├── CmdsServerMgmtExample.java
        │   │       │   ├── CmdsSetExample.java
        │   │       │   ├── CmdsSortedSetExample.java
        │   │       │   ├── CmdsStringExample.java
        │   │       │   ├── CuckooFilterExample.java
        │   │       │   ├── GeoExample.java
        │   │       │   ├── GeoIndexExample.java
        │   │       │   ├── HashExample.java
        │   │       │   ├── HomeJsonExample.java
        │   │       │   ├── HomeProbDtsExample.java
        │   │       │   ├── HyperLogLogExample.java
        │   │       │   ├── JsonExample.java
        │   │       │   ├── ListExample.java
        │   │       │   ├── PipeTransExample.java
        │   │       │   ├── QueryAggExample.java
        │   │       │   ├── QueryEmExample.java
        │   │       │   ├── QueryFtExample.java
        │   │       │   ├── QueryGeoExample.java
        │   │       │   ├── QueryRangeExample.java
        │   │       │   ├── SearchQuickstartExample.java
        │   │       │   ├── SetGetExample.java
        │   │       │   ├── SetsExample.java
        │   │       │   ├── SortedSetsExample.java
        │   │       │   ├── StreamsExample.java
        │   │       │   ├── StringExample.java
        │   │       │   ├── TDigestExample.java
        │   │       │   ├── TimeSeriesTutorialExample.java
        │   │       │   ├── TopKExample.java
        │   │       │   └── VectorSetExample.java
        │   │       └── test/
        │   │           ├── annotations/
        │   │           │   ├── ConditionalOnEnv.java
        │   │           │   ├── EnabledOnCommand.java
        │   │           │   └── SinceRedisVersion.java
        │   │           └── utils/
        │   │               ├── RedisInfo.java
        │   │               └── RedisVersion.java
        │   └── redis/
        │       └── clients/
        │           └── jedis/
        │               ├── ACLJedisPoolTest.java
        │               ├── ACLJedisSentinelPoolTest.java
        │               ├── ACLJedisTest.java
        │               ├── BuilderTest.java
        │               ├── ClusterCommandObjectsTest.java
        │               ├── ClusterPipeliningTest.java
        │               ├── ConnectionTest.java
        │               ├── DefaultJedisClientConfigTest.java
        │               ├── EndpointConfig.java
        │               ├── Endpoints.java
        │               ├── HostAndPortTest.java
        │               ├── JedisClusterCommandTest.java
        │               ├── JedisClusterInfoCacheTest.java
        │               ├── JedisClusterWithoutSetupTest.java
        │               ├── JedisPoolTest.java
        │               ├── JedisPoolUnitTest.java
        │               ├── JedisPubSubBaseTest.java
        │               ├── JedisSentinelPoolTest.java
        │               ├── JedisSentinelTest.java
        │               ├── JedisShardedPubSubBaseTest.java
        │               ├── JedisTest.java
        │               ├── ManagedConnectionProviderTest.java
        │               ├── MigratePipeliningTest.java
        │               ├── MultiDbClientTest.java
        │               ├── PipeliningTest.java
        │               ├── ProtocolTest.java
        │               ├── RedisClientTest.java
        │               ├── ReliableTransactionTest.java
        │               ├── SentineledConnectionProviderTest.java
        │               ├── StaticCommandFlagsRegistryTest.java
        │               ├── TransactionV2Test.java
        │               ├── TupleSortedSetTest.java
        │               ├── UdsTest.java
        │               ├── UnavailableConnectionTest.java
        │               ├── UnboundRedisClusterClientTest.java
        │               ├── UnboundRedisClusterClientTestBase.java
        │               ├── UnifiedJedisCustomCommandsTest.java
        │               ├── authentication/
        │               │   ├── EntraIDTestContext.java
        │               │   ├── RedisEntraIDClusterIntegrationTests.java
        │               │   ├── RedisEntraIDIntegrationTests.java
        │               │   ├── RedisEntraIDManagedIdentityIntegrationTests.java
        │               │   ├── TokenBasedAuthenticationClusterIntegrationTests.java
        │               │   ├── TokenBasedAuthenticationIntegrationTests.java
        │               │   └── TokenBasedAuthenticationUnitTests.java
        │               ├── benchmark/
        │               │   ├── CRC16Benchmark.java
        │               │   ├── GetSetBenchmark.java
        │               │   ├── PipelinedGetSetBenchmark.java
        │               │   ├── PoolBenchmark.java
        │               │   ├── ProtocolBenchmark.java
        │               │   ├── RedisClientBenchmark.java
        │               │   ├── RedisClientCSCBenchmark.java
        │               │   └── SafeEncoderBenchmark.java
        │               ├── builders/
        │               │   ├── ClientBuilderTest.java
        │               │   ├── ClusterClientBuilderTest.java
        │               │   ├── JedisClusterConstructorReflectionTest.java
        │               │   ├── JedisPooledConstructorReflectionTest.java
        │               │   ├── JedisSentineledConstructorReflectionTest.java
        │               │   ├── RedisClusterClientMigrationIntegrationTest.java
        │               │   └── UnifiedJedisConstructorReflectionTest.java
        │               ├── codegen/
        │               │   ├── CommandFlagsRegistryGenerator.java
        │               │   └── README.md
        │               ├── collections/
        │               │   ├── JedisByteHashMapTest.java
        │               │   └── SetFromListTest.java
        │               ├── commands/
        │               │   ├── CommandsTestsParameters.java
        │               │   ├── commandobjects/
        │               │   │   ├── CommandObjectsBitmapCommandsTest.java
        │               │   │   ├── CommandObjectsBloomFilterCommandsTest.java
        │               │   │   ├── CommandObjectsCountMinSketchCommandsTest.java
        │               │   │   ├── CommandObjectsCuckooFilterCommandsTest.java
        │               │   │   ├── CommandObjectsGenericCommandsTest.java
        │               │   │   ├── CommandObjectsGeospatialCommandsTest.java
        │               │   │   ├── CommandObjectsHashCommandsTest.java
        │               │   │   ├── CommandObjectsHyperloglogCommandsTest.java
        │               │   │   ├── CommandObjectsJsonCommandsTest.java
        │               │   │   ├── CommandObjectsListCommandsTest.java
        │               │   │   ├── CommandObjectsModulesTestBase.java
        │               │   │   ├── CommandObjectsScriptingCommandsTest.java
        │               │   │   ├── CommandObjectsSearchAndQueryCommandsTest.java
        │               │   │   ├── CommandObjectsServerManagementCommandsTest.java
        │               │   │   ├── CommandObjectsSetCommandsTest.java
        │               │   │   ├── CommandObjectsSortedSetCommandsTest.java
        │               │   │   ├── CommandObjectsStandaloneTestBase.java
        │               │   │   ├── CommandObjectsStreamCommandsTest.java
        │               │   │   ├── CommandObjectsStringCommandsTest.java
        │               │   │   ├── CommandObjectsTDigestCommandsTest.java
        │               │   │   ├── CommandObjectsTestBase.java
        │               │   │   ├── CommandObjectsTimeSeriesCommandsTest.java
        │               │   │   ├── CommandObjectsTopkCommandsTest.java
        │               │   │   └── Person.java
        │               │   ├── jedis/
        │               │   │   ├── AccessControlListCommandsTest.java
        │               │   │   ├── AllKindOfValuesCommandsTest.java
        │               │   │   ├── BinaryValuesCommandsTest.java
        │               │   │   ├── BitCommandsTest.java
        │               │   │   ├── ClientCommandsTest.java
        │               │   │   ├── ClusterBinaryValuesCommandsTest.java
        │               │   │   ├── ClusterCommandsTest.java
        │               │   │   ├── ClusterHotkeysCommandsTest.java
        │               │   │   ├── ClusterJedisCommandsTestBase.java
        │               │   │   ├── ClusterScriptingCommandsTest.java
        │               │   │   ├── ClusterShardedPublishSubscribeCommandsTest.java
        │               │   │   ├── ClusterValuesCommandsTest.java
        │               │   │   ├── ControlCommandsTest.java
        │               │   │   ├── FailoverCommandsTest.java
        │               │   │   ├── GeoCommandsTest.java
        │               │   │   ├── HashesCommandsTest.java
        │               │   │   ├── HotkeysCommandsTest.java
        │               │   │   ├── HyperLogLogCommandsTest.java
        │               │   │   ├── JedisCommandsTestBase.java
        │               │   │   ├── ListCommandsTest.java
        │               │   │   ├── MigrateTest.java
        │               │   │   ├── ModuleTest.java
        │               │   │   ├── ObjectCommandsTest.java
        │               │   │   ├── PublishSubscribeCommandsTest.java
        │               │   │   ├── ScriptingCommandsTest.java
        │               │   │   ├── SentinelCommandsTest.java
        │               │   │   ├── SetCommandsTest.java
        │               │   │   ├── SlowlogCommandsTest.java
        │               │   │   ├── SortedSetCommandsTest.java
        │               │   │   ├── SortingCommandsTest.java
        │               │   │   ├── StreamsBinaryCommandsTest.java
        │               │   │   ├── StreamsCommandsTest.java
        │               │   │   ├── StringValuesCommandsTest.java
        │               │   │   ├── TransactionCommandsTest.java
        │               │   │   ├── VariadicCommandsTest.java
        │               │   │   └── VectorSetCommandsTest.java
        │               │   └── unified/
        │               │       ├── AllKindOfValuesCommandsTestBase.java
        │               │       ├── BinaryValuesCommandsTestBase.java
        │               │       ├── BitCommandsTestBase.java
        │               │       ├── ExtendedVectorSetCommandsTestBase.java
        │               │       ├── FunctionCommandsTestBase.java
        │               │       ├── GeoCommandsTestBase.java
        │               │       ├── HashesCommandsTestBase.java
        │               │       ├── HotkeysCommandsTestBase.java
        │               │       ├── HyperLogLogCommandsTestBase.java
        │               │       ├── ListCommandsTestBase.java
        │               │       ├── SetCommandsTestBase.java
        │               │       ├── SortedSetCommandsTestBase.java
        │               │       ├── StreamsBinaryCommandsTestBase.java
        │               │       ├── StreamsCommandsTestBase.java
        │               │       ├── StringValuesCommandsTestBase.java
        │               │       ├── UnifiedJedisCommandsTestBase.java
        │               │       ├── VectorSetCommandsTestBase.java
        │               │       ├── client/
        │               │       │   ├── RedisClientAllKindOfValuesCommandsTest.java
        │               │       │   ├── RedisClientBinaryValuesCommandsTest.java
        │               │       │   ├── RedisClientBitCommandsTest.java
        │               │       │   ├── RedisClientCommandsTestHelper.java
        │               │       │   ├── RedisClientExtendedVectorSetCommandsTest.java
        │               │       │   ├── RedisClientGeoCommandsTest.java
        │               │       │   ├── RedisClientHashesCommandsTest.java
        │               │       │   ├── RedisClientHotkeysCommandsTest.java
        │               │       │   ├── RedisClientHyperLogLogCommandsTest.java
        │               │       │   ├── RedisClientListCommandsTest.java
        │               │       │   ├── RedisClientMiscellaneousTest.java
        │               │       │   ├── RedisClientSetCommandsTest.java
        │               │       │   ├── RedisClientSortedSetCommandsTest.java
        │               │       │   ├── RedisClientStreamsBinaryCommandsTest.java
        │               │       │   ├── RedisClientStreamsCommandsTest.java
        │               │       │   ├── RedisClientStringValuesCommandsTest.java
        │               │       │   ├── RedisClientTransactionIT.java
        │               │       │   ├── RedisClientVectorSetCommandsTest.java
        │               │       │   └── search/
        │               │       │       └── FTHybridRedisClientCommandsTest.java
        │               │       ├── cluster/
        │               │       │   ├── ClusterAllKindOfValuesCommandsTest.java
        │               │       │   ├── ClusterBinaryValuesCommandsTest.java
        │               │       │   ├── ClusterBitCommandsTest.java
        │               │       │   ├── ClusterCommandsTestHelper.java
        │               │       │   ├── ClusterExtendedVectorSetCommandsTest.java
        │               │       │   ├── ClusterFunctionCommandsTest.java
        │               │       │   ├── ClusterGeoCommandsTest.java
        │               │       │   ├── ClusterHashesCommandsTest.java
        │               │       │   ├── ClusterHotkeysCommandsTest.java
        │               │       │   ├── ClusterHyperLogLogCommandsTest.java
        │               │       │   ├── ClusterListCommandsTest.java
        │               │       │   ├── ClusterSetCommandsTest.java
        │               │       │   ├── ClusterSortedSetCommandsTest.java
        │               │       │   ├── ClusterStreamsBinaryCommandsTest.java
        │               │       │   ├── ClusterStreamsCommandsTest.java
        │               │       │   ├── ClusterStringValuesCommandsTest.java
        │               │       │   ├── ClusterVectorSetCommandsTest.java
        │               │       │   └── search/
        │               │       │       └── FTHybridCommandsClusterTest.java
        │               │       ├── pipeline/
        │               │       │   ├── BinaryStreamsPipelineCommandsTest.java
        │               │       │   ├── GeoPipelineCommandsTest.java
        │               │       │   ├── HashesPipelineCommandsTest.java
        │               │       │   ├── ListPipelineCommandsTest.java
        │               │       │   ├── PipelineCommandsTestBase.java
        │               │       │   ├── SetPipelineCommandsTest.java
        │               │       │   ├── SortedSetPipelineCommandsTest.java
        │               │       │   └── StreamsPipelineCommandsTest.java
        │               │       ├── search/
        │               │       │   └── FTHybridCommandsTestBase.java
        │               │       └── sentinel/
        │               │           └── SentinelAllKindOfValuesCommandsIT.java
        │               ├── csc/
        │               │   ├── AllowAndDenyListCacheableTest.java
        │               │   ├── ClientSideCacheFunctionalityTest.java
        │               │   ├── ClientSideCacheTestBase.java
        │               │   ├── RedisClientSideCacheTest.java
        │               │   ├── RedisClientSideCacheTestBase.java
        │               │   ├── RedisClusterClientSideCacheTest.java
        │               │   ├── RedisSentinelClientSideCacheTest.java
        │               │   ├── SSLRedisClientSideCacheTest.java
        │               │   ├── TestCache.java
        │               │   ├── UnifiedJedisClientSideCacheTestBase.java
        │               │   └── VersionTest.java
        │               ├── examples/
        │               │   ├── BroadcastCommandsToAllClusterNodes.java
        │               │   ├── GeoShapeFieldsUsageInRediSearch.java
        │               │   ├── RedisCredentialsProviderUsage.java
        │               │   └── RetryableCommandExecution.java
        │               ├── exceptions/
        │               │   ├── ExceptionsTest.java
        │               │   └── FailoverAbortedException.java
        │               ├── executors/
        │               │   ├── ClusterCommandExecutorTest.java
        │               │   ├── RetryableCommandExecutorTest.java
        │               │   └── aggregators/
        │               │       ├── ClusterReplyAggregatorTest.java
        │               │       └── MultiNodeResultAggregatorTest.java
        │               ├── failover/
        │               │   └── FailoverIntegrationTest.java
        │               ├── mcf/
        │               │   ├── ActiveActiveLocalFailoverTest.java
        │               │   ├── ConnectionInitializationContextTest.java
        │               │   ├── DatabaseEvaluateThresholdsTest.java
        │               │   ├── DefaultValuesTest.java
        │               │   ├── FailbackMechanismIntegrationTest.java
        │               │   ├── FailbackMechanismUnitTest.java
        │               │   ├── HealthCheckIntegrationTest.java
        │               │   ├── HealthCheckTest.java
        │               │   ├── InitializationPolicyTest.java
        │               │   ├── LagAwareStrategyUnitTest.java
        │               │   ├── MultiDbCircuitBreakerThresholdsTest.java
        │               │   ├── MultiDbConnectionProviderDynamicEndpointUnitTest.java
        │               │   ├── MultiDbConnectionProviderFailoverAttemptsConfigTest.java
        │               │   ├── MultiDbConnectionProviderHelper.java
        │               │   ├── MultiDbConnectionProviderInitializationTest.java
        │               │   ├── MultiDbConnectionProviderTest.java
        │               │   ├── PeriodicFailbackTest.java
        │               │   ├── PingStrategyIntegrationTest.java
        │               │   ├── RedisRestAPIIT.java
        │               │   ├── RedisRestAPIUnitTest.java
        │               │   ├── StatusTrackerTest.java
        │               │   └── TestHealthCheckStrategy.java
        │               ├── misc/
        │               │   ├── AutomaticFailoverTest.java
        │               │   ├── ClientSetInfoConfigTest.java
        │               │   ├── ClusterInitErrorTest.java
        │               │   ├── ResponsesToStringTest.java
        │               │   └── TupleTest.java
        │               ├── mocked/
        │               │   ├── MockedCommandObjectsTestBase.java
        │               │   ├── pipeline/
        │               │   │   ├── PipeliningBaseBitmapCommandsTest.java
        │               │   │   ├── PipeliningBaseBloomFilterCommandsTest.java
        │               │   │   ├── PipeliningBaseCountMinSketchCommandsTest.java
        │               │   │   ├── PipeliningBaseCuckooFilterCommandsTest.java
        │               │   │   ├── PipeliningBaseGenericCommandsTest.java
        │               │   │   ├── PipeliningBaseGeospatialCommandsTest.java
        │               │   │   ├── PipeliningBaseHashCommandsTest.java
        │               │   │   ├── PipeliningBaseHyperloglogCommandsTest.java
        │               │   │   ├── PipeliningBaseJsonCommandsTest.java
        │               │   │   ├── PipeliningBaseListCommandsTest.java
        │               │   │   ├── PipeliningBaseMiscellaneousTest.java
        │               │   │   ├── PipeliningBaseMockedTestBase.java
        │               │   │   ├── PipeliningBaseScriptingAndFunctionsCommandsTest.java
        │               │   │   ├── PipeliningBaseSearchAndQueryCommandsTest.java
        │               │   │   ├── PipeliningBaseServerManagementCommandsTest.java
        │               │   │   ├── PipeliningBaseSetCommandsTest.java
        │               │   │   ├── PipeliningBaseSortedSetCommandsTest.java
        │               │   │   ├── PipeliningBaseStreamCommandsTest.java
        │               │   │   ├── PipeliningBaseStringCommandsTest.java
        │               │   │   ├── PipeliningBaseTDigestCommandsTest.java
        │               │   │   ├── PipeliningBaseTimeSeriesCommandsTest.java
        │               │   │   └── PipeliningBaseTopKCommandsTest.java
        │               │   └── unified/
        │               │       ├── UnifiedJedisBitmapCommandsTest.java
        │               │       ├── UnifiedJedisBloomFilterCommandsTest.java
        │               │       ├── UnifiedJedisConnectionManagementCommandsTest.java
        │               │       ├── UnifiedJedisCountMinSketchCommandsTest.java
        │               │       ├── UnifiedJedisCuckooFilterCommandsTest.java
        │               │       ├── UnifiedJedisGenericCommandsTest.java
        │               │       ├── UnifiedJedisGeospatialCommandsTest.java
        │               │       ├── UnifiedJedisHashCommandsTest.java
        │               │       ├── UnifiedJedisHyperloglogCommandsTest.java
        │               │       ├── UnifiedJedisJsonCommandsTest.java
        │               │       ├── UnifiedJedisListCommandsTest.java
        │               │       ├── UnifiedJedisMockedTestBase.java
        │               │       ├── UnifiedJedisPubSubCommandsTest.java
        │               │       ├── UnifiedJedisScriptingAndFunctionsCommandsTest.java
        │               │       ├── UnifiedJedisSearchAndQueryCommandsTest.java
        │               │       ├── UnifiedJedisServerManagementCommandsTest.java
        │               │       ├── UnifiedJedisSetCommandsTest.java
        │               │       ├── UnifiedJedisSortedSetCommandsTest.java
        │               │       ├── UnifiedJedisStreamCommandsTest.java
        │               │       ├── UnifiedJedisStringCommandsTest.java
        │               │       ├── UnifiedJedisTDigestCommandsTest.java
        │               │       ├── UnifiedJedisTimeSeriesCommandsTest.java
        │               │       └── UnifiedJedisTopKCommandsTest.java
        │               ├── modules/
        │               │   ├── ConsolidatedAccessControlListCommandsTest.java
        │               │   ├── ConsolidatedConfigurationCommandsTest.java
        │               │   ├── RedisModuleCommandsTestBase.java
        │               │   ├── RedisModulesPipelineTest.java
        │               │   ├── bloom/
        │               │   │   ├── BloomTest.java
        │               │   │   ├── CMSTest.java
        │               │   │   ├── CuckooTest.java
        │               │   │   ├── TDigestTest.java
        │               │   │   └── TopKTest.java
        │               │   ├── json/
        │               │   │   ├── JsonObjects.java
        │               │   │   ├── Path2Test.java
        │               │   │   ├── PathTest.java
        │               │   │   ├── RedisJsonV1Test.java
        │               │   │   └── RedisJsonV2Test.java
        │               │   ├── search/
        │               │   │   ├── AggregationBuilderTest.java
        │               │   │   ├── AggregationTest.java
        │               │   │   ├── CreateTest.java
        │               │   │   ├── DocumentTest.java
        │               │   │   ├── JsonSearchTest.java
        │               │   │   ├── JsonSearchWithGsonTest.java
        │               │   │   ├── QueryBuilderTest.java
        │               │   │   ├── QueryTest.java
        │               │   │   ├── SchemaTest.java
        │               │   │   ├── SearchDefaultDialectTest.java
        │               │   │   ├── SearchTest.java
        │               │   │   ├── SearchWithParamsTest.java
        │               │   │   ├── SpellCheckTest.java
        │               │   │   ├── SuggestionTest.java
        │               │   │   └── UtilTest.java
        │               │   └── timeseries/
        │               │       └── TimeSeriesTest.java
        │               ├── params/
        │               │   ├── BitPosParamsTest.java
        │               │   ├── ClientKillParamsTest.java
        │               │   ├── CommandListFilterByParamsTest.java
        │               │   ├── FailoverParamsTest.java
        │               │   ├── GeoAddParamsTest.java
        │               │   ├── GetExParamsTest.java
        │               │   ├── HotkeysParamsTest.java
        │               │   ├── LCSParamsTest.java
        │               │   ├── LPosParamsTest.java
        │               │   ├── LolwutParamsTest.java
        │               │   ├── MigrateParamsTest.java
        │               │   ├── ModuleLoadExParamsTest.java
        │               │   ├── RestoreParamsTest.java
        │               │   ├── ScanParamsTest.java
        │               │   ├── SetParamsTest.java
        │               │   ├── ShutdownParamsTest.java
        │               │   ├── SortingParamsTest.java
        │               │   ├── XAddParamsTest.java
        │               │   ├── XAutoClaimParamsTest.java
        │               │   ├── XCfgSetParamsTest.java
        │               │   ├── XClaimParamsTest.java
        │               │   ├── XPendingParamsTest.java
        │               │   ├── XReadGroupParamsTest.java
        │               │   ├── XReadParamsTest.java
        │               │   ├── XTrimParamsTest.java
        │               │   ├── ZAddParamsTest.java
        │               │   ├── ZIncrByParamsTest.java
        │               │   ├── ZParamsTest.java
        │               │   └── ZRangeParamsTest.java
        │               ├── prefix/
        │               │   ├── JedisPooledPrefixedKeysTest.java
        │               │   ├── PrefixedKeysTest.java
        │               │   ├── RedisClusterPrefixedKeysTest.java
        │               │   └── RedisSentinelClientPrefixedKeysTest.java
        │               ├── providers/
        │               │   ├── HealthStatusManagerTest.java
        │               │   ├── MultiClusterPooledConnectionProviderTest.java
        │               │   ├── MultiDbProviderHealthStatusChangeTest.java
        │               │   └── SentineledConnectionProviderReconnectionTest.java
        │               ├── resps/
        │               │   ├── LibraryInfoTest.java
        │               │   └── StreamEntryDeletionResultTest.java
        │               ├── scenario/
        │               │   ├── ActiveActiveFailoverIT.java
        │               │   ├── ClusterTopologyRefreshIT.java
        │               │   ├── ConnectionInterruptionIT.java
        │               │   ├── FakeApp.java
        │               │   ├── FaultInjectionClient.java
        │               │   ├── LagAwareStrategySslIT.java
        │               │   ├── MultiThreadedFakeApp.java
        │               │   ├── RecommendedSettings.java
        │               │   └── RestEndpointUtil.java
        │               ├── search/
        │               │   └── hybrid/
        │               │       └── FTHybridPostProcessingParamsTest.java
        │               ├── tls/
        │               │   ├── ACLJedisIT.java
        │               │   ├── ACLRedisClientIT.java
        │               │   ├── ACLRedisSentinelClientIT.java
        │               │   ├── ClientAuthIT.java
        │               │   ├── ClientAuthJedisIT.java
        │               │   ├── ClientAuthRedisClientIT.java
        │               │   ├── ClientAuthRedisClusterClientIT.java
        │               │   ├── ClientAuthTestBase.java
        │               │   ├── JedisIT.java
        │               │   ├── JedisSentinelPoolIT.java
        │               │   ├── JedisTlsTestBase.java
        │               │   ├── RedisClientIT.java
        │               │   ├── RedisClientTlsTestBase.java
        │               │   ├── RedisClusterClientIT.java
        │               │   ├── RedisClusterTestBase.java
        │               │   ├── RedisSentinelClientIT.java
        │               │   ├── RedisSentinelTlsTestBase.java
        │               │   ├── SSLOptionsJedisIT.java
        │               │   ├── SSLOptionsJedisSentinelPoolIT.java
        │               │   ├── SSLOptionsRedisClientIT.java
        │               │   └── SSLOptionsRedisSentinelClientIT.java
        │               └── util/
        │                   ├── ACLTestUtil.java
        │                   ├── AssertUtil.java
        │                   ├── ByteArrayComparatorTest.java
        │                   ├── ByteArrayMapMatcher.java
        │                   ├── ByteArrayUtil.java
        │                   ├── ClientKillerUtil.java
        │                   ├── ClientTestUtil.java
        │                   ├── CommandArgumentsMatchers.java
        │                   ├── DelayTest.java
        │                   ├── EnabledOnCommandCondition.java
        │                   ├── EnvCondition.java
        │                   ├── FragmentedByteArrayInputStream.java
        │                   ├── GeoCoordinateMatcher.java
        │                   ├── GeoRadiusResponseMatcher.java
        │                   ├── JedisByteMapMatcher.java
        │                   ├── JedisClusterCRC16Test.java
        │                   ├── JedisClusterTestUtil.java
        │                   ├── JedisSentinelTestUtil.java
        │                   ├── JedisURIHelperTest.java
        │                   ├── JsonObjectMapperTestUtil.java
        │                   ├── ProtocolTestUtil.java
        │                   ├── RedisConditions.java
        │                   ├── RedisVersionCondition.java
        │                   ├── RedisVersionUtil.java
        │                   ├── ReflectionTestUtil.java
        │                   ├── StreamEntryBinaryListMatcher.java
        │                   ├── TestDataUtil.java
        │                   ├── TestEnvUtil.java
        │                   ├── TlsUtil.java
        │                   └── VectorTestUtils.java
        └── resources/
            ├── cert.pem
            ├── endpoints.json
            ├── endpoints_source.json
            ├── env/
            │   ├── cluster-unbound/
            │   │   └── config/
            │   │       ├── node-7379-8379/
            │   │       │   └── redis.conf
            │   │       ├── node-7380-8380/
            │   │       │   └── redis.conf
            │   │       ├── node-7381-8381/
            │   │       │   └── redis.conf
            │   │       ├── node-7382-8382/
            │   │       │   └── redis.conf
            │   │       └── node-7383-8383/
            │   │           └── redis.conf
            │   ├── config/
            │   │   └── redis6-7/
            │   │       └── node-sentinel-26381-36381/
            │   │           └── redis.conf
            │   ├── docker-compose.yml
            │   ├── redis-uds/
            │   │   └── config/
            │   │       └── node-0/
            │   │           └── redis.conf
            │   ├── redis1-2-5-8-sentinel/
            │   │   └── config/
            │   │       ├── node-6379-6390/
            │   │       │   └── redis.conf
            │   │       ├── node-6380/
            │   │       │   └── redis.conf
            │   │       ├── node-6383-6391/
            │   │       │   └── redis.conf
            │   │       ├── node-6386/
            │   │       │   └── redis.conf
            │   │       └── node-sentinel-26379-36379/
            │   │           └── redis.conf
            │   ├── redis9-10/
            │   │   └── config/
            │   │       ├── node-6388/
            │   │       │   └── redis.conf
            │   │       └── node-6389/
            │   │           └── redis.conf
            │   ├── sentinel-standalone2-failover/
            │   │   └── config/
            │   │       ├── node-6384/
            │   │       │   └── redis.conf
            │   │       ├── node-6385/
            │   │       │   └── redis.conf
            │   │       └── node-sentinel-26381-36381/
            │   │           └── redis.conf
            │   └── standalone2-sentinel/
            │       └── config/
            │           ├── node-6381-16381/
            │           │   └── redis.conf
            │           ├── node-6382-16382/
            │           │   └── redis.conf
            │           ├── node-sentinel-26380-36380/
            │           │   └── redis.conf
            │           └── node-sentinel-26382-36382/
            │               └── redis.conf
            ├── functions/
            │   ├── keyspaceTriggers.js
            │   ├── pingpong.js
            │   ├── streamTriggers.js
            │   ├── withConfig.js
            │   ├── withFlags.js
            │   └── workingWIthHashes.js
            ├── junit-platform.properties
            ├── logback-test.xml
            ├── redismodule.h
            └── testmodule.c
Download .txt
Showing preview only (1,224K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (17408 symbols across 925 files)

FILE: src/main/java/redis/clients/jedis/AbstractPipeline.java
  class AbstractPipeline (line 5) | public abstract class AbstractPipeline extends PipeliningBase implements...
    method AbstractPipeline (line 7) | protected AbstractPipeline(CommandObjects commandObjects) {
    method close (line 11) | @Override
    method sync (line 17) | public abstract void sync();
    method publish (line 19) | public Response<Long> publish(String channel, String message) {
    method publish (line 23) | public Response<Long> publish(byte[] channel, byte[] message) {

FILE: src/main/java/redis/clients/jedis/AbstractTransaction.java
  class AbstractTransaction (line 6) | public abstract class AbstractTransaction extends PipeliningBase impleme...
    method AbstractTransaction (line 8) | @Deprecated
    method AbstractTransaction (line 13) | protected AbstractTransaction(CommandObjects commandObjects) {
    method multi (line 17) | public abstract void multi();
    method watch (line 22) | public abstract String watch(final String... keys);
    method watch (line 27) | public abstract String watch(final byte[]... keys);
    method unwatch (line 29) | public abstract String unwatch();
    method close (line 31) | @Override public abstract void close();
    method exec (line 33) | public abstract List<Object> exec();
    method discard (line 35) | public abstract String discard();
    method waitReplicas (line 37) | public Response<Long> waitReplicas(int replicas, long timeout) {
    method publish (line 41) | public Response<Long> publish(String channel, String message) {
    method publish (line 45) | public Response<Long> publish(byte[] channel, byte[] message) {

FILE: src/main/java/redis/clients/jedis/BinaryJedisPubSub.java
  class BinaryJedisPubSub (line 3) | public abstract class BinaryJedisPubSub extends JedisPubSubBase<byte[]> {
    method encode (line 5) | @Override

FILE: src/main/java/redis/clients/jedis/BinaryJedisShardedPubSub.java
  class BinaryJedisShardedPubSub (line 3) | public abstract class BinaryJedisShardedPubSub extends JedisShardedPubSu...
    method encode (line 5) | @Override

FILE: src/main/java/redis/clients/jedis/Builder.java
  class Builder (line 3) | public abstract class Builder<T> {
    method build (line 5) | public abstract T build(Object data);

FILE: src/main/java/redis/clients/jedis/BuilderFactory.java
  class BuilderFactory (line 13) | public final class BuilderFactory {
    method build (line 16) | @Override
    method toString (line 21) | @Override
    method build (line 28) | @Override
    method toString (line 33) | @Override
    method build (line 40) | @Override
    method toString (line 45) | @Override
    method build (line 52) | @Override
    method toString (line 57) | @Override
    method build (line 64) | @Override
    method toString (line 69) | @Override
    method build (line 77) | @Override
    method toString (line 86) | @Override
    method build (line 94) | @Override
    method toString (line 101) | @Override
    method build (line 108) | @Override
    method toString (line 115) | @Override
    method build (line 122) | @Override
    method toString (line 129) | @Override
    method build (line 136) | @Override
    method toString (line 143) | @Override
    method build (line 150) | @Override
    method toString (line 160) | @Override
    method build (line 167) | @Override
    method toString (line 172) | @Override
    method build (line 179) | @Override
    method toString (line 185) | @Override
    method build (line 192) | @Override
    method toString (line 201) | @Override
    method build (line 209) | @Override
    method toString (line 222) | @Override
    method build (line 230) | @Override
    method toString (line 243) | @Override
    method build (line 250) | @Override
    method toString (line 255) | @Override
    method build (line 262) | @Override
    method toString (line 269) | @Override
    method build (line 276) | @Override
    method toString (line 283) | @Override
    method build (line 290) | @Override
    method toString (line 314) | @Override
    method build (line 321) | @Override
    method toString (line 345) | @Override
    method build (line 352) | @Override
    method build (line 378) | @Override
    method build (line 405) | @Override
    method build (line 413) | @Override
    method toString (line 426) | @Override
    method build (line 434) | @Override
    method toString (line 442) | @Override
    method build (line 449) | @Override
    method toString (line 473) | @Override
    method build (line 480) | @Override
    method toString (line 503) | @Override
    method build (line 511) | @Override
    method toString (line 533) | @Override
    method build (line 539) | @Override
    method toString (line 547) | @Override
    method build (line 554) | @Override
    method toString (line 562) | @Override
    method build (line 569) | @Override
    method toString (line 578) | @Override
    method build (line 586) | @Override
    method toString (line 594) | @Override
    method build (line 601) | @Override
    method build (line 612) | @Override
    method build (line 621) | @Override
    method toString (line 629) | @Override
    method build (line 636) | @Override
    method toString (line 646) | @Override
    method build (line 653) | @Override
    method toString (line 662) | @Override
    method build (line 669) | @Override
    method toString (line 678) | @Override
    method build (line 685) | @Override
    method toString (line 700) | @Override
    method build (line 707) | @Override
    method toString (line 714) | @Override
    method build (line 722) | @Override
    method toString (line 737) | @Override
    method build (line 745) | @Override
    method toString (line 752) | @Override
    method build (line 759) | @Override
    method toString (line 766) | @Override
    method build (line 774) | @Override
    method toString (line 782) | @Override
    method build (line 790) | @Override
    method toString (line 798) | @Override
    method build (line 805) | @Override
    method build (line 820) | @Override
    method build (line 836) | @Override
    method build (line 850) | @Override
    method build (line 865) | @Override
    method build (line 876) | @Override
    method build (line 891) | @Override
    method build (line 901) | @Override
    method toString (line 913) | @Override
    method build (line 920) | @Override
    method toString (line 928) | @Override
    method interpretGeoposResult (line 933) | private List<GeoCoordinate> interpretGeoposResult(List<Object> respons...
    method build (line 950) | @Override
    method toString (line 1001) | @Override
    method build (line 1008) | @Override
    method build (line 1037) | @Override
    method build (line 1061) | @Override
    method build (line 1085) | @Override
    method createDecoderMap (line 1105) | private Map<String, Builder> createDecoderMap() {
    method build (line 1121) | @Override
    method toString (line 1140) | @Override
    method createDecoderMap (line 1151) | private Map<String, Builder> createDecoderMap() {
    method build (line 1160) | @Override
    method toString (line 1179) | @Override
    method build (line 1186) | @Override
    method toString (line 1213) | @Override
    method build (line 1223) | @Override
    method toString (line 1230) | @Override
    method createDecoderMap (line 1244) | private Map<String, Builder> createDecoderMap() {
    method build (line 1261) | @Override
    method toString (line 1280) | @Override
    method build (line 1289) | @Override
    method toString (line 1298) | @Override
    method build (line 1305) | @Override
    method build (line 1323) | @Override
    method toString (line 1331) | @Override
    method build (line 1338) | @Override
    method toString (line 1352) | @Override
    method build (line 1359) | @Override
    method toString (line 1383) | @Override
    method build (line 1390) | @Override
    method toString (line 1436) | @Override
    method build (line 1444) | @Override
    method toString (line 1456) | @Override
    method build (line 1464) | @Override
    method toString (line 1476) | @Override
    method build (line 1491) | @Override
    method toString (line 1514) | @Override
    method build (line 1522) | @Override
    method toString (line 1545) | @Override
    method build (line 1552) | @Override
    method toString (line 1573) | @Override
    method createDecoderMap (line 1583) | private Map<String, Builder> createDecoderMap() {
    method build (line 1603) | @Override
    method toString (line 1616) | @Override
    method createDecoderMap (line 1626) | private Map<String, Builder> createDecoderMap() {
    method build (line 1637) | @Override
    method toString (line 1663) | @Override
    method createDecoderMap (line 1678) | private Map<String, Builder> createDecoderMap() {
    method build (line 1687) | @Override
    method toString (line 1713) | @Override
    method createDecoderMap (line 1724) | private Map<String, Builder> createDecoderMap() {
    method build (line 1733) | @Override
    method toString (line 1758) | @Override
    method createDecoderMap (line 1769) | private Map<String, Builder> createDecoderMap() {
    method build (line 1780) | @Override
    method toString (line 1800) | @Override
    method createDecoderMap (line 1811) | private Map<String, Builder> createDecoderMap() {
    method build (line 1823) | @Override
    method toString (line 1847) | @Override
    method createDecoderMap (line 1857) | private Map<String, Builder> createDecoderMap() {
    method build (line 1870) | @Override
    method toString (line 1883) | @Override
    method createDecoderMap (line 1899) | private Map<String, Builder> createDecoderMap() {
    method build (line 1913) | @Override
    method toString (line 1926) | @Override
    method build (line 1933) | @Override
    method toString (line 1951) | @Override
    method build (line 1958) | @Override
    method toString (line 2004) | @Override
    method build (line 2012) | @Override
    method toString (line 2034) | @Override
    method build (line 2042) | @Override
    method toString (line 2066) | @Override
    method createMapFromDecodingFunctions (line 2075) | private static Map<String, Object> createMapFromDecodingFunctions(Iter...
    method createMapFromDecodingFunctions (line 2080) | private static Map<String, Object> createMapFromDecodingFunctions(Iter...
    method build (line 2122) | @Override
    method addMatchedPosition (line 2161) | private void addMatchedPosition(List<MatchedPosition> matchedPositions...
    method build (line 2185) | @Override
    method toString (line 2207) | @Override
    method build (line 2214) | @Override
    method toString (line 2236) | @Override
    method build (line 2249) | @Override
    method toString (line 2256) | @Override
    method build (line 2263) | @Override
    method toString (line 2270) | @Override
    method build (line 2279) | @Override
    method toString (line 2306) | @Override
    method build (line 2314) | @Override
    method toString (line 2339) | @Override
    method build (line 2346) | @Override
    method toString (line 2360) | @Override
    method build (line 2368) | @Override
    method toString (line 2384) | @Override
    method build (line 2391) | @Override
    method toString (line 2398) | @Override
    method build (line 2406) | @Override
    method toString (line 2422) | @Override
    class SetFromList (line 2434) | protected static class SetFromList<E> extends AbstractSet<E> implement...
      method SetFromList (line 2438) | private SetFromList(List<E> list) {
      method clear (line 2442) | @Override
      method size (line 2447) | @Override
      method isEmpty (line 2452) | @Override
      method contains (line 2457) | @Override
      method remove (line 2462) | @Override
      method add (line 2467) | @Override
      method iterator (line 2472) | @Override
      method toArray (line 2477) | @Override
      method toArray (line 2482) | @Override
      method toString (line 2487) | @Override
      method hashCode (line 2492) | @Override
      method equals (line 2497) | @Override
      method containsAll (line 2511) | @Override
      method removeAll (line 2516) | @Override
      method retainAll (line 2521) | @Override
      method of (line 2526) | protected static <E> SetFromList<E> of(List<E> list) {
    method BuilderFactory (line 2534) | private BuilderFactory() {

FILE: src/main/java/redis/clients/jedis/ClientSetInfoConfig.java
  class ClientSetInfoConfig (line 22) | public final class ClientSetInfoConfig {
    method ClientSetInfoConfig (line 33) | public ClientSetInfoConfig() {
    method ClientSetInfoConfig (line 43) | public ClientSetInfoConfig(boolean disabled) {
    method ClientSetInfoConfig (line 59) | public ClientSetInfoConfig(String libNameSuffix) {
    method ClientSetInfoConfig (line 72) | public ClientSetInfoConfig(DriverInfo driverInfo) {
    method isDisabled (line 83) | public boolean isDisabled() {
    method getDriverInfo (line 90) | public DriverInfo getDriverInfo() {
    method getUpstreamDrivers (line 107) | public String getUpstreamDrivers() {
    method withLibNameSuffix (line 131) | public static ClientSetInfoConfig withLibNameSuffix(String suffix) {

FILE: src/main/java/redis/clients/jedis/ClusterCommandObjects.java
  class ClusterCommandObjects (line 21) | public class ClusterCommandObjects extends CommandObjects {
    method scan (line 28) | @Override
    method scan (line 33) | @Override
    method scan (line 42) | @Override
    method scan (line 51) | @Override
    method scan (line 56) | @Override
    method scan (line 65) | @Override
    method waitReplicas (line 74) | @Override
    method waitAOF (line 79) | @Override
    method hotkeysStart (line 84) | @Override
    method hotkeysStop (line 89) | @Override
    method hotkeysReset (line 94) | @Override
    method hotkeysGet (line 99) | @Override
    method groupArgumentsByKeyValueHashSlot (line 115) | protected List<CommandArguments> groupArgumentsByKeyValueHashSlot(Comm...
    method groupArgumentsByKeyValueHashSlot (line 138) | protected List<CommandArguments> groupArgumentsByKeyValueHashSlot(Comm...
    method groupArgumentsByKeyHashSlot (line 168) | protected List<CommandArguments> groupArgumentsByKeyHashSlot(CommandAr...
    method groupArgumentsByKeyHashSlot (line 198) | protected List<CommandArguments> groupArgumentsByKeyHashSlot(CommandAr...
    method groupArgumentsByKeyValueHashSlotWithKeyCount (line 224) | protected List<CommandArguments> groupArgumentsByKeyValueHashSlotWithK...
    method groupArgumentsByKeyValueHashSlotWithKeyCount (line 246) | protected List<CommandArguments> groupArgumentsByKeyValueHashSlotWithK...
    method groupArgumentsByKeyValueHashSlotImpl (line 281) | private <T> List<CommandArguments> groupArgumentsByKeyValueHashSlotImpl(
    method calculateSlotFromPreprocessedKey (line 345) | private int calculateSlotFromPreprocessedKey(Object preprocessedKey) {
    method createCommandArgsForGroup (line 359) | private <T> CommandArguments createCommandArgsForGroup(
    method delMultiShard (line 405) | public List<CommandObject<Long>> delMultiShard(String... keys) {
    method delMultiShard (line 421) | public List<CommandObject<Long>> delMultiShard(byte[]... keys) {
    method existsMultiShard (line 437) | public List<CommandObject<Long>> existsMultiShard(String... keys) {
    method existsMultiShard (line 453) | public List<CommandObject<Long>> existsMultiShard(byte[]... keys) {
    method mgetMultiShard (line 473) | public List<CommandObject<List<String>>> mgetMultiShard(String... keys) {
    method mgetMultiShard (line 493) | public List<CommandObject<List<byte[]>>> mgetMultiShard(byte[]... keys) {
    method msetMultiShard (line 509) | public List<CommandObject<String>> msetMultiShard(String... keysvalues) {
    method msetMultiShard (line 525) | public List<CommandObject<String>> msetMultiShard(byte[]... keysvalues) {
    method touchMultiShard (line 541) | public List<CommandObject<Long>> touchMultiShard(String... keys) {
    method touchMultiShard (line 557) | public List<CommandObject<Long>> touchMultiShard(byte[]... keys) {
    method unlinkMultiShard (line 573) | public List<CommandObject<Long>> unlinkMultiShard(String... keys) {
    method unlinkMultiShard (line 589) | public List<CommandObject<Long>> unlinkMultiShard(byte[]... keys) {
    method msetexMultiShard (line 607) | public List<CommandObject<Boolean>> msetexMultiShard(MSetExParams para...
    method msetexMultiShard (line 625) | public List<CommandObject<Boolean>> msetexMultiShard(MSetExParams para...

FILE: src/main/java/redis/clients/jedis/ClusterPipeline.java
  class ClusterPipeline (line 58) | public class ClusterPipeline extends MultiNodePipelineBase {
    method ClusterPipeline (line 63) | public ClusterPipeline(Set<HostAndPort> clusterNodes, JedisClientConfi...
    method ClusterPipeline (line 69) | public ClusterPipeline(Set<HostAndPort> clusterNodes, JedisClientConfi...
    method ClusterPipeline (line 76) | public ClusterPipeline(Set<HostAndPort> clusterNodes, JedisClientConfi...
    method ClusterPipeline (line 83) | public ClusterPipeline(ClusterConnectionProvider provider) {
    method ClusterPipeline (line 87) | public ClusterPipeline(ClusterConnectionProvider provider, ClusterComm...
    method ClusterPipeline (line 92) | ClusterPipeline(ClusterConnectionProvider provider, ClusterCommandObje...
    method createClusterCommandObjects (line 98) | private static ClusterCommandObjects createClusterCommandObjects(Redis...
    method close (line 104) | @Override
    method getNodeKey (line 113) | @Override
    method getConnection (line 128) | @Override
    method spublish (line 133) | public Response<Long> spublish(String channel, String message) {
    method spublish (line 137) | public Response<Long> spublish(byte[] channel, byte[] message) {

FILE: src/main/java/redis/clients/jedis/CommandArguments.java
  class CommandArguments (line 14) | public class CommandArguments implements Iterable<Rawable> {
    method CommandArguments (line 39) | private CommandArguments() {
    method CommandArguments (line 43) | public CommandArguments(ProtocolCommand command) {
    method getCommand (line 51) | public ProtocolCommand getCommand() {
    method setKeyArgumentPreProcessor (line 55) | @Experimental
    method add (line 60) | public CommandArguments add(Rawable arg) {
    method add (line 65) | public CommandArguments add(byte[] arg) {
    method add (line 69) | public CommandArguments add(boolean arg) {
    method add (line 73) | public CommandArguments add(int arg) {
    method add (line 77) | public CommandArguments add(long arg) {
    method add (line 81) | public CommandArguments add(double arg) {
    method add (line 85) | public CommandArguments add(String arg) {
    method add (line 89) | public CommandArguments add(Object arg) {
    method addObjects (line 117) | public CommandArguments addObjects(Object... args) {
    method addObjects (line 124) | public CommandArguments addObjects(Collection args) {
    method key (line 129) | public CommandArguments key(Object key) {
    method addHashSlotKey (line 154) | final CommandArguments addHashSlotKey(String key) {
    method addHashSlotKey (line 161) | final CommandArguments addHashSlotKey(byte[] key) {
    method keys (line 168) | public final CommandArguments keys(Object... keys) {
    method keys (line 173) | public final CommandArguments keys(Collection keys) {
    method addParams (line 178) | public final CommandArguments addParams(IParams params) {
    method addHashSlotKeys (line 183) | protected final CommandArguments addHashSlotKeys(byte[]... keys) {
    method addHashSlotKeys (line 190) | protected final CommandArguments addHashSlotKeys(String... keys) {
    method size (line 197) | public int size() {
    method get (line 207) | public Rawable get(int index) {
    method iterator (line 211) | @Override
    method getKeys (line 236) | @Internal
    method getKeyHashSlots (line 241) | @Internal
    method isKeyless (line 265) | public boolean isKeyless() {
    method isBlocking (line 269) | public boolean isBlocking() {
    method blocking (line 273) | public CommandArguments blocking() {

FILE: src/main/java/redis/clients/jedis/CommandFlagsRegistry.java
  type CommandFlagsRegistry (line 9) | public interface CommandFlagsRegistry {
    type CommandFlag (line 40) | enum CommandFlag {
    type RequestPolicy (line 67) | enum RequestPolicy {
    type ResponsePolicy (line 98) | enum ResponsePolicy {
    method getFlags (line 108) | EnumSet<CommandFlag> getFlags(CommandArguments commandArguments);
    method getRequestPolicy (line 116) | RequestPolicy getRequestPolicy(CommandArguments commandArguments);
    method getResponsePolicy (line 124) | ResponsePolicy getResponsePolicy(CommandArguments commandArguments);

FILE: src/main/java/redis/clients/jedis/CommandKeyArgumentPreProcessor.java
  type CommandKeyArgumentPreProcessor (line 5) | @Experimental
    method actualKey (line 12) | Object actualKey(Object paramKey);

FILE: src/main/java/redis/clients/jedis/CommandObject.java
  class CommandObject (line 6) | public class CommandObject<T> {
    method CommandObject (line 11) | public CommandObject(CommandArguments args, Builder<T> builder) {
    method getArguments (line 16) | public CommandArguments getArguments() {
    method getBuilder (line 20) | public Builder<T> getBuilder() {
    method hashCode (line 24) | @Override
    method equals (line 34) | @Override

FILE: src/main/java/redis/clients/jedis/CommandObjects.java
  class CommandObjects (line 39) | public class CommandObjects {
    method setProtocol (line 44) | public final void setProtocol(RedisProtocol proto) {
    method getProtocol (line 49) | protected RedisProtocol getProtocol() {
    method setKeyArgumentPreProcessor (line 58) | @Experimental
    method commandArguments (line 63) | protected CommandArguments commandArguments(ProtocolCommand command) {
    method ping (line 71) | public final CommandObject<String> ping() {
    method echo (line 75) | public final CommandObject<String> echo(String msg) {
    method flushAll (line 81) | public final CommandObject<String> flushAll() {
    method flushDB (line 87) | public final CommandObject<String> flushDB() {
    method configSet (line 91) | public final CommandObject<String> configSet(String parameter, String ...
    method info (line 98) | public final CommandObject<String> info() {
    method info (line 102) | public final CommandObject<String> info(String section) {
    method exists (line 107) | public final CommandObject<Boolean> exists(String key) {
    method exists (line 111) | public final CommandObject<Long> exists(String... keys) {
    method exists (line 115) | public final CommandObject<Boolean> exists(byte[] key) {
    method exists (line 119) | public final CommandObject<Long> exists(byte[]... keys) {
    method persist (line 123) | public final CommandObject<Long> persist(String key) {
    method persist (line 127) | public final CommandObject<Long> persist(byte[] key) {
    method type (line 131) | public final CommandObject<String> type(String key) {
    method type (line 135) | public final CommandObject<String> type(byte[] key) {
    method dump (line 139) | public final CommandObject<byte[]> dump(String key) {
    method dump (line 143) | public final CommandObject<byte[]> dump(byte[] key) {
    method restore (line 147) | public final CommandObject<String> restore(String key, long ttl, byte[...
    method restore (line 152) | public final CommandObject<String> restore(String key, long ttl, byte[...
    method restore (line 157) | public final CommandObject<String> restore(byte[] key, long ttl, byte[...
    method restore (line 162) | public final CommandObject<String> restore(byte[] key, long ttl, byte[...
    method expire (line 167) | public final CommandObject<Long> expire(String key, long seconds) {
    method expire (line 171) | public final CommandObject<Long> expire(byte[] key, long seconds) {
    method expire (line 175) | public final CommandObject<Long> expire(String key, long seconds, Expi...
    method expire (line 180) | public final CommandObject<Long> expire(byte[] key, long seconds, Expi...
    method pexpire (line 185) | public final CommandObject<Long> pexpire(String key, long milliseconds) {
    method pexpire (line 189) | public final CommandObject<Long> pexpire(byte[] key, long milliseconds) {
    method pexpire (line 193) | public final CommandObject<Long> pexpire(String key, long milliseconds...
    method pexpire (line 198) | public final CommandObject<Long> pexpire(byte[] key, long milliseconds...
    method expireTime (line 203) | public final CommandObject<Long> expireTime(String key) {
    method expireTime (line 207) | public final CommandObject<Long> expireTime(byte[] key) {
    method pexpireTime (line 211) | public final CommandObject<Long> pexpireTime(String key) {
    method pexpireTime (line 215) | public final CommandObject<Long> pexpireTime(byte[] key) {
    method expireAt (line 219) | public final CommandObject<Long> expireAt(String key, long unixTime) {
    method expireAt (line 223) | public final CommandObject<Long> expireAt(byte[] key, long unixTime) {
    method expireAt (line 227) | public final CommandObject<Long> expireAt(String key, long unixTime, E...
    method expireAt (line 231) | public final CommandObject<Long> expireAt(byte[] key, long unixTime, E...
    method pexpireAt (line 235) | public final CommandObject<Long> pexpireAt(String key, long millisecon...
    method pexpireAt (line 239) | public final CommandObject<Long> pexpireAt(byte[] key, long millisecon...
    method pexpireAt (line 243) | public final CommandObject<Long> pexpireAt(String key, long millisecon...
    method pexpireAt (line 248) | public final CommandObject<Long> pexpireAt(byte[] key, long millisecon...
    method ttl (line 253) | public final CommandObject<Long> ttl(String key) {
    method ttl (line 257) | public final CommandObject<Long> ttl(byte[] key) {
    method pttl (line 261) | public final CommandObject<Long> pttl(String key) {
    method pttl (line 265) | public final CommandObject<Long> pttl(byte[] key) {
    method touch (line 269) | public final CommandObject<Long> touch(String key) {
    method touch (line 273) | public final CommandObject<Long> touch(String... keys) {
    method touch (line 277) | public final CommandObject<Long> touch(byte[] key) {
    method touch (line 281) | public final CommandObject<Long> touch(byte[]... keys) {
    method sort (line 285) | public final CommandObject<List<String>> sort(String key) {
    method sort (line 289) | public final CommandObject<List<String>> sort(String key, SortingParam...
    method sort (line 293) | public final CommandObject<List<byte[]>> sort(byte[] key) {
    method sort (line 297) | public final CommandObject<List<byte[]>> sort(byte[] key, SortingParam...
    method sort (line 301) | public final CommandObject<Long> sort(String key, String dstkey) {
    method sort (line 306) | public final CommandObject<Long> sort(String key, SortingParams sortin...
    method sort (line 311) | public final CommandObject<Long> sort(byte[] key, byte[] dstkey) {
    method sort (line 316) | public final CommandObject<Long> sort(byte[] key, SortingParams sortin...
    method sortReadonly (line 321) | public final CommandObject<List<byte[]>> sortReadonly(byte[] key, Sort...
    method sortReadonly (line 326) | public final CommandObject<List<String>> sortReadonly(String key, Sort...
    method del (line 331) | public final CommandObject<Long> del(String key) {
    method del (line 335) | public final CommandObject<Long> del(String... keys) {
    method del (line 339) | public final CommandObject<Long> del(byte[] key) {
    method del (line 343) | public final CommandObject<Long> del(byte[]... keys) {
    method delex (line 347) | public final CommandObject<Long> delex(String key, CompareCondition co...
    method delex (line 353) | public final CommandObject<Long> delex(byte[] key, CompareCondition co...
    method unlink (line 359) | public final CommandObject<Long> unlink(String key) {
    method unlink (line 363) | public final CommandObject<Long> unlink(String... keys) {
    method unlink (line 367) | public final CommandObject<Long> unlink(byte[] key) {
    method unlink (line 371) | public final CommandObject<Long> unlink(byte[]... keys) {
    method copy (line 375) | public final CommandObject<Boolean> copy(String srcKey, String dstKey,...
    method copy (line 383) | public final CommandObject<Boolean> copy(byte[] srcKey, byte[] dstKey,...
    method rename (line 391) | public final CommandObject<String> rename(String oldkey, String newkey) {
    method renamenx (line 395) | public final CommandObject<Long> renamenx(String oldkey, String newkey) {
    method rename (line 399) | public final CommandObject<String> rename(byte[] oldkey, byte[] newkey) {
    method renamenx (line 403) | public final CommandObject<Long> renamenx(byte[] oldkey, byte[] newkey) {
    method dbSize (line 407) | public CommandObject<Long> dbSize() {
    method keys (line 411) | public CommandObject<Set<String>> keys(String pattern) {
    method keys (line 416) | public CommandObject<Set<byte[]>> keys(byte[] pattern) {
    method scan (line 421) | public CommandObject<ScanResult<String>> scan(String cursor) {
    method scan (line 425) | public CommandObject<ScanResult<String>> scan(String cursor, ScanParam...
    method scan (line 429) | public CommandObject<ScanResult<String>> scan(String cursor, ScanParam...
    method scan (line 433) | public CommandObject<ScanResult<byte[]>> scan(byte[] cursor) {
    method scan (line 437) | public CommandObject<ScanResult<byte[]>> scan(byte[] cursor, ScanParam...
    method scan (line 441) | public CommandObject<ScanResult<byte[]>> scan(byte[] cursor, ScanParam...
    method randomKey (line 445) | public final CommandObject<String> randomKey() {
    method randomBinaryKey (line 449) | public final CommandObject<byte[]> randomBinaryKey() {
    method set (line 455) | public final CommandObject<String> set(String key, String value) {
    method set (line 459) | public final CommandObject<String> set(String key, String value, SetPa...
    method set (line 463) | public final CommandObject<String> set(byte[] key, byte[] value) {
    method set (line 467) | public final CommandObject<String> set(byte[] key, byte[] value, SetPa...
    method get (line 471) | public final CommandObject<String> get(String key) {
    method digestKey (line 475) | public final CommandObject<String> digestKey(String key) {
    method setGet (line 479) | public final CommandObject<String> setGet(String key, String value) {
    method setGet (line 483) | public final CommandObject<String> setGet(String key, String value, Se...
    method getDel (line 488) | public final CommandObject<String> getDel(String key) {
    method getEx (line 492) | public final CommandObject<String> getEx(String key, GetExParams param...
    method digestKey (line 496) | public final CommandObject<byte[]> digestKey(byte[] key) {
    method get (line 500) | public final CommandObject<byte[]> get(byte[] key) {
    method setGet (line 504) | public final CommandObject<byte[]> setGet(byte[] key, byte[] value) {
    method setGet (line 508) | public final CommandObject<byte[]> setGet(byte[] key, byte[] value, Se...
    method getDel (line 513) | public final CommandObject<byte[]> getDel(byte[] key) {
    method getEx (line 517) | public final CommandObject<byte[]> getEx(byte[] key, GetExParams param...
    method getSet (line 524) | @Deprecated
    method getSet (line 532) | @Deprecated
    method setnx (line 537) | public final CommandObject<Long> setnx(String key, String value) {
    method setex (line 541) | public final CommandObject<String> setex(String key, long seconds, Str...
    method psetex (line 545) | public final CommandObject<String> psetex(String key, long millisecond...
    method setnx (line 549) | public final CommandObject<Long> setnx(byte[] key, byte[] value) {
    method setex (line 553) | public final CommandObject<String> setex(byte[] key, long seconds, byt...
    method psetex (line 557) | public final CommandObject<String> psetex(byte[] key, long millisecond...
    method setbit (line 561) | public final CommandObject<Boolean> setbit(String key, long offset, bo...
    method setbit (line 565) | public final CommandObject<Boolean> setbit(byte[] key, long offset, bo...
    method getbit (line 569) | public final CommandObject<Boolean> getbit(String key, long offset) {
    method getbit (line 573) | public final CommandObject<Boolean> getbit(byte[] key, long offset) {
    method setrange (line 577) | public final CommandObject<Long> setrange(String key, long offset, Str...
    method setrange (line 581) | public final CommandObject<Long> setrange(byte[] key, long offset, byt...
    method getrange (line 585) | public final CommandObject<String> getrange(String key, long startOffs...
    method getrange (line 589) | public final CommandObject<byte[]> getrange(byte[] key, long startOffs...
    method mget (line 593) | public final CommandObject<List<String>> mget(String... keys) {
    method mget (line 597) | public final CommandObject<List<byte[]>> mget(byte[]... keys) {
    method mset (line 601) | public final CommandObject<String> mset(String... keysvalues) {
    method msetnx (line 605) | public final CommandObject<Long> msetnx(String... keysvalues) {
    method msetex (line 609) | public final CommandObject<Boolean> msetex(MSetExParams params, String...
    method msetex (line 616) | public final CommandObject<Boolean> msetex(MSetExParams params, byte[]...
    method mset (line 623) | public final CommandObject<String> mset(byte[]... keysvalues) {
    method msetnx (line 627) | public final CommandObject<Long> msetnx(byte[]... keysvalues) {
    method incr (line 631) | public final CommandObject<Long> incr(String key) {
    method incrBy (line 635) | public final CommandObject<Long> incrBy(String key, long increment) {
    method incrByFloat (line 639) | public final CommandObject<Double> incrByFloat(String key, double incr...
    method incr (line 643) | public final CommandObject<Long> incr(byte[] key) {
    method incrBy (line 647) | public final CommandObject<Long> incrBy(byte[] key, long increment) {
    method incrByFloat (line 651) | public final CommandObject<Double> incrByFloat(byte[] key, double incr...
    method decr (line 655) | public final CommandObject<Long> decr(String key) {
    method decrBy (line 659) | public final CommandObject<Long> decrBy(String key, long decrement) {
    method decr (line 663) | public final CommandObject<Long> decr(byte[] key) {
    method decrBy (line 667) | public final CommandObject<Long> decrBy(byte[] key, long decrement) {
    method append (line 671) | public final CommandObject<Long> append(String key, String value) {
    method append (line 675) | public final CommandObject<Long> append(byte[] key, byte[] value) {
    method substr (line 679) | public final CommandObject<String> substr(String key, int start, int e...
    method substr (line 683) | public final CommandObject<byte[]> substr(byte[] key, int start, int e...
    method strlen (line 687) | public final CommandObject<Long> strlen(String key) {
    method strlen (line 691) | public final CommandObject<Long> strlen(byte[] key) {
    method bitcount (line 695) | public final CommandObject<Long> bitcount(String key) {
    method bitcount (line 699) | public final CommandObject<Long> bitcount(String key, long start, long...
    method bitcount (line 703) | public final CommandObject<Long> bitcount(String key, long start, long...
    method bitcount (line 707) | public final CommandObject<Long> bitcount(byte[] key) {
    method bitcount (line 711) | public final CommandObject<Long> bitcount(byte[] key, long start, long...
    method bitcount (line 715) | public final CommandObject<Long> bitcount(byte[] key, long start, long...
    method bitpos (line 719) | public final CommandObject<Long> bitpos(String key, boolean value) {
    method bitpos (line 723) | public final CommandObject<Long> bitpos(String key, boolean value, Bit...
    method bitpos (line 727) | public final CommandObject<Long> bitpos(byte[] key, boolean value) {
    method bitpos (line 731) | public final CommandObject<Long> bitpos(byte[] key, boolean value, Bit...
    method bitfield (line 735) | public final CommandObject<List<Long>> bitfield(String key, String... ...
    method bitfieldReadonly (line 739) | public final CommandObject<List<Long>> bitfieldReadonly(String key, St...
    method bitfield (line 743) | public final CommandObject<List<Long>> bitfield(byte[] key, byte[]... ...
    method bitfieldReadonly (line 747) | public final CommandObject<List<Long>> bitfieldReadonly(byte[] key, by...
    method bitop (line 751) | public final CommandObject<Long> bitop(BitOP op, String destKey, Strin...
    method bitop (line 755) | public final CommandObject<Long> bitop(BitOP op, byte[] destKey, byte[...
    method lcs (line 759) | public final CommandObject<LCSMatchResult> lcs(String keyA, String key...
    method lcs (line 764) | public final CommandObject<LCSMatchResult> lcs(byte[] keyA, byte[] key...
    method rpush (line 771) | public final CommandObject<Long> rpush(String key, String... strings) {
    method rpush (line 775) | public final CommandObject<Long> rpush(byte[] key, byte[]... strings) {
    method lpush (line 779) | public final CommandObject<Long> lpush(String key, String... strings) {
    method lpush (line 783) | public final CommandObject<Long> lpush(byte[] key, byte[]... strings) {
    method llen (line 787) | public final CommandObject<Long> llen(String key) {
    method llen (line 791) | public final CommandObject<Long> llen(byte[] key) {
    method lrange (line 795) | public final CommandObject<List<String>> lrange(String key, long start...
    method lrange (line 799) | public final CommandObject<List<byte[]>> lrange(byte[] key, long start...
    method ltrim (line 803) | public final CommandObject<String> ltrim(String key, long start, long ...
    method ltrim (line 807) | public final CommandObject<String> ltrim(byte[] key, long start, long ...
    method lindex (line 811) | public final CommandObject<String> lindex(String key, long index) {
    method lindex (line 815) | public final CommandObject<byte[]> lindex(byte[] key, long index) {
    method lset (line 819) | public final CommandObject<String> lset(String key, long index, String...
    method lset (line 823) | public final CommandObject<String> lset(byte[] key, long index, byte[]...
    method lrem (line 827) | public final CommandObject<Long> lrem(String key, long count, String v...
    method lrem (line 831) | public final CommandObject<Long> lrem(byte[] key, long count, byte[] v...
    method lpop (line 835) | public final CommandObject<String> lpop(String key) {
    method lpop (line 839) | public final CommandObject<List<String>> lpop(String key, int count) {
    method lpop (line 843) | public final CommandObject<byte[]> lpop(byte[] key) {
    method lpop (line 847) | public final CommandObject<List<byte[]>> lpop(byte[] key, int count) {
    method rpop (line 851) | public final CommandObject<String> rpop(String key) {
    method rpop (line 855) | public final CommandObject<List<String>> rpop(String key, int count) {
    method rpop (line 859) | public final CommandObject<byte[]> rpop(byte[] key) {
    method rpop (line 863) | public final CommandObject<List<byte[]>> rpop(byte[] key, int count) {
    method lpos (line 867) | public final CommandObject<Long> lpos(String key, String element) {
    method lpos (line 871) | public final CommandObject<Long> lpos(String key, String element, LPos...
    method lpos (line 875) | public final CommandObject<List<Long>> lpos(String key, String element...
    method lpos (line 880) | public final CommandObject<Long> lpos(byte[] key, byte[] element) {
    method lpos (line 884) | public final CommandObject<Long> lpos(byte[] key, byte[] element, LPos...
    method lpos (line 888) | public final CommandObject<List<Long>> lpos(byte[] key, byte[] element...
    method linsert (line 893) | public final CommandObject<Long> linsert(String key, ListPosition wher...
    method linsert (line 898) | public final CommandObject<Long> linsert(byte[] key, ListPosition wher...
    method lpushx (line 903) | public final CommandObject<Long> lpushx(String key, String... strings) {
    method rpushx (line 907) | public final CommandObject<Long> rpushx(String key, String... strings) {
    method lpushx (line 911) | public final CommandObject<Long> lpushx(byte[] key, byte[]... args) {
    method rpushx (line 915) | public final CommandObject<Long> rpushx(byte[] key, byte[]... args) {
    method blpop (line 919) | public final CommandObject<List<String>> blpop(int timeout, String key) {
    method blpop (line 923) | public final CommandObject<List<String>> blpop(int timeout, String... ...
    method blpop (line 927) | public final CommandObject<KeyValue<String, String>> blpop(double time...
    method blpop (line 931) | public final CommandObject<KeyValue<String, String>> blpop(double time...
    method blpop (line 935) | public final CommandObject<List<byte[]>> blpop(int timeout, byte[]... ...
    method blpop (line 939) | public final CommandObject<KeyValue<byte[], byte[]>> blpop(double time...
    method brpop (line 943) | public final CommandObject<List<String>> brpop(int timeout, String key) {
    method brpop (line 947) | public final CommandObject<List<String>> brpop(int timeout, String... ...
    method brpop (line 951) | public final CommandObject<KeyValue<String, String>> brpop(double time...
    method brpop (line 955) | public final CommandObject<KeyValue<String, String>> brpop(double time...
    method brpop (line 959) | public final CommandObject<List<byte[]>> brpop(int timeout, byte[]... ...
    method brpop (line 963) | public final CommandObject<KeyValue<byte[], byte[]>> brpop(double time...
    method rpoplpush (line 967) | public final CommandObject<String> rpoplpush(String srckey, String dst...
    method brpoplpush (line 971) | public final CommandObject<String> brpoplpush(String source, String de...
    method rpoplpush (line 976) | public final CommandObject<byte[]> rpoplpush(byte[] srckey, byte[] dst...
    method brpoplpush (line 980) | public final CommandObject<byte[]> brpoplpush(byte[] source, byte[] de...
    method lmove (line 985) | public final CommandObject<String> lmove(String srcKey, String dstKey,...
    method blmove (line 990) | public final CommandObject<String> blmove(String srcKey, String dstKey...
    method lmove (line 995) | public final CommandObject<byte[]> lmove(byte[] srcKey, byte[] dstKey,...
    method blmove (line 1000) | public final CommandObject<byte[]> blmove(byte[] srcKey, byte[] dstKey...
    method lmpop (line 1005) | public final CommandObject<KeyValue<String, List<String>>> lmpop(ListD...
    method lmpop (line 1010) | public final CommandObject<KeyValue<String, List<String>>> lmpop(ListD...
    method blmpop (line 1015) | public final CommandObject<KeyValue<String, List<String>>> blmpop(doub...
    method blmpop (line 1020) | public final CommandObject<KeyValue<String, List<String>>> blmpop(doub...
    method lmpop (line 1026) | public final CommandObject<KeyValue<byte[], List<byte[]>>> lmpop(ListD...
    method lmpop (line 1031) | public final CommandObject<KeyValue<byte[], List<byte[]>>> lmpop(ListD...
    method blmpop (line 1036) | public final CommandObject<KeyValue<byte[], List<byte[]>>> blmpop(doub...
    method blmpop (line 1041) | public final CommandObject<KeyValue<byte[], List<byte[]>>> blmpop(doub...
    method hset (line 1049) | public final CommandObject<Long> hset(String key, String field, String...
    method hset (line 1053) | public final CommandObject<Long> hset(String key, Map<String, String> ...
    method hsetex (line 1057) | public final CommandObject<Long> hsetex(String key, HSetExParams param...
    method hsetex (line 1062) | public final CommandObject<Long> hsetex(String key, HSetExParams param...
    method hget (line 1067) | public final CommandObject<String> hget(String key, String field) {
    method hgetex (line 1071) | public final CommandObject<List<String>> hgetex(String key, HGetExPara...
    method hgetdel (line 1076) | public final CommandObject<List<String>> hgetdel(String key, String......
    method hsetnx (line 1081) | public final CommandObject<Long> hsetnx(String key, String field, Stri...
    method hmset (line 1085) | public final CommandObject<String> hmset(String key, Map<String, Strin...
    method hmget (line 1089) | public final CommandObject<List<String>> hmget(String key, String... f...
    method hset (line 1093) | public final CommandObject<Long> hset(byte[] key, byte[] field, byte[]...
    method hset (line 1097) | public final CommandObject<Long> hset(byte[] key, Map<byte[], byte[]> ...
    method hsetex (line 1101) | public final CommandObject<Long> hsetex(byte[] key, HSetExParams param...
    method hsetex (line 1106) | public final CommandObject<Long> hsetex(byte[] key, HSetExParams param...
    method hget (line 1111) | public final CommandObject<byte[]> hget(byte[] key, byte[] field) {
    method hgetex (line 1115) | public final CommandObject<List<byte[]>> hgetex(byte[] key, HGetExPara...
    method hgetdel (line 1120) | public final CommandObject<List<byte[]>> hgetdel(byte[] key, byte[]......
    method hsetnx (line 1125) | public final CommandObject<Long> hsetnx(byte[] key, byte[] field, byte...
    method hmset (line 1129) | public final CommandObject<String> hmset(byte[] key, Map<byte[], byte[...
    method hmget (line 1133) | public final CommandObject<List<byte[]>> hmget(byte[] key, byte[]... f...
    method hincrBy (line 1137) | public final CommandObject<Long> hincrBy(String key, String field, lon...
    method hincrByFloat (line 1141) | public final CommandObject<Double> hincrByFloat(String key, String fie...
    method hexists (line 1145) | public final CommandObject<Boolean> hexists(String key, String field) {
    method hdel (line 1149) | public final CommandObject<Long> hdel(String key, String... field) {
    method hlen (line 1153) | public final CommandObject<Long> hlen(String key) {
    method hincrBy (line 1157) | public final CommandObject<Long> hincrBy(byte[] key, byte[] field, lon...
    method hincrByFloat (line 1161) | public final CommandObject<Double> hincrByFloat(byte[] key, byte[] fie...
    method hexists (line 1165) | public final CommandObject<Boolean> hexists(byte[] key, byte[] field) {
    method hdel (line 1169) | public final CommandObject<Long> hdel(byte[] key, byte[]... field) {
    method hlen (line 1173) | public final CommandObject<Long> hlen(byte[] key) {
    method hkeys (line 1177) | public final CommandObject<Set<String>> hkeys(String key) {
    method hvals (line 1181) | public final CommandObject<List<String>> hvals(String key) {
    method hkeys (line 1185) | public final CommandObject<Set<byte[]>> hkeys(byte[] key) {
    method hvals (line 1189) | public final CommandObject<List<byte[]>> hvals(byte[] key) {
    method hgetAll (line 1193) | public final CommandObject<Map<String, String>> hgetAll(String key) {
    method hrandfield (line 1197) | public final CommandObject<String> hrandfield(String key) {
    method hrandfield (line 1201) | public final CommandObject<List<String>> hrandfield(String key, long c...
    method hrandfieldWithValues (line 1205) | public final CommandObject<List<Map.Entry<String, String>>> hrandfield...
    method hgetAll (line 1210) | public final CommandObject<Map<byte[], byte[]>> hgetAll(byte[] key) {
    method hrandfield (line 1214) | public final CommandObject<byte[]> hrandfield(byte[] key) {
    method hrandfield (line 1218) | public final CommandObject<List<byte[]>> hrandfield(byte[] key, long c...
    method hrandfieldWithValues (line 1222) | public final CommandObject<List<Map.Entry<byte[], byte[]>>> hrandfield...
    method hscan (line 1227) | public final CommandObject<ScanResult<Map.Entry<String, String>>> hsca...
    method hscanNoValues (line 1231) | public final CommandObject<ScanResult<String>> hscanNoValues(String ke...
    method hscan (line 1235) | public final CommandObject<ScanResult<Map.Entry<byte[], byte[]>>> hsca...
    method hscanNoValues (line 1239) | public final CommandObject<ScanResult<byte[]>> hscanNoValues(byte[] ke...
    method hstrlen (line 1243) | public final CommandObject<Long> hstrlen(String key, String field) {
    method hstrlen (line 1247) | public final CommandObject<Long> hstrlen(byte[] key, byte[] field) {
    method hexpire (line 1251) | public final CommandObject<List<Long>> hexpire(String key, long second...
    method hexpire (line 1256) | public final CommandObject<List<Long>> hexpire(String key, long second...
    method hpexpire (line 1261) | public final CommandObject<List<Long>> hpexpire(String key, long milli...
    method hpexpire (line 1266) | public final CommandObject<List<Long>> hpexpire(String key, long milli...
    method hexpireAt (line 1271) | public final CommandObject<List<Long>> hexpireAt(String key, long unix...
    method hexpireAt (line 1276) | public final CommandObject<List<Long>> hexpireAt(String key, long unix...
    method hpexpireAt (line 1281) | public final CommandObject<List<Long>> hpexpireAt(String key, long uni...
    method hpexpireAt (line 1286) | public final CommandObject<List<Long>> hpexpireAt(String key, long uni...
    method hexpire (line 1291) | public final CommandObject<List<Long>> hexpire(byte[] key, long second...
    method hexpire (line 1296) | public final CommandObject<List<Long>> hexpire(byte[] key, long second...
    method hpexpire (line 1301) | public final CommandObject<List<Long>> hpexpire(byte[] key, long milli...
    method hpexpire (line 1306) | public final CommandObject<List<Long>> hpexpire(byte[] key, long milli...
    method hexpireAt (line 1311) | public final CommandObject<List<Long>> hexpireAt(byte[] key, long unix...
    method hexpireAt (line 1316) | public final CommandObject<List<Long>> hexpireAt(byte[] key, long unix...
    method hpexpireAt (line 1321) | public final CommandObject<List<Long>> hpexpireAt(byte[] key, long uni...
    method hpexpireAt (line 1326) | public final CommandObject<List<Long>> hpexpireAt(byte[] key, long uni...
    method hexpireTime (line 1331) | public final CommandObject<List<Long>> hexpireTime(String key, String....
    method hpexpireTime (line 1336) | public final CommandObject<List<Long>> hpexpireTime(String key, String...
    method httl (line 1341) | public final CommandObject<List<Long>> httl(String key, String... fiel...
    method hpttl (line 1346) | public final CommandObject<List<Long>> hpttl(String key, String... fie...
    method hexpireTime (line 1351) | public final CommandObject<List<Long>> hexpireTime(byte[] key, byte[]....
    method hpexpireTime (line 1356) | public final CommandObject<List<Long>> hpexpireTime(byte[] key, byte[]...
    method httl (line 1361) | public final CommandObject<List<Long>> httl(byte[] key, byte[]... fiel...
    method hpttl (line 1366) | public final CommandObject<List<Long>> hpttl(byte[] key, byte[]... fie...
    method hpersist (line 1371) | public final CommandObject<List<Long>> hpersist(String key, String... ...
    method hpersist (line 1376) | public final CommandObject<List<Long>> hpersist(byte[] key, byte[]... ...
    method sadd (line 1383) | public final CommandObject<Long> sadd(String key, String... members) {
    method sadd (line 1387) | public final CommandObject<Long> sadd(byte[] key, byte[]... members) {
    method smembers (line 1391) | public final CommandObject<Set<String>> smembers(String key) {
    method smembers (line 1395) | public final CommandObject<Set<byte[]>> smembers(byte[] key) {
    method srem (line 1399) | public final CommandObject<Long> srem(String key, String... members) {
    method srem (line 1403) | public final CommandObject<Long> srem(byte[] key, byte[]... members) {
    method spop (line 1407) | public final CommandObject<String> spop(String key) {
    method spop (line 1411) | public final CommandObject<byte[]> spop(byte[] key) {
    method spop (line 1415) | public final CommandObject<Set<String>> spop(String key, long count) {
    method spop (line 1419) | public final CommandObject<Set<byte[]>> spop(byte[] key, long count) {
    method scard (line 1423) | public final CommandObject<Long> scard(String key) {
    method scard (line 1427) | public final CommandObject<Long> scard(byte[] key) {
    method sismember (line 1431) | public final CommandObject<Boolean> sismember(String key, String membe...
    method sismember (line 1435) | public final CommandObject<Boolean> sismember(byte[] key, byte[] membe...
    method smismember (line 1439) | public final CommandObject<List<Boolean>> smismember(String key, Strin...
    method smismember (line 1443) | public final CommandObject<List<Boolean>> smismember(byte[] key, byte[...
    method srandmember (line 1447) | public final CommandObject<String> srandmember(String key) {
    method srandmember (line 1451) | public final CommandObject<byte[]> srandmember(byte[] key) {
    method srandmember (line 1455) | public final CommandObject<List<String>> srandmember(String key, int c...
    method srandmember (line 1459) | public final CommandObject<List<byte[]>> srandmember(byte[] key, int c...
    method sscan (line 1463) | public final CommandObject<ScanResult<String>> sscan(String key, Strin...
    method sscan (line 1467) | public final CommandObject<ScanResult<byte[]>> sscan(byte[] key, byte[...
    method sdiff (line 1471) | public final CommandObject<Set<String>> sdiff(String... keys) {
    method sdiffstore (line 1475) | public final CommandObject<Long> sdiffstore(String dstkey, String... k...
    method sdiff (line 1479) | public final CommandObject<Set<byte[]>> sdiff(byte[]... keys) {
    method sdiffstore (line 1483) | public final CommandObject<Long> sdiffstore(byte[] dstkey, byte[]... k...
    method sinter (line 1487) | public final CommandObject<Set<String>> sinter(String... keys) {
    method sinterstore (line 1491) | public final CommandObject<Long> sinterstore(String dstkey, String... ...
    method sintercard (line 1495) | public final CommandObject<Long> sintercard(String... keys) {
    method sintercard (line 1499) | public final CommandObject<Long> sintercard(int limit, String... keys) {
    method sinter (line 1503) | public final CommandObject<Set<byte[]>> sinter(byte[]... keys) {
    method sinterstore (line 1507) | public final CommandObject<Long> sinterstore(byte[] dstkey, byte[]... ...
    method sintercard (line 1511) | public final CommandObject<Long> sintercard(byte[]... keys) {
    method sintercard (line 1515) | public final CommandObject<Long> sintercard(int limit, byte[]... keys) {
    method sunion (line 1519) | public final CommandObject<Set<String>> sunion(String... keys) {
    method sunionstore (line 1523) | public final CommandObject<Long> sunionstore(String dstkey, String... ...
    method sunion (line 1527) | public final CommandObject<Set<byte[]>> sunion(byte[]... keys) {
    method sunionstore (line 1531) | public final CommandObject<Long> sunionstore(byte[] dstkey, byte[]... ...
    method smove (line 1535) | public final CommandObject<Long> smove(String srckey, String dstkey, S...
    method smove (line 1539) | public final CommandObject<Long> smove(byte[] srckey, byte[] dstkey, b...
    method zadd (line 1545) | public final CommandObject<Long> zadd(String key, double score, String...
    method zadd (line 1549) | public final CommandObject<Long> zadd(String key, double score, String...
    method zadd (line 1554) | public final CommandObject<Long> zadd(String key, Map<String, Double> ...
    method zadd (line 1558) | public final CommandObject<Long> zadd(String key, Map<String, Double> ...
    method zaddIncr (line 1562) | public final CommandObject<Double> zaddIncr(String key, double score, ...
    method zadd (line 1567) | public final CommandObject<Long> zadd(byte[] key, double score, byte[]...
    method zadd (line 1571) | public final CommandObject<Long> zadd(byte[] key, double score, byte[]...
    method zadd (line 1576) | public final CommandObject<Long> zadd(byte[] key, Map<byte[], Double> ...
    method zadd (line 1580) | public final CommandObject<Long> zadd(byte[] key, Map<byte[], Double> ...
    method zaddIncr (line 1584) | public final CommandObject<Double> zaddIncr(byte[] key, double score, ...
    method zincrby (line 1589) | public final CommandObject<Double> zincrby(String key, double incremen...
    method zincrby (line 1593) | public final CommandObject<Double> zincrby(String key, double incremen...
    method zincrby (line 1597) | public final CommandObject<Double> zincrby(byte[] key, double incremen...
    method zincrby (line 1601) | public final CommandObject<Double> zincrby(byte[] key, double incremen...
    method zrem (line 1605) | public final CommandObject<Long> zrem(String key, String... members) {
    method zrem (line 1609) | public final CommandObject<Long> zrem(byte[] key, byte[]... members) {
    method zrank (line 1613) | public final CommandObject<Long> zrank(String key, String member) {
    method zrevrank (line 1617) | public final CommandObject<Long> zrevrank(String key, String member) {
    method zrankWithScore (line 1621) | public final CommandObject<KeyValue<Long, Double>> zrankWithScore(Stri...
    method zrevrankWithScore (line 1625) | public final CommandObject<KeyValue<Long, Double>> zrevrankWithScore(S...
    method zrank (line 1629) | public final CommandObject<Long> zrank(byte[] key, byte[] member) {
    method zrevrank (line 1633) | public final CommandObject<Long> zrevrank(byte[] key, byte[] member) {
    method zrankWithScore (line 1637) | public final CommandObject<KeyValue<Long, Double>> zrankWithScore(byte...
    method zrevrankWithScore (line 1641) | public final CommandObject<KeyValue<Long, Double>> zrevrankWithScore(b...
    method zrandmember (line 1645) | public final CommandObject<String> zrandmember(String key) {
    method zrandmember (line 1649) | public final CommandObject<List<String>> zrandmember(String key, long ...
    method zrandmemberWithScores (line 1653) | public final CommandObject<List<Tuple>> zrandmemberWithScores(String k...
    method zrandmember (line 1657) | public final CommandObject<byte[]> zrandmember(byte[] key) {
    method zrandmember (line 1661) | public final CommandObject<List<byte[]>> zrandmember(byte[] key, long ...
    method zrandmemberWithScores (line 1665) | public final CommandObject<List<Tuple>> zrandmemberWithScores(byte[] k...
    method zcard (line 1669) | public final CommandObject<Long> zcard(String key) {
    method zscore (line 1673) | public final CommandObject<Double> zscore(String key, String member) {
    method zmscore (line 1677) | public final CommandObject<List<Double>> zmscore(String key, String......
    method zcard (line 1681) | public final CommandObject<Long> zcard(byte[] key) {
    method zscore (line 1685) | public final CommandObject<Double> zscore(byte[] key, byte[] member) {
    method zmscore (line 1689) | public final CommandObject<List<Double>> zmscore(byte[] key, byte[]......
    method zpopmax (line 1693) | public final CommandObject<Tuple> zpopmax(String key) {
    method zpopmax (line 1697) | public final CommandObject<List<Tuple>> zpopmax(String key, int count) {
    method zpopmin (line 1701) | public final CommandObject<Tuple> zpopmin(String key) {
    method zpopmin (line 1705) | public final CommandObject<List<Tuple>> zpopmin(String key, int count) {
    method zpopmax (line 1709) | public final CommandObject<Tuple> zpopmax(byte[] key) {
    method zpopmax (line 1713) | public final CommandObject<List<Tuple>> zpopmax(byte[] key, int count) {
    method zpopmin (line 1717) | public final CommandObject<Tuple> zpopmin(byte[] key) {
    method zpopmin (line 1721) | public final CommandObject<List<Tuple>> zpopmin(byte[] key, int count) {
    method bzpopmax (line 1725) | public final CommandObject<KeyValue<String, Tuple>> bzpopmax(double ti...
    method bzpopmin (line 1730) | public final CommandObject<KeyValue<String, Tuple>> bzpopmin(double ti...
    method bzpopmax (line 1735) | public final CommandObject<KeyValue<byte[], Tuple>> bzpopmax(double ti...
    method bzpopmin (line 1740) | public final CommandObject<KeyValue<byte[], Tuple>> bzpopmin(double ti...
    method zcount (line 1745) | public final CommandObject<Long> zcount(String key, double min, double...
    method zcount (line 1749) | public final CommandObject<Long> zcount(String key, String min, String...
    method zcount (line 1753) | public final CommandObject<Long> zcount(byte[] key, double min, double...
    method zcount (line 1757) | public final CommandObject<Long> zcount(byte[] key, byte[] min, byte[]...
    method zrange (line 1761) | public final CommandObject<List<String>> zrange(String key, long start...
    method zrevrange (line 1765) | public final CommandObject<List<String>> zrevrange(String key, long st...
    method zrangeWithScores (line 1769) | public final CommandObject<List<Tuple>> zrangeWithScores(String key, l...
    method zrevrangeWithScores (line 1774) | public final CommandObject<List<Tuple>> zrevrangeWithScores(String key...
    method zrange (line 1779) | public final CommandObject<List<String>> zrange(String key, ZRangePara...
    method zrangeWithScores (line 1783) | public final CommandObject<List<Tuple>> zrangeWithScores(String key, Z...
    method zrangestore (line 1787) | public final CommandObject<Long> zrangestore(String dest, String src, ...
    method zrangeByScore (line 1791) | public final CommandObject<List<String>> zrangeByScore(String key, dou...
    method zrangeByScore (line 1795) | public final CommandObject<List<String>> zrangeByScore(String key, Str...
    method zrevrangeByScore (line 1799) | public final CommandObject<List<String>> zrevrangeByScore(String key, ...
    method zrevrangeByScore (line 1803) | public final CommandObject<List<String>> zrevrangeByScore(String key, ...
    method zrangeByScore (line 1807) | public final CommandObject<List<String>> zrangeByScore(String key, dou...
    method zrangeByScore (line 1812) | public final CommandObject<List<String>> zrangeByScore(String key, Str...
    method zrevrangeByScore (line 1817) | public final CommandObject<List<String>> zrevrangeByScore(String key, ...
    method zrevrangeByScore (line 1822) | public final CommandObject<List<String>> zrevrangeByScore(String key, ...
    method zrangeByScoreWithScores (line 1827) | public final CommandObject<List<Tuple>> zrangeByScoreWithScores(String...
    method zrangeByScoreWithScores (line 1832) | public final CommandObject<List<Tuple>> zrangeByScoreWithScores(String...
    method zrevrangeByScoreWithScores (line 1837) | public final CommandObject<List<Tuple>> zrevrangeByScoreWithScores(Str...
    method zrevrangeByScoreWithScores (line 1842) | public final CommandObject<List<Tuple>> zrevrangeByScoreWithScores(Str...
    method zrangeByScoreWithScores (line 1847) | public final CommandObject<List<Tuple>> zrangeByScoreWithScores(String...
    method zrangeByScoreWithScores (line 1852) | public final CommandObject<List<Tuple>> zrangeByScoreWithScores(String...
    method zrevrangeByScoreWithScores (line 1857) | public final CommandObject<List<Tuple>> zrevrangeByScoreWithScores(Str...
    method zrevrangeByScoreWithScores (line 1862) | public final CommandObject<List<Tuple>> zrevrangeByScoreWithScores(Str...
    method zrange (line 1867) | public final CommandObject<List<byte[]>> zrange(byte[] key, long start...
    method zrevrange (line 1871) | public final CommandObject<List<byte[]>> zrevrange(byte[] key, long st...
    method zrangeWithScores (line 1875) | public final CommandObject<List<Tuple>> zrangeWithScores(byte[] key, l...
    method zrevrangeWithScores (line 1880) | public final CommandObject<List<Tuple>> zrevrangeWithScores(byte[] key...
    method zrange (line 1885) | public final CommandObject<List<byte[]>> zrange(byte[] key, ZRangePara...
    method zrangeWithScores (line 1889) | public final CommandObject<List<Tuple>> zrangeWithScores(byte[] key, Z...
    method zrangestore (line 1893) | public final CommandObject<Long> zrangestore(byte[] dest, byte[] src, ...
    method zrangeByScore (line 1897) | public final CommandObject<List<byte[]>> zrangeByScore(byte[] key, dou...
    method zrangeByScore (line 1901) | public final CommandObject<List<byte[]>> zrangeByScore(byte[] key, byt...
    method zrevrangeByScore (line 1905) | public final CommandObject<List<byte[]>> zrevrangeByScore(byte[] key, ...
    method zrevrangeByScore (line 1909) | public final CommandObject<List<byte[]>> zrevrangeByScore(byte[] key, ...
    method zrangeByScore (line 1913) | public final CommandObject<List<byte[]>> zrangeByScore(byte[] key, dou...
    method zrangeByScore (line 1918) | public final CommandObject<List<byte[]>> zrangeByScore(byte[] key, byt...
    method zrevrangeByScore (line 1923) | public final CommandObject<List<byte[]>> zrevrangeByScore(byte[] key, ...
    method zrevrangeByScore (line 1928) | public final CommandObject<List<byte[]>> zrevrangeByScore(byte[] key, ...
    method zrangeByScoreWithScores (line 1933) | public final CommandObject<List<Tuple>> zrangeByScoreWithScores(byte[]...
    method zrangeByScoreWithScores (line 1938) | public final CommandObject<List<Tuple>> zrangeByScoreWithScores(byte[]...
    method zrevrangeByScoreWithScores (line 1943) | public final CommandObject<List<Tuple>> zrevrangeByScoreWithScores(byt...
    method zrevrangeByScoreWithScores (line 1948) | public final CommandObject<List<Tuple>> zrevrangeByScoreWithScores(byt...
    method zrangeByScoreWithScores (line 1953) | public final CommandObject<List<Tuple>> zrangeByScoreWithScores(byte[]...
    method zrangeByScoreWithScores (line 1958) | public final CommandObject<List<Tuple>> zrangeByScoreWithScores(byte[]...
    method zrevrangeByScoreWithScores (line 1963) | public final CommandObject<List<Tuple>> zrevrangeByScoreWithScores(byt...
    method zrevrangeByScoreWithScores (line 1968) | public final CommandObject<List<Tuple>> zrevrangeByScoreWithScores(byt...
    method zremrangeByRank (line 1973) | public final CommandObject<Long> zremrangeByRank(String key, long star...
    method zremrangeByScore (line 1977) | public final CommandObject<Long> zremrangeByScore(String key, double m...
    method zremrangeByScore (line 1981) | public final CommandObject<Long> zremrangeByScore(String key, String m...
    method zremrangeByRank (line 1985) | public final CommandObject<Long> zremrangeByRank(byte[] key, long star...
    method zremrangeByScore (line 1989) | public final CommandObject<Long> zremrangeByScore(byte[] key, double m...
    method zremrangeByScore (line 1993) | public final CommandObject<Long> zremrangeByScore(byte[] key, byte[] m...
    method zlexcount (line 1997) | public final CommandObject<Long> zlexcount(String key, String min, Str...
    method zrangeByLex (line 2001) | public final CommandObject<List<String>> zrangeByLex(String key, Strin...
    method zrangeByLex (line 2005) | public final CommandObject<List<String>> zrangeByLex(String key, Strin...
    method zrevrangeByLex (line 2010) | public final CommandObject<List<String>> zrevrangeByLex(String key, St...
    method zrevrangeByLex (line 2014) | public final CommandObject<List<String>> zrevrangeByLex(String key, St...
    method zremrangeByLex (line 2019) | public final CommandObject<Long> zremrangeByLex(String key, String min...
    method zlexcount (line 2023) | public final CommandObject<Long> zlexcount(byte[] key, byte[] min, byt...
    method zrangeByLex (line 2027) | public final CommandObject<List<byte[]>> zrangeByLex(byte[] key, byte[...
    method zrangeByLex (line 2031) | public final CommandObject<List<byte[]>> zrangeByLex(byte[] key, byte[...
    method zrevrangeByLex (line 2036) | public final CommandObject<List<byte[]>> zrevrangeByLex(byte[] key, by...
    method zrevrangeByLex (line 2040) | public final CommandObject<List<byte[]>> zrevrangeByLex(byte[] key, by...
    method zremrangeByLex (line 2045) | public final CommandObject<Long> zremrangeByLex(byte[] key, byte[] min...
    method zscan (line 2049) | public final CommandObject<ScanResult<Tuple>> zscan(String key, String...
    method zscan (line 2053) | public final CommandObject<ScanResult<Tuple>> zscan(byte[] key, byte[]...
    method zdiff (line 2057) | public final CommandObject<List<String>> zdiff(String... keys) {
    method zdiffWithScores (line 2062) | public final CommandObject<List<Tuple>> zdiffWithScores(String... keys) {
    method zdiffStore (line 2070) | @Deprecated
    method zdiffstore (line 2075) | public final CommandObject<Long> zdiffstore(String dstkey, String... k...
    method zdiff (line 2080) | public final CommandObject<List<byte[]>> zdiff(byte[]... keys) {
    method zdiffWithScores (line 2084) | public final CommandObject<List<Tuple>> zdiffWithScores(byte[]... keys) {
    method zdiffStore (line 2092) | @Deprecated
    method zdiffstore (line 2097) | public final CommandObject<Long> zdiffstore(byte[] dstkey, byte[]... k...
    method zinter (line 2102) | public final CommandObject<List<String>> zinter(ZParams params, String...
    method zinterWithScores (line 2107) | public final CommandObject<List<Tuple>> zinterWithScores(ZParams param...
    method zinterstore (line 2112) | public final CommandObject<Long> zinterstore(String dstkey, String... ...
    method zinterstore (line 2117) | public final CommandObject<Long> zinterstore(String dstkey, ZParams pa...
    method zintercard (line 2122) | public final CommandObject<Long> zintercard(String... keys) {
    method zintercard (line 2127) | public final CommandObject<Long> zintercard(long limit, String... keys) {
    method zinterstore (line 2132) | public final CommandObject<Long> zinterstore(byte[] dstkey, byte[]... ...
    method zinterstore (line 2137) | public final CommandObject<Long> zinterstore(byte[] dstkey, ZParams pa...
    method zintercard (line 2142) | public final CommandObject<Long> zintercard(byte[]... keys) {
    method zintercard (line 2147) | public final CommandObject<Long> zintercard(long limit, byte[]... keys) {
    method zinter (line 2152) | public final CommandObject<List<byte[]>> zinter(ZParams params, byte[]...
    method zinterWithScores (line 2157) | public final CommandObject<List<Tuple>> zinterWithScores(ZParams param...
    method zunionstore (line 2162) | public final CommandObject<Long> zunionstore(String dstkey, String... ...
    method zunionstore (line 2167) | public final CommandObject<Long> zunionstore(String dstkey, ZParams pa...
    method zunion (line 2172) | public final CommandObject<List<String>> zunion(ZParams params, String...
    method zunionWithScores (line 2177) | public final CommandObject<List<Tuple>> zunionWithScores(ZParams param...
    method zunionstore (line 2182) | public final CommandObject<Long> zunionstore(byte[] dstkey, byte[]... ...
    method zunionstore (line 2187) | public final CommandObject<Long> zunionstore(byte[] dstkey, ZParams pa...
    method zunion (line 2192) | public final CommandObject<List<byte[]>> zunion(ZParams params, byte[]...
    method zunionWithScores (line 2197) | public final CommandObject<List<Tuple>> zunionWithScores(ZParams param...
    method zmpop (line 2202) | public final CommandObject<KeyValue<String, List<Tuple>>> zmpop(Sorted...
    method zmpop (line 2207) | public final CommandObject<KeyValue<String, List<Tuple>>> zmpop(Sorted...
    method bzmpop (line 2212) | public final CommandObject<KeyValue<String, List<Tuple>>> bzmpop(doubl...
    method bzmpop (line 2217) | public final CommandObject<KeyValue<String, List<Tuple>>> bzmpop(doubl...
    method zmpop (line 2222) | public final CommandObject<KeyValue<byte[], List<Tuple>>> zmpop(Sorted...
    method zmpop (line 2227) | public final CommandObject<KeyValue<byte[], List<Tuple>>> zmpop(Sorted...
    method bzmpop (line 2232) | public final CommandObject<KeyValue<byte[], List<Tuple>>> bzmpop(doubl...
    method bzmpop (line 2237) | public final CommandObject<KeyValue<byte[], List<Tuple>>> bzmpop(doubl...
    method getTupleListBuilder (line 2242) | private Builder<List<Tuple>> getTupleListBuilder() {
    method geoadd (line 2248) | public final CommandObject<Long> geoadd(String key, double longitude, ...
    method geoadd (line 2252) | public final CommandObject<Long> geoadd(String key, Map<String, GeoCoo...
    method geoadd (line 2256) | public final CommandObject<Long> geoadd(String key, GeoAddParams param...
    method geodist (line 2260) | public final CommandObject<Double> geodist(String key, String member1,...
    method geodist (line 2264) | public final CommandObject<Double> geodist(String key, String member1,...
    method geohash (line 2268) | public final CommandObject<List<String>> geohash(String key, String......
    method geopos (line 2272) | public final CommandObject<List<GeoCoordinate>> geopos(String key, Str...
    method geoadd (line 2277) | public final CommandObject<Long> geoadd(byte[] key, double longitude, ...
    method geoadd (line 2281) | public final CommandObject<Long> geoadd(byte[] key, Map<byte[], GeoCoo...
    method geoadd (line 2285) | public final CommandObject<Long> geoadd(byte[] key, GeoAddParams param...
    method geodist (line 2289) | public final CommandObject<Double> geodist(byte[] key, byte[] member1,...
    method geodist (line 2293) | public final CommandObject<Double> geodist(byte[] key, byte[] member1,...
    method geohash (line 2297) | public final CommandObject<List<byte[]>> geohash(byte[] key, byte[]......
    method geopos (line 2301) | public final CommandObject<List<GeoCoordinate>> geopos(byte[] key, byt...
    method georadius (line 2306) | public final CommandObject<List<GeoRadiusResponse>> georadius(String k...
    method georadius (line 2311) | public final CommandObject<List<GeoRadiusResponse>> georadius(String key,
    method georadiusReadonly (line 2317) | public final CommandObject<List<GeoRadiusResponse>> georadiusReadonly(...
    method georadiusReadonly (line 2322) | public final CommandObject<List<GeoRadiusResponse>> georadiusReadonly(...
    method georadiusStore (line 2328) | public final CommandObject<Long> georadiusStore(String key, double lon...
    method georadiusByMember (line 2334) | public final CommandObject<List<GeoRadiusResponse>> georadiusByMember(...
    method georadiusByMember (line 2339) | public final CommandObject<List<GeoRadiusResponse>> georadiusByMember(...
    method georadiusByMemberReadonly (line 2345) | public final CommandObject<List<GeoRadiusResponse>> georadiusByMemberR...
    method georadiusByMemberReadonly (line 2350) | public final CommandObject<List<GeoRadiusResponse>> georadiusByMemberR...
    method georadiusByMemberStore (line 2356) | public final CommandObject<Long> georadiusByMemberStore(String key, St...
    method georadius (line 2362) | public final CommandObject<List<GeoRadiusResponse>> georadius(byte[] k...
    method georadius (line 2367) | public final CommandObject<List<GeoRadiusResponse>> georadius(byte[] key,
    method georadiusReadonly (line 2373) | public final CommandObject<List<GeoRadiusResponse>> georadiusReadonly(...
    method georadiusReadonly (line 2379) | public final CommandObject<List<GeoRadiusResponse>> georadiusReadonly(...
    method georadiusStore (line 2385) | public final CommandObject<Long> georadiusStore(byte[] key, double lon...
    method georadiusByMember (line 2391) | public final CommandObject<List<GeoRadiusResponse>> georadiusByMember(...
    method georadiusByMember (line 2396) | public final CommandObject<List<GeoRadiusResponse>> georadiusByMember(...
    method georadiusByMemberReadonly (line 2401) | public final CommandObject<List<GeoRadiusResponse>> georadiusByMemberR...
    method georadiusByMemberReadonly (line 2406) | public final CommandObject<List<GeoRadiusResponse>> georadiusByMemberR...
    method georadiusByMemberStore (line 2411) | public final CommandObject<Long> georadiusByMemberStore(byte[] key, by...
    method geosearch (line 2417) | public final CommandObject<List<GeoRadiusResponse>> geosearch(String k...
    method geosearch (line 2423) | public final CommandObject<List<GeoRadiusResponse>> geosearch(String k...
    method geosearch (line 2430) | public final CommandObject<List<GeoRadiusResponse>> geosearch(String k...
    method geosearch (line 2436) | public final CommandObject<List<GeoRadiusResponse>> geosearch(String k...
    method geosearch (line 2443) | public final CommandObject<List<GeoRadiusResponse>> geosearch(String k...
    method geosearchStore (line 2448) | public final CommandObject<Long> geosearchStore(String dest, String sr...
    method geosearchStore (line 2454) | public final CommandObject<Long> geosearchStore(String dest, String sr...
    method geosearchStore (line 2460) | public final CommandObject<Long> geosearchStore(String dest, String sr...
    method geosearchStore (line 2466) | public final CommandObject<Long> geosearchStore(String dest, String sr...
    method geosearchStore (line 2473) | public final CommandObject<Long> geosearchStore(String dest, String sr...
    method geosearchStoreStoreDist (line 2477) | public final CommandObject<Long> geosearchStoreStoreDist(String dest, ...
    method geosearch (line 2481) | public final CommandObject<List<GeoRadiusResponse>> geosearch(byte[] k...
    method geosearch (line 2487) | public final CommandObject<List<GeoRadiusResponse>> geosearch(byte[] k...
    method geosearch (line 2494) | public final CommandObject<List<GeoRadiusResponse>> geosearch(byte[] k...
    method geosearch (line 2500) | public final CommandObject<List<GeoRadiusResponse>> geosearch(byte[] k...
    method geosearch (line 2507) | public final CommandObject<List<GeoRadiusResponse>> geosearch(byte[] k...
    method geosearchStore (line 2512) | public final CommandObject<Long> geosearchStore(byte[] dest, byte[] sr...
    method geosearchStore (line 2518) | public final CommandObject<Long> geosearchStore(byte[] dest, byte[] sr...
    method geosearchStore (line 2525) | public final CommandObject<Long> geosearchStore(byte[] dest, byte[] sr...
    method geosearchStore (line 2531) | public final CommandObject<Long> geosearchStore(byte[] dest, byte[] sr...
    method geosearchStore (line 2538) | public final CommandObject<Long> geosearchStore(byte[] dest, byte[] sr...
    method geosearchStoreStoreDist (line 2542) | public final CommandObject<Long> geosearchStoreStoreDist(byte[] dest, ...
    method pfadd (line 2548) | public final CommandObject<Long> pfadd(String key, String... elements) {
    method pfmerge (line 2552) | public final CommandObject<String> pfmerge(String destkey, String... s...
    method pfadd (line 2556) | public final CommandObject<Long> pfadd(byte[] key, byte[]... elements) {
    method pfmerge (line 2560) | public final CommandObject<String> pfmerge(byte[] destkey, byte[]... s...
    method pfcount (line 2564) | public final CommandObject<Long> pfcount(String key) {
    method pfcount (line 2568) | public final CommandObject<Long> pfcount(String... keys) {
    method pfcount (line 2572) | public final CommandObject<Long> pfcount(byte[] key) {
    method pfcount (line 2576) | public final CommandObject<Long> pfcount(byte[]... keys) {
    method xadd (line 2582) | public final CommandObject<StreamEntryID> xadd(String key, StreamEntry...
    method xadd (line 2587) | public final CommandObject<StreamEntryID> xadd(String key, XAddParams ...
    method xlen (line 2592) | public final CommandObject<Long> xlen(String key) {
    method xadd (line 2596) | public final CommandObject<byte[]> xadd(byte[] key, XAddParams params,...
    method xlen (line 2601) | public final CommandObject<Long> xlen(byte[] key) {
    method xrange (line 2605) | public final CommandObject<List<StreamEntry>> xrange(String key, Strea...
    method xrange (line 2610) | public final CommandObject<List<StreamEntry>> xrange(String key, Strea...
    method xrevrange (line 2615) | public final CommandObject<List<StreamEntry>> xrevrange(String key, St...
    method xrevrange (line 2620) | public final CommandObject<List<StreamEntry>> xrevrange(String key, St...
    method xrange (line 2625) | public final CommandObject<List<StreamEntry>> xrange(String key, Strin...
    method xrange (line 2629) | public final CommandObject<List<StreamEntry>> xrange(String key, Strin...
    method xrevrange (line 2633) | public final CommandObject<List<StreamEntry>> xrevrange(String key, St...
    method xrevrange (line 2637) | public final CommandObject<List<StreamEntry>> xrevrange(String key, St...
    method xrange (line 2641) | public final CommandObject<List<Object>> xrange(byte[] key, byte[] sta...
    method xrange (line 2646) | public final CommandObject<List<Object>> xrange(byte[] key, byte[] sta...
    method xrevrange (line 2651) | public final CommandObject<List<Object>> xrevrange(byte[] key, byte[] ...
    method xrevrange (line 2656) | public final CommandObject<List<Object>> xrevrange(byte[] key, byte[] ...
    method xack (line 2661) | public final CommandObject<Long> xack(String key, String group, Stream...
    method xackdel (line 2665) | public final CommandObject<List<StreamEntryDeletionResult>> xackdel(St...
    method xackdel (line 2669) | public final CommandObject<List<StreamEntryDeletionResult>> xackdel(St...
    method xack (line 2673) | public final CommandObject<Long> xack(byte[] key, byte[] group, byte[]...
    method xackdel (line 2677) | public final CommandObject<List<StreamEntryDeletionResult>> xackdel(by...
    method xackdel (line 2681) | public final CommandObject<List<StreamEntryDeletionResult>> xackdel(by...
    method xgroupCreate (line 2685) | public final CommandObject<String> xgroupCreate(String key, String gro...
    method xgroupSetID (line 2692) | public final CommandObject<String> xgroupSetID(String key, String grou...
    method xgroupDestroy (line 2697) | public final CommandObject<Long> xgroupDestroy(String key, String grou...
    method xgroupCreateConsumer (line 2702) | public final CommandObject<Boolean> xgroupCreateConsumer(String key, S...
    method xgroupDelConsumer (line 2707) | public final CommandObject<Long> xgroupDelConsumer(String key, String ...
    method xgroupCreate (line 2712) | public final CommandObject<String> xgroupCreate(byte[] key, byte[] gro...
    method xgroupSetID (line 2719) | public final CommandObject<String> xgroupSetID(byte[] key, byte[] grou...
    method xgroupDestroy (line 2724) | public final CommandObject<Long> xgroupDestroy(byte[] key, byte[] grou...
    method xgroupCreateConsumer (line 2729) | public final CommandObject<Boolean> xgroupCreateConsumer(byte[] key, b...
    method xgroupDelConsumer (line 2734) | public final CommandObject<Long> xgroupDelConsumer(byte[] key, byte[] ...
    method xdel (line 2738) | public final CommandObject<Long> xdel(String key, StreamEntryID... ids) {
    method xdelex (line 2742) | public final CommandObject<List<StreamEntryDeletionResult>> xdelex(Str...
    method xdelex (line 2746) | public final CommandObject<List<StreamEntryDeletionResult>> xdelex(Str...
    method xtrim (line 2750) | public final CommandObject<Long> xtrim(String key, long maxLen, boolea...
    method xtrim (line 2757) | public final CommandObject<Long> xtrim(String key, XTrimParams params) {
    method xdel (line 2761) | public final CommandObject<Long> xdel(byte[] key, byte[]... ids) {
    method xdelex (line 2765) | public final CommandObject<List<StreamEntryDeletionResult>> xdelex(byt...
    method xdelex (line 2769) | public final CommandObject<List<StreamEntryDeletionResult>> xdelex(byt...
    method xtrim (line 2773) | public final CommandObject<Long> xtrim(byte[] key, long maxLen, boolea...
    method xtrim (line 2780) | public final CommandObject<Long> xtrim(byte[] key, XTrimParams params) {
    method xpending (line 2784) | public final CommandObject<StreamPendingSummary> xpending(String key, ...
    method xpending (line 2789) | public final CommandObject<List<StreamPendingEntry>> xpending(String k...
    method xpending (line 2794) | public final CommandObject<Object> xpending(byte[] key, byte[] groupNa...
    method xpending (line 2799) | public final CommandObject<List<Object>> xpending(byte[] key, byte[] g...
    method xclaim (line 2804) | public final CommandObject<List<StreamEntry>> xclaim(String key, Strin...
    method xclaimJustId (line 2811) | public final CommandObject<List<StreamEntryID>> xclaimJustId(String ke...
    method xautoclaim (line 2818) | public final CommandObject<Map.Entry<StreamEntryID, List<StreamEntry>>...
    method xautoclaimJustId (line 2826) | public final CommandObject<Map.Entry<StreamEntryID, List<StreamEntryID...
    method xclaim (line 2834) | public final CommandObject<List<byte[]>> xclaim(byte[] key, byte[] group,
    method xclaimJustId (line 2841) | public final CommandObject<List<byte[]>> xclaimJustId(byte[] key, byte...
    method xautoclaim (line 2848) | public final CommandObject<List<Object>> xautoclaim(byte[] key, byte[]...
    method xautoclaimJustId (line 2855) | public final CommandObject<List<Object>> xautoclaimJustId(byte[] key, ...
    method xinfoStream (line 2862) | public final CommandObject<StreamInfo> xinfoStream(String key) {
    method xinfoStream (line 2866) | public final CommandObject<Object> xinfoStream(byte[] key) {
    method xinfoStreamFull (line 2870) | public final CommandObject<StreamFullInfo> xinfoStreamFull(String key) {
    method xinfoStreamFull (line 2874) | public final CommandObject<StreamFullInfo> xinfoStreamFull(String key,...
    method xinfoStreamFull (line 2878) | public final CommandObject<Object> xinfoStreamFull(byte[] key, int cou...
    method xinfoStreamFull (line 2882) | public final CommandObject<Object> xinfoStreamFull(byte[] key) {
    method xinfoGroups (line 2886) | public final CommandObject<List<StreamGroupInfo>> xinfoGroups(String k...
    method xinfoGroups (line 2890) | public final CommandObject<List<Object>> xinfoGroups(byte[] key) {
    method xinfoConsumers (line 2897) | @Deprecated
    method xinfoConsumers2 (line 2902) | public final CommandObject<List<StreamConsumerInfo>> xinfoConsumers2(S...
    method xinfoConsumers (line 2906) | public final CommandObject<List<Object>> xinfoConsumers(byte[] key, by...
    method xread (line 2910) | public final CommandObject<List<Map.Entry<String, List<StreamEntry>>>>...
    method xreadAsMap (line 2919) | public final CommandObject<Map<String, List<StreamEntry>>> xreadAsMap(
    method xreadGroup (line 2928) | public final CommandObject<List<Map.Entry<String, List<StreamEntry>>>>...
    method xreadGroupAsMap (line 2940) | public final CommandObject<Map<String, List<StreamEntry>>> xreadGroupA...
    method xread (line 2956) | @Deprecated
    method xreadBinary (line 2968) | public final CommandObject<List<Map.Entry<byte[], List<StreamEntryBina...
    method xreadBinaryAsMap (line 2980) | public final CommandObject<Map<byte[], List<StreamEntryBinary>>> xread...
    method xreadGroup (line 2996) | @Deprecated
    method xreadGroupBinary (line 3011) | public final CommandObject<List<Map.Entry<byte[], List<StreamEntryBina...
    method xreadGroupBinaryAsMap (line 3026) | public final CommandObject<Map<byte[], List<StreamEntryBinary>>> xread...
    method xreadBinary (line 3041) | public final CommandObject<List<Map.Entry<byte[], List<StreamEntryBina...
    method xreadBinaryAsMap (line 3050) | public final CommandObject<Map<byte[], List<StreamEntryBinary>>> xread...
    method xreadGroupBinary (line 3059) | public final CommandObject<List<Map.Entry<byte[], List<StreamEntryBina...
    method xreadGroupBinaryAsMap (line 3071) | public final CommandObject<Map<byte[], List<StreamEntryBinary>>> xread...
    method xcfgset (line 3083) | public final CommandObject<String> xcfgset(String key, XCfgSetParams p...
    method xcfgset (line 3087) | public final CommandObject<byte[]> xcfgset(byte[] key, XCfgSetParams p...
    method eval (line 3093) | public final CommandObject<Object> eval(String script) {
    method eval (line 3097) | public final CommandObject<Object> eval(String script, String sampleKe...
    method eval (line 3101) | public final CommandObject<Object> eval(String script, int keyCount, S...
    method eval (line 3107) | public final CommandObject<Object> eval(String script, List<String> ke...
    method evalReadonly (line 3112) | public final CommandObject<Object> evalReadonly(String script, List<St...
    method eval (line 3117) | public final CommandObject<Object> eval(byte[] script) {
    method eval (line 3121) | public final CommandObject<Object> eval(byte[] script, byte[] sampleKe...
    method eval (line 3125) | public final CommandObject<Object> eval(byte[] script, int keyCount, b...
    method eval (line 3131) | public final CommandObject<Object> eval(byte[] script, List<byte[]> ke...
    method evalReadonly (line 3136) | public final CommandObject<Object> evalReadonly(byte[] script, List<by...
    method evalsha (line 3141) | public final CommandObject<Object> evalsha(String sha1) {
    method evalsha (line 3145) | public final CommandObject<Object> evalsha(String sha1, String sampleK...
    method evalsha (line 3149) | public final CommandObject<Object> evalsha(String sha1, int keyCount, ...
    method evalsha (line 3155) | public final CommandObject<Object> evalsha(String sha1, List<String> k...
    method evalshaReadonly (line 3160) | public final CommandObject<Object> evalshaReadonly(String sha1, List<S...
    method evalsha (line 3165) | public final CommandObject<Object> evalsha(byte[] sha1) {
    method evalsha (line 3169) | public final CommandObject<Object> evalsha(byte[] sha1, byte[] sampleK...
    method evalsha (line 3173) | public final CommandObject<Object> evalsha(byte[] sha1, int keyCount, ...
    method evalsha (line 3179) | public final CommandObject<Object> evalsha(byte[] sha1, List<byte[]> k...
    method evalshaReadonly (line 3184) | public final CommandObject<Object> evalshaReadonly(byte[] sha1, List<b...
    method scriptExists (line 3189) | public final CommandObject<List<Boolean>> scriptExists(List<String> sh...
    method scriptExists (line 3193) | public final CommandObject<List<Boolean>> scriptExists(String sampleKe...
    method scriptLoad (line 3198) | public final CommandObject<String> scriptLoad(String script) {
    method scriptLoad (line 3202) | public final CommandObject<String> scriptLoad(String script, String sa...
    method scriptFlush (line 3208) | public final CommandObject<String> scriptFlush() {
    method scriptFlush (line 3212) | public final CommandObject<String> scriptFlush(String sampleKey) {
    method scriptFlush (line 3216) | public final CommandObject<String> scriptFlush(String sampleKey, Flush...
    method scriptKill (line 3222) | public final CommandObject<String> scriptKill() {
    method scriptKill (line 3226) | public final CommandObject<String> scriptKill(String sampleKey) {
    method scriptExists (line 3230) | public final CommandObject<List<Boolean>> scriptExists(byte[] sampleKe...
    method scriptLoad (line 3235) | public final CommandObject<byte[]> scriptLoad(byte[] script, byte[] sa...
    method scriptFlush (line 3239) | public final CommandObject<String> scriptFlush(byte[] sampleKey) {
    method scriptFlush (line 3243) | public final CommandObject<String> scriptFlush(byte[] sampleKey, Flush...
    method scriptKill (line 3247) | public final CommandObject<String> scriptKill(byte[] sampleKey) {
    method slowlogReset (line 3254) | public final CommandObject<String> slowlogReset() {
    method hotkeysStart (line 3259) | public CommandObject<String> hotkeysStart(HotkeysParams params) {
    method hotkeysStop (line 3264) | public CommandObject<String> hotkeysStop() {
    method hotkeysReset (line 3268) | public CommandObject<String> hotkeysReset() {
    method hotkeysGet (line 3272) | public CommandObject<HotkeysInfo> hotkeysGet() {
    method fcall (line 3278) | public final CommandObject<Object> fcall(String name, List<String> key...
    method fcallReadonly (line 3283) | public final CommandObject<Object> fcallReadonly(String name, List<Str...
    method functionDelete (line 3288) | public final CommandObject<String> functionDelete(String libraryName) {
    method functionList (line 3292) | public final CommandObject<List<LibraryInfo>> functionList() {
    method functionList (line 3296) | public final CommandObject<List<LibraryInfo>> functionList(String libr...
    method functionListWithCode (line 3301) | public final CommandObject<List<LibraryInfo>> functionListWithCode() {
    method functionListWithCode (line 3305) | public final CommandObject<List<LibraryInfo>> functionListWithCode(Str...
    method functionLoad (line 3310) | public final CommandObject<String> functionLoad(String functionCode) {
    method functionLoadReplace (line 3314) | public final CommandObject<String> functionLoadReplace(String function...
    method functionStats (line 3318) | public final CommandObject<FunctionStats> functionStats() {
    method functionStatsBinary (line 3322) | public final CommandObject<Object> functionStatsBinary() {
    method functionFlush (line 3326) | public final CommandObject<String> functionFlush() {
    method functionFlush (line 3330) | public final CommandObject<String> functionFlush(FlushMode mode) {
    method functionKill (line 3334) | public final CommandObject<String> functionKill() {
    method fcall (line 3338) | public final CommandObject<Object> fcall(byte[] name, List<byte[]> key...
    method fcallReadonly (line 3343) | public final CommandObject<Object> fcallReadonly(byte[] name, List<byt...
    method functionDelete (line 3348) | public final CommandObject<String> functionDelete(byte[] libraryName) {
    method functionDump (line 3352) | public final CommandObject<byte[]> functionDump() {
    method functionListBinary (line 3356) | public final CommandObject<List<Object>> functionListBinary() {
    method functionList (line 3360) | public final CommandObject<List<Object>> functionList(byte[] libraryNa...
    method functionListWithCodeBinary (line 3365) | public final CommandObject<List<Object>> functionListWithCodeBinary() {
    method functionListWithCode (line 3369) | public final CommandObject<List<Object>> functionListWithCode(byte[] l...
    method functionLoad (line 3374) | public final CommandObject<String> functionLoad(byte[] functionCode) {
    method functionLoadReplace (line 3378) | public final CommandObject<String> functionLoadReplace(byte[] function...
    method functionRestore (line 3382) | public final CommandObject<String> functionRestore(byte[] serializedVa...
    method functionRestore (line 3387) | public final CommandObject<String> functionRestore(byte[] serializedVa...
    method copy (line 3394) | public final CommandObject<Boolean> copy(String srcKey, String dstKey,...
    method copy (line 3400) | public final CommandObject<Boolean> copy(byte[] srcKey, byte[] dstKey,...
    method migrate (line 3406) | public final CommandObject<String> migrate(String host, int port, Stri...
    method migrate (line 3410) | public final CommandObject<String> migrate(String host, int port, Stri...
    method migrate (line 3415) | public final CommandObject<String> migrate(String host, int port, int ...
    method migrate (line 3419) | public final CommandObject<String> migrate(String host, int port, int ...
    method migrate (line 3426) | public final CommandObject<String> migrate(String host, int port, byte...
    method migrate (line 3430) | public final CommandObject<String> migrate(String host, int port, byte...
    method migrate (line 3435) | public final CommandObject<String> migrate(String host, int port, int ...
    method migrate (line 3439) | public final CommandObject<String> migrate(String host, int port, int ...
    method memoryUsage (line 3446) | public final CommandObject<Long> memoryUsage(String key) {
    method memoryUsage (line 3450) | public final CommandObject<Long> memoryUsage(String key, int samples) {
    method memoryUsage (line 3454) | public final CommandObject<Long> memoryUsage(byte[] key) {
    method memoryUsage (line 3458) | public final CommandObject<Long> memoryUsage(byte[] key, int samples) {
    method objectRefcount (line 3462) | public final CommandObject<Long> objectRefcount(String key) {
    method objectEncoding (line 3466) | public final CommandObject<String> objectEncoding(String key) {
    method objectIdletime (line 3470) | public final CommandObject<Long> objectIdletime(String key) {
    method objectFreq (line 3474) | public final CommandObject<Long> objectFreq(String key) {
    method objectRefcount (line 3478) | public final CommandObject<Long> objectRefcount(byte[] key) {
    method objectEncoding (line 3482) | public final CommandObject<byte[]> objectEncoding(byte[] key) {
    method objectIdletime (line 3486) | public final CommandObject<Long> objectIdletime(byte[] key) {
    method objectFreq (line 3490) | public final CommandObject<Long> objectFreq(byte[] key) {
    method waitReplicas (line 3494) | public CommandObject<Long> waitReplicas(int replicas, long timeout) {
    method waitReplicas (line 3498) | public final CommandObject<Long> waitReplicas(String sampleKey, int re...
    method waitReplicas (line 3502) | public final CommandObject<Long> waitReplicas(byte[] sampleKey, int re...
    method waitAOF (line 3506) | public CommandObject<KeyValue<Long, Long>> waitAOF(long numLocal, long...
    method waitAOF (line 3510) | public CommandObject<KeyValue<Long, Long>> waitAOF(byte[] sampleKey, l...
    method waitAOF (line 3514) | public CommandObject<KeyValue<Long, Long>> waitAOF(String sampleKey, l...
    method publish (line 3518) | public final CommandObject<Long> publish(String channel, String messag...
    method publish (line 3522) | public final CommandObject<Long> publish(byte[] channel, byte[] messag...
    method spublish (line 3526) | public final CommandObject<Long> spublish(String channel, String messa...
    method spublish (line 3530) | public final CommandObject<Long> spublish(byte[] channel, byte[] messa...
    method hsetObject (line 3536) | public final CommandObject<Long> hsetObject(String key, String field, ...
    method hsetObject (line 3540) | public final CommandObject<Long> hsetObject(String key, Map<String, Ob...
    method isRoundRobinSearchCommand (line 3544) | private boolean isRoundRobinSearchCommand(SearchCommand sc) {
    method checkAndRoundRobinSearchCommand (line 3551) | private CommandArguments checkAndRoundRobinSearchCommand(SearchCommand...
    method checkAndRoundRobinSearchCommand (line 3561) | private CommandArguments checkAndRoundRobinSearchCommand(SearchCommand...
    method checkAndRoundRobinSearchCommand (line 3572) | private CommandArguments checkAndRoundRobinSearchCommand(SearchCommand...
    method directSearchCommand (line 3582) | private <T> CommandObject<T> directSearchCommand(CommandObject<T> obje...
    method ftCreate (line 3587) | public final CommandObject<String> ftCreate(String indexName, IndexOpt...
    method ftCreate (line 3594) | public final CommandObject<String> ftCreate(String indexName, FTCreate...
    method ftAlter (line 3602) | public final CommandObject<String> ftAlter(String indexName, Schema sc...
    method ftAlter (line 3609) | public final CommandObject<String> ftAlter(String indexName, Iterable<...
    method ftAliasAdd (line 3616) | public final CommandObject<String> ftAliasAdd(String aliasName, String...
    method ftAliasUpdate (line 3620) | public final CommandObject<String> ftAliasUpdate(String aliasName, Str...
    method ftAliasDel (line 3624) | public final CommandObject<String> ftAliasDel(String aliasName) {
    method ftDropIndex (line 3628) | public final CommandObject<String> ftDropIndex(String indexName) {
    method ftDropIndexDD (line 3632) | public final CommandObject<String> ftDropIndexDD(String indexName) {
    method ftSearch (line 3637) | public final CommandObject<SearchResult> ftSearch(String indexName, St...
    method ftSearch (line 3642) | public final CommandObject<SearchResult> ftSearch(String indexName, St...
    method ftSearch (line 3649) | public final CommandObject<SearchResult> ftSearch(String indexName, Qu...
    method ftSearch (line 3655) | @Deprecated
    method ftExplain (line 3665) | public final CommandObject<String> ftExplain(String indexName, Query q...
    method ftExplainCLI (line 3670) | public final CommandObject<List<String>> ftExplainCLI(String indexName...
    method ftAggregate (line 3675) | public final CommandObject<AggregationResult> ftAggregate(String index...
    method ftCursorRead (line 3681) | public final CommandObject<AggregationResult> ftCursorRead(String inde...
    method ftCursorDel (line 3687) | public final CommandObject<String> ftCursorDel(String indexName, long ...
    method ftProfileAggregate (line 3692) | public final CommandObject<Map.Entry<AggregationResult, ProfilingInfo>...
    method ftProfileSearch (line 3701) | public final CommandObject<Map.Entry<SearchResult, ProfilingInfo>> ftP...
    method ftProfileSearch (line 3710) | public final CommandObject<Map.Entry<SearchResult, ProfilingInfo>> ftP...
    method getSearchResultBuilder (line 3720) | private Builder<SearchResult> getSearchResultBuilder(
    method ftSynUpdate (line 3729) | public final CommandObject<String> ftSynUpdate(String indexName, Strin...
    method ftSynDump (line 3734) | public final CommandObject<Map<String, List<String>>> ftSynDump(String...
    method ftDictAdd (line 3739) | public final CommandObject<Long> ftDictAdd(String dictionary, String.....
    method ftDictDel (line 3744) | public final CommandObject<Long> ftDictDel(String dictionary, String.....
    method ftDictDump (line 3749) | public final CommandObject<Set<String>> ftDictDump(String dictionary) {
    method ftDictAddBySampleKey (line 3753) | public final CommandObject<Long> ftDictAddBySampleKey(String indexName...
    method ftDictDelBySampleKey (line 3757) | public final CommandObject<Long> ftDictDelBySampleKey(String indexName...
    method ftDictDumpBySampleKey (line 3761) | public final CommandObject<Set<String>> ftDictDumpBySampleKey(String i...
    method ftSpellCheck (line 3765) | public final CommandObject<Map<String, Map<String, Double>>> ftSpellCh...
    method ftSpellCheck (line 3770) | public final CommandObject<Map<String, Map<String, Double>>> ftSpellCh...
    method ftInfo (line 3776) | public final CommandObject<Map<String, Object>> ftInfo(String indexNam...
    method ftTagVals (line 3781) | public final CommandObject<Set<String>> ftTagVals(String indexName, St...
    method ftHybrid (line 3786) | @Experimental
    method ftConfigGet (line 3792) | @Deprecated
    method ftConfigGet (line 3798) | @Deprecated
    method ftConfigSet (line 3803) | @Deprecated
    method ftConfigSet (line 3808) | @Deprecated
    method ftSugAdd (line 3813) | public final CommandObject<Long> ftSugAdd(String key, String string, d...
    method ftSugAddIncr (line 3817) | public final CommandObject<Long> ftSugAddIncr(String key, String strin...
    method ftSugGet (line 3821) | public final CommandObject<List<String>> ftSugGet(String key, String p...
    method ftSugGet (line 3825) | public final CommandObject<List<String>> ftSugGet(String key, String p...
    method ftSugGetWithScores (line 3832) | public final CommandObject<List<Tuple>> ftSugGetWithScores(String key,...
    method ftSugGetWithScores (line 3837) | public final CommandObject<List<Tuple>> ftSugGetWithScores(String key,...
    method ftSugDel (line 3845) | public final CommandObject<Boolean> ftSugDel(String key, String string) {
    method ftSugLen (line 3849) | public final CommandObject<Long> ftSugLen(String key) {
    method ftList (line 3853) | public final CommandObject<Set<String>> ftList() {
    method jsonSet (line 3859) | public final CommandObject<String> jsonSet(String key, Path2 path, Obj...
    method jsonSetWithEscape (line 3863) | public final CommandObject<String> jsonSetWithEscape(String key, Path2...
    method jsonSet (line 3868) | @Deprecated
    method jsonSetWithPlainString (line 3874) | @Deprecated
    method jsonSet (line 3879) | public final CommandObject<String> jsonSet(String key, Path2 path, Obj...
    method jsonSetWithEscape (line 3883) | public final CommandObject<String> jsonSetWithEscape(String key, Path2...
    method jsonSet (line 3888) | @Deprecated
    method jsonMerge (line 3894) | public final CommandObject<String> jsonMerge(String key, Path2 path, O...
    method jsonMerge (line 3898) | @Deprecated
    method jsonGet (line 3904) | public final CommandObject<Object> jsonGet(String key) {
    method jsonGet (line 3908) | @Deprecated
    method jsonGet (line 3913) | public final CommandObject<Object> jsonGet(String key, Path2... paths) {
    method jsonGet (line 3917) | @Deprecated
    method jsonGetAsPlainString (line 3922) | @Deprecated
    method jsonGet (line 3927) | @Deprecated
    method jsonMGet (line 3932) | public final CommandObject<List<JSONArray>> jsonMGet(Path2 path, Strin...
    method jsonMGet (line 3936) | @Deprecated
    method jsonDel (line 3941) | public final CommandObject<Long> jsonDel(String key) {
    method jsonDel (line 3945) | public final CommandObject<Long> jsonDel(String key, Path2 path) {
    method jsonDel (line 3949) | @Deprecated
    method jsonClear (line 3954) | public final CommandObject<Long> jsonClear(String key) {
    method jsonClear (line 3958) | public final CommandObject<Long> jsonClear(String key, Path2 path) {
    method jsonClear (line 3962) | @Deprecated
    method jsonToggle (line 3967) | public final CommandObject<List<Boolean>> jsonToggle(String key, Path2...
    method jsonToggle (line 3971) | @Deprecated
    method jsonType (line 3976) | @Deprecated
    method jsonType (line 3981) | public final CommandObject<List<Class<?>>> jsonType(String key, Path2 ...
    method jsonType (line 3986) | @Deprecated
    method jsonStrAppend (line 3991) | @Deprecated
    method jsonStrAppend (line 3997) | public final CommandObject<List<Long>> jsonStrAppend(String key, Path2...
    method jsonStrAppend (line 4002) | @Deprecated
    method jsonStrLen (line 4008) | @Deprecated
    method jsonStrLen (line 4013) | public final CommandObject<List<Long>> jsonStrLen(String key, Path2 pa...
    method jsonStrLen (line 4017) | @Deprecated
    method jsonNumIncrBy (line 4022) | public final CommandObject<Object> jsonNumIncrBy(String key, Path2 pat...
    method jsonNumIncrBy (line 4027) | @Deprecated
    method jsonArrAppend (line 4032) | @Deprecated
    method jsonArrAppend (line 4041) | public final CommandObject<List<Long>> jsonArrAppend(String key, Path2...
    method jsonArrAppendWithEscape (line 4046) | public final CommandObject<List<Long>> jsonArrAppendWithEscape(String ...
    method jsonArrAppend (line 4054) | @Deprecated
    method jsonArrIndex (line 4063) | public final CommandObject<List<Long>> jsonArrIndex(String key, Path2 ...
    method jsonArrIndexWithEscape (line 4067) | public final CommandObject<List<Long>> jsonArrIndexWithEscape(String k...
    method jsonArrIndex (line 4072) | @Deprecated
    method jsonArrInsert (line 4078) | public final CommandObject<List<Long>> jsonArrInsert(String key, Path2...
    method jsonArrInsertWithEscape (line 4083) | public final CommandObject<List<Long>> jsonArrInsertWithEscape(String ...
    method jsonArrInsert (line 4091) | @Deprecated
    method jsonArrPop (line 4100) | @Deprecated
    method jsonArrPop (line 4105) | @Deprecated
    method jsonArrPop (line 4110) | public final CommandObject<List<Object>> jsonArrPop(String key, Path2 ...
    method jsonArrPop (line 4114) | @Deprecated
    method jsonArrPop (line 4119) | @Deprecated
    method jsonArrPop (line 4124) | public final CommandObject<List<Object>> jsonArrPop(String key, Path2 ...
    method jsonArrPop (line 4128) | @Deprecated
    method jsonArrPop (line 4133) | @Deprecated
    method jsonArrLen (line 4138) | @Deprecated
    method jsonArrLen (line 4143) | public final CommandObject<List<Long>> jsonArrLen(String key, Path2 pa...
    method jsonArrLen (line 4147) | @Deprecated
    method jsonArrTrim (line 4152) | public final CommandObject<List<Long>> jsonArrTrim(String key, Path2 p...
    method jsonArrTrim (line 4156) | @Deprecated
    method jsonObjLen (line 4161) | @Deprecated
    method jsonObjLen (line 4166) | @Deprecated
    method jsonObjLen (line 4171) | public final CommandObject<List<Long>> jsonObjLen(String key, Path2 pa...
    method jsonObjKeys (line 4175) | @Deprecated
    method jsonObjKeys (line 4180) | @Deprecated
    method jsonObjKeys (line 4185) | public final CommandObject<List<List<String>>> jsonObjKeys(String key,...
    method jsonDebugMemory (line 4189) | @Deprecated
    method jsonDebugMemory (line 4194) | @Deprecated
    method jsonDebugMemory (line 4199) | public final CommandObject<List<Long>> jsonDebugMemory(String key, Pat...
    method tsCreate (line 4205) | public final CommandObject<String> tsCreate(String key) {
    method tsCreate (line 4209) | public final CommandObject<String> tsCreate(String key, TSCreateParams...
    method tsDel (line 4213) | public final CommandObject<Long> tsDel(String key, long fromTimestamp,...
    method tsAlter (line 4218) | public final CommandObject<String> tsAlter(String key, TSAlterParams a...
    method tsAdd (line 4222) | public final CommandObject<Long> tsAdd(String key, double value) {
    method tsAdd (line 4226) | public final CommandObject<Long> tsAdd(String key, long timestamp, dou...
    method tsAdd (line 4230) | @Deprecated
    method tsAdd (line 4236) | public final CommandObject<Long> tsAdd(String key, long timestamp, dou...
    method tsMAdd (line 4241) | public final CommandObject<List<Long>> tsMAdd(Map.Entry<String, TSElem...
    method tsIncrBy (line 4249) | public final CommandObject<Long> tsIncrBy(String key, double value) {
    method tsIncrBy (line 4253) | public final CommandObject<Long> tsIncrBy(String key, double value, lo...
    method tsIncrBy (line 4258) | public final CommandObject<Long> tsIncrBy(String key, double addend, T...
    method tsDecrBy (line 4263) | public final CommandObject<Long> tsDecrBy(String key, double value) {
    method tsDecrBy (line 4267) | public final CommandObject<Long> tsDecrBy(String key, double value, lo...
    method tsDecrBy (line 4272) | public final CommandObject<Long> tsDecrBy(String key, double subtrahen...
    method tsRange (line 4277) | public final CommandObject<List<TSElement>> tsRange(String key, long f...
    method tsRange (line 4282) | public final CommandObject<List<TSElement>> tsRange(String key, TSRang...
    method tsRevRange (line 4287) | public final CommandObject<List<TSElement>> tsRevRange(String key, lon...
    method tsRevRange (line 4292) | public final CommandObject<List<TSElement>> tsRevRange(String key, TSR...
    method tsMRange (line 4297) | public final CommandObject<Map<String, TSMRangeElements>> tsMRange(lon...
    method tsMRange (line 4303) | public final CommandObject<Map<String, TSMRangeElements>> tsMRange(TSM...
    method tsMRevRange (line 4308) | public final CommandObject<Map<String, TSMRangeElements>> tsMRevRange(...
    method tsMRevRange (line 4314) | public final CommandObject<Map<String, TSMRangeElements>> tsMRevRange(...
    method tsGet (line 4319) | public final CommandObject<TSElement> tsGet(String key) {
    method tsGet (line 4323) | public final CommandObject<TSElement> tsGet(String key, TSGetParams ge...
    method tsMGet (line 4327) | public final CommandObject<Map<String, TSMGetElement>> tsMGet(TSMGetPa...
    method tsCreateRule (line 4334) | public final CommandObject<String> tsCreateRule(String sourceKey, Stri...
    method tsCreateRule (line 4340) | public final CommandObject<String> tsCreateRule(String sourceKey, Stri...
    method tsDeleteRule (line 4346) | public final CommandObject<String> tsDeleteRule(String sourceKey, Stri...
    method tsQueryIndex (line 4350) | public final CommandObject<List<String>> tsQueryIndex(String... filter...
    method tsInfo (line 4355) | public final CommandObject<TSInfo> tsInfo(String key) {
    method tsInfoDebug (line 4359) | public final CommandObject<TSInfo> tsInfoDebug(String key) {
    method getTimeseriesMultiRangeResponseBuilder (line 4364) | private Builder<Map<String, TSMRangeElements>> getTimeseriesMultiRange...
    method getTimeseriesInfoBuilder (line 4369) | private Builder<TSInfo> getTimeseriesInfoBuilder() {
    method bfReserve (line 4375) | public final CommandObject<String> bfReserve(String key, double errorR...
    method bfReserve (line 4380) | public final CommandObject<String> bfReserve(String key, double errorR...
    method bfAdd (line 4385) | public final CommandObject<Boolean> bfAdd(String key, String item) {
    method bfMAdd (line 4389) | public final CommandObject<List<Boolean>> bfMAdd(String key, String......
    method bfInsert (line 4394) | public final CommandObject<List<Boolean>> bfInsert(String key, String....
    method bfInsert (line 4399) | public final CommandObject<List<Boolean>> bfInsert(String key, BFInser...
    method bfExists (line 4404) | public final CommandObject<Boolean> bfExists(String key, String item) {
    method bfMExists (line 4408) | public final CommandObject<List<Boolean>> bfMExists(String key, String...
    method bfScanDump (line 4413) | public final CommandObject<Map.Entry<Long, byte[]>> bfScanDump(String ...
    method bfLoadChunk (line 4417) | public final CommandObject<String> bfLoadChunk(String key, long iterat...
    method bfCard (line 4421) | public final CommandObject<Long> bfCard(String key) {
    method bfInfo (line 4425) | public final CommandObject<Map<String, Object>> bfInfo(String key) {
    method cfReserve (line 4429) | public final CommandObject<String> cfReserve(String key, long capacity) {
    method cfReserve (line 4433) | public final CommandObject<String> cfReserve(String key, long capacity...
    method cfAdd (line 4437) | public final CommandObject<Boolean> cfAdd(String key, String item) {
    method cfAddNx (line 4441) | public final CommandObject<Boolean> cfAddNx(String key, String item) {
    method cfInsert (line 4445) | public final CommandObject<List<Boolean>> cfInsert(String key, String....
    method cfInsert (line 4450) | public final CommandObject<List<Boolean>> cfInsert(String key, CFInser...
    method cfInsertNx (line 4455) | public final CommandObject<List<Boolean>> cfInsertNx(String key, Strin...
    method cfInsertNx (line 4460) | public final CommandObject<List<Boolean>> cfInsertNx(String key, CFIns...
    method cfExists (line 4465) | public final CommandObject<Boolean> cfExists(String key, String item) {
    method cfMExists (line 4469) | public final CommandObject<List<Boolean>> cfMExists(String key, String...
    method cfDel (line 4474) | public final CommandObject<Boolean> cfDel(String key, String item) {
    method cfCount (line 4478) | public final CommandObject<Long> cfCount(String key, String item) {
    method cfScanDump (line 4482) | public final CommandObject<Map.Entry<Long, byte[]>> cfScanDump(String ...
    method cfLoadChunk (line 4486) | public final CommandObject<String> cfLoadChunk(String key, long iterat...
    method cfInfo (line 4490) | public final CommandObject<Map<String, Object>> cfInfo(String key) {
    method cmsInitByDim (line 4494) | public final CommandObject<String> cmsInitByDim(String key, long width...
    method cmsInitByProb (line 4499) | public final CommandObject<String> cmsInitByProb(String key, double er...
    method cmsIncrBy (line 4504) | public final CommandObject<List<Long>> cmsIncrBy(String key, Map<Strin...
    method cmsQuery (line 4510) | public final CommandObject<List<Long>> cmsQuery(String key, String... ...
    method cmsMerge (line 4515) | public final CommandObject<String> cmsMerge(String destKey, String... ...
    method cmsMerge (line 4520) | public final CommandObject<String> cmsMerge(String destKey, Map<String...
    method cmsInfo (line 4529) | public final CommandObject<Map<String, Object>> cmsInfo(String key) {
    method topkReserve (line 4533) | public final CommandObject<String> topkReserve(String key, long topk) {
    method topkReserve (line 4537) | public final CommandObject<String> topkReserve(String key, long topk, ...
    method topkAdd (line 4542) | public final CommandObject<List<String>> topkAdd(String key, String......
    method topkIncrBy (line 4546) | public final CommandObject<List<String>> topkIncrBy(String key, Map<St...
    method topkQuery (line 4552) | public final CommandObject<List<Boolean>> topkQuery(String key, String...
    method topkList (line 4556) | public final CommandObject<List<String>> topkList(String key) {
    method topkListWithCount (line 4560) | public final CommandObject<Map<String, Long>> topkListWithCount(String...
    method topkInfo (line 4565) | public final CommandObject<Map<String, Object>> topkInfo(String key) {
    method tdigestCreate (line 4569) | public final CommandObject<String> tdigestCreate(String key) {
    method tdigestCreate (line 4573) | public final CommandObject<String> tdigestCreate(String key, int compr...
    method tdigestReset (line 4578) | public final CommandObject<String> tdigestReset(String key) {
    method tdigestMerge (line 4582) | public final CommandObject<String> tdigestMerge(String destinationKey,...
    method tdigestMerge (line 4587) | public final CommandObject<String> tdigestMerge(TDigestMergeParams mer...
    method tdigestInfo (line 4593) | public final CommandObject<Map<String, Object>> tdigestInfo(String key) {
    method tdigestAdd (line 4597) | public final CommandObject<String> tdigestAdd(String key, double... va...
    method tdigestCDF (line 4602) | public final CommandObject<List<Double>> tdigestCDF(String key, double...
    method tdigestQuantile (line 4607) | public final CommandObject<List<Double>> tdigestQuantile(String key, d...
    method tdigestMin (line 4612) | public final CommandObject<Double> tdigestMin(String key) {
    method tdigestMax (line 4616) | public final CommandObject<Double> tdigestMax(String key) {
    method tdigestTrimmedMean (line 4620) | public final CommandObject<Double> tdigestTrimmedMean(String key, doub...
    method tdigestRank (line 4625) | public final CommandObject<List<Long>> tdigestRank(String key, double....
    method tdigestRevRank (line 4630) | public final CommandObject<List<Long>> tdigestRevRank(String key, doub...
    method tdigestByRank (line 4635) | public final CommandObject<List<Double>> tdigestByRank(String key, lon...
    method tdigestByRevRank (line 4640) | public final CommandObject<List<Double>> tdigestByRevRank(String key, ...
    method watch (line 4647) | public final CommandObject<String> watch(String... keys) {
    method watch (line 4651) | public final CommandObject<String> watch(byte[]... keys) {
    method getJsonObjectMapper (line 4667) | private JsonObjectMapper getJsonObjectMapper() {
    method setJsonObjectMapper (line 4684) | public void setJsonObjectMapper(JsonObjectMapper jsonObjectMapper) {
    method setDefaultSearchDialect (line 4688) | public void setDefaultSearchDialect(int dialect) {
    class SearchProfileResponseBuilder (line 4693) | private class SearchProfileResponseBuilder<T> extends Builder<Map.Entr...
      method SearchProfileResponseBuilder (line 4702) | public SearchProfileResponseBuilder(Builder<T> resultsBuilder) {
      method build (line 4706) | @Override
    class JsonObjectBuilder (line 4741) | private class JsonObjectBuilder<T> extends Builder<T> {
      method JsonObjectBuilder (line 4745) | public JsonObjectBuilder(Class<T> clazz) {
      method build (line 4749) | @Override
    class JsonObjectListBuilder (line 4760) | private class JsonObjectListBuilder<T> extends Builder<List<T>> {
      method JsonObjectListBuilder (line 4764) | public JsonObjectListBuilder(Class<T> clazz) {
      method build (line 4768) | @Override
    method build (line 4779) | @Override
    method addFlatArgs (line 4786) | private CommandArguments addFlatArgs(CommandArguments args, long... va...
    method addFlatArgs (line 4793) | private CommandArguments addFlatArgs(CommandArguments args, double... ...
    method addFlatKeyValueArgs (line 4800) | private CommandArguments addFlatKeyValueArgs(CommandArguments args, St...
    method addFlatKeyValueArgs (line 4807) | private CommandArguments addFlatKeyValueArgs(CommandArguments args, by...
    method addFlatMapArgs (line 4814) | private CommandArguments addFlatMapArgs(CommandArguments args, Map<?, ...
    method addSortedSetFlatMapArgs (line 4822) | private CommandArguments addSortedSetFlatMapArgs(CommandArguments args...
    method addGeoCoordinateFlatMapArgs (line 4830) | private CommandArguments addGeoCoordinateFlatMapArgs(CommandArguments ...
    method vadd (line 4841) | public final CommandObject<Boolean> vadd(String key, float[] vector, S...
    method vadd (line 4846) | public final CommandObject<Boolean> vadd(String key, float[] vector, S...
    method vaddFP32 (line 4854) | public final CommandObject<Boolean> vaddFP32(String key, byte[] vector...
    method vaddFP32 (line 4858) | public final CommandObject<Boolean> vaddFP32(String key, byte[] vector...
    method vadd (line 4865) | public final CommandObject<Boolean> vadd(byte[] key, float[] vector, b...
    method vadd (line 4869) | public final CommandObject<Boolean> vadd(byte[] key, float[] vector, b...
    method vaddFP32 (line 4877) | public final CommandObject<Boolean> vaddFP32(byte[] key, byte[] vector...
    method vaddFP32 (line 4881) | public final CommandObject<Boolean> vaddFP32(byte[] key, byte[] vector...
    method vadd (line 4888) | public final CommandObject<Boolean> vadd(String key, float[] vector, S...
    method vaddFP32 (line 4897) | public final CommandObject<Boolean> vaddFP32(String key, byte[] vector...
    method vadd (line 4905) | public final CommandObject<Boolean> vadd(byte[] key, float[] vector, b...
    method addOptionalParams (line 4914) | private static void addOptionalParams(VAddParams params, CommandArgume...
    method addVectors (line 4920) | private static void addVectors(float[] vector, CommandArguments args) {
    method vaddFP32 (line 4927) | public final CommandObject<Boolean> vaddFP32(byte[] key, byte[] vector...
    method vsim (line 4935) | public final CommandObject<List<String>> vsim(String key, float[] vect...
    method vsim (line 4940) | public final CommandObject<List<String>> vsim(String key, float[] vect...
    method addOptionalParams (line 4947) | private static void addOptionalParams(VSimParams params, CommandArgume...
    method vsimWithScores (line 4953) | public final CommandObject<Map<String, Double>> vsimWithScores(String ...
    method vsimWithScoresAndAttribs (line 4961) | public final CommandObject<Map<String, VSimScoreAttribs>> vsimWithScor...
    method vsimByElement (line 4970) | public final CommandObject<List<String>> vsimByElement(String key, Str...
    method vsimByElement (line 4974) | public final CommandObject<List<String>> vsimByElement(String key, Str...
    method vsimByElementWithScores (line 4981) | public final CommandObject<Map<String, Double>> vsimByElementWithScore...
    method vsimByElementWithScoresAndAttribs (line 4989) | public final CommandObject<Map<String, VSimScoreAttribs>> vsimByElemen...
    method vsim (line 4998) | public final CommandObject<List<byte[]>> vsim(byte[] key, float[] vect...
    method vsim (line 5002) | public final CommandObject<List<byte[]>> vsim(byte[] key, float[] vect...
    method vsimWithScores (line 5009) | public final CommandObject<Map<byte[], Double>> vsimWithScores(byte[] ...
    method vsimWithScoresAndAttribs (line 5017) | public final CommandObject<Map<byte[], VSimScoreAttribs>> vsimWithScor...
    method vsimByElement (line 5026) | public final CommandObject<List<byte[]>> vsimByElement(byte[] key, byt...
    method vsimByElement (line 5030) | public final CommandObject<List<byte[]>> vsimByElement(byte[] key, byt...
    method vsimByElementWithScores (line 5037) | public final CommandObject<Map<byte[], Double>> vsimByElementWithScore...
    method vsimByElementWithScoresAndAttribs (line 5045) | public final CommandObject<Map<byte[], VSimScoreAttribs>> vsimByElemen...
    method vdim (line 5054) | public final CommandObject<Long> vdim(String key) {
    method vdim (line 5058) | public final CommandObject<Long> vdim(byte[] key) {
    method vcard (line 5062) | public final CommandObject<Long> vcard(String key) {
    method vcard (line 5066) | public final CommandObject<Long> vcard(byte[] key) {
    method vemb (line 5070) | public final CommandObject<List<Double>> vemb(String key, String eleme...
    method vembRaw (line 5074) | public final CommandObject<RawVector> vembRaw(String key, String eleme...
    method vemb (line 5078) | public final CommandObject<List<Double>> vemb(byte[] key, byte[] eleme...
    method vembRaw (line 5082) | public final CommandObject<RawVector> vembRaw(byte[] key, byte[] eleme...
    method vrem (line 5086) | public final CommandObject<Boolean> vrem(String key, String element) {
    method vrem (line 5090) | public final CommandObject<Boolean> vrem(byte[] key, byte[] element) {
    method vlinks (line 5094) | public final CommandObject<List<List<String>>> vlinks(String key, Stri...
    method vlinksWithScores (line 5098) | public final CommandObject<List<Map<String, Double>>> vlinksWithScores...
    method vlinks (line 5102) | public final CommandObject<List<List<byte[]>>> vlinks(byte[] key, byte...
    method vlinksWithScores (line 5106) | public final CommandObject<List<Map<byte[], Double>>> vlinksWithScores...
    method vrandmember (line 5110) | public final CommandObject<String> vrandmember(String key) {
    method vrandmember (line 5114) | public final CommandObject<List<String>> vrandmember(String key, int c...
    method vrandmember (line 5118) | public final CommandObject<byte[]> vrandmember(byte[] key) {
    method vrandmember (line 5122) | public final CommandObject<List<byte[]>> vrandmember(byte[] key, int c...
    method vgetattr (line 5126) | public final CommandObject<String> vgetattr(String key, String element) {
    method vgetattr (line 5130) | public final CommandObject<byte[]> vgetattr(byte[] key, byte[] element) {
    method vsetattr (line 5134) | public final CommandObject<Boolean> vsetattr(String key, String elemen...
    method vsetattr (line 5138) | public final CommandObject<Boolean> vsetattr(byte[] key, byte[] elemen...
    method vinfo (line 5142) | public final CommandObject<VectorInfo> vinfo(String key) {

FILE: src/main/java/redis/clients/jedis/Connection.java
  class Connection (line 34) | public class Connection implements Closeable {
    class Builder (line 36) | public static class Builder {
      method socketFactory (line 40) | public Builder socketFactory(JedisSocketFactory socketFactory) {
      method clientConfig (line 45) | public Builder clientConfig(JedisClientConfig clientConfig) {
      method getSocketFactory (line 50) | public JedisSocketFactory getSocketFactory() {
      method getClientConfig (line 54) | public JedisClientConfig getClientConfig() {
      method build (line 58) | public Connection build() {
    method builder (line 65) | public static Builder builder() {
    method Connection (line 86) | public Connection() {
    method Connection (line 90) | public Connection(final String host, final int port) {
    method Connection (line 94) | public Connection(final HostAndPort hostAndPort) {
    method Connection (line 98) | public Connection(final HostAndPort hostAndPort, final JedisClientConf...
    method Connection (line 102) | public Connection(final JedisSocketFactory socketFactory) {
    method Connection (line 106) | public Connection(final JedisSocketFactory socketFactory, JedisClientC...
    method Connection (line 112) | protected Connection(Builder builder) {
    method toString (line 117) | @Override
    method toIdentityString (line 122) | @Experimental
    method getRedisProtocol (line 150) | public final RedisProtocol getRedisProtocol() {
    method setHandlingPool (line 154) | public final void setHandlingPool(final ConnectionPool pool) {
    method getHostAndPort (line 163) | public final HostAndPort getHostAndPort() {
    method getSoTimeout (line 167) | public int getSoTimeout() {
    method setSoTimeout (line 171) | public void setSoTimeout(int soTimeout) {
    method setTimeoutInfinite (line 183) | public void setTimeoutInfinite() {
    method rollbackTimeout (line 195) | public void rollbackTimeout() {
    method executeCommand (line 204) | public Object executeCommand(final ProtocolCommand cmd) {
    method executeCommand (line 208) | public Object executeCommand(final CommandArguments args) {
    method executeCommand (line 213) | public <T> T executeCommand(final CommandObject<T> commandObject) {
    method sendCommand (line 228) | public void sendCommand(final ProtocolCommand cmd) {
    method sendCommand (line 232) | public void sendCommand(final ProtocolCommand cmd, Rawable keyword) {
    method sendCommand (line 236) | public void sendCommand(final ProtocolCommand cmd, final String... arg...
    method sendCommand (line 240) | public void sendCommand(final ProtocolCommand cmd, final byte[]... arg...
    method sendCommand (line 244) | public void sendCommand(final CommandArguments args) {
    method connect (line 271) | public void connect() throws JedisConnectionException {
    method close (line 301) | @Override
    method disconnect (line 319) | public void disconnect() {
    method forceDisconnect (line 333) | public void forceDisconnect() throws IOException {
    method isConnected (line 342) | public boolean isConnected() {
    method isBroken (line 347) | public boolean isBroken() {
    method setBroken (line 351) | public void setBroken() {
    method getStatusCodeReply (line 355) | public String getStatusCodeReply() {
    method getBulkReply (line 365) | public String getBulkReply() {
    method getBinaryBulkReply (line 374) | public byte[] getBinaryBulkReply() {
    method getIntegerReply (line 379) | public Long getIntegerReply() {
    method getMultiBulkReply (line 384) | public List<String> getMultiBulkReply() {
    method getBinaryMultiBulkReply (line 388) | @SuppressWarnings("unchecked")
    method getUnflushedObjectMultiBulkReply (line 397) | @Deprecated
    method getUnflushedObject (line 403) | @SuppressWarnings("unchecked")
    method getObjectMultiBulkReply (line 408) | public List<Object> getObjectMultiBulkReply() {
    method getIntegerMultiBulkReply (line 413) | @SuppressWarnings("unchecked")
    method getOne (line 419) | public Object getOne() {
    method flush (line 424) | protected void flush() {
    method protocolRead (line 433) | @Experimental
    method protocolReadPushes (line 438) | @Experimental
    method readProtocolWithCheckingBroken (line 442) | protected Object readProtocolWithCheckingBroken() {
    method readPushesWithCheckingBroken (line 455) | protected void readPushesWithCheckingBroken() {
    method getMany (line 473) | public List<Object> getMany(final int count) {
    method validateClientInfo (line 492) | private static boolean validateClientInfo(String info) {
    method initializeFromClientConfig (line 503) | public void initializeFromClientConfig() {
    method initializeFromClientConfig (line 507) | protected void initializeFromClientConfig(final JedisClientConfig conf...
    method helloAndAuth (line 587) | private void helloAndAuth(final RedisProtocol protocol, final RedisCre...
    method setCredentials (line 610) | public void setCredentials(RedisCredentials credentials) {
    method authenticate (line 614) | private String authenticate(RedisCredentials credentials) {
    method reAuthenticate (line 631) | public String reAuthenticate() {
    method hello (line 635) | protected Map<String, Object> hello(byte[]... args) {
    method encodeToBytes (line 640) | protected byte[] encodeToBytes(char[] chars) {
    method select (line 648) | public String select(final int index) {
    method ping (line 653) | public boolean ping() {
    method isTokenBasedAuthenticationEnabled (line 662) | protected boolean isTokenBasedAuthenticationEnabled() {
    method getAuthXManager (line 666) | protected AuthXManager getAuthXManager() {

FILE: src/main/java/redis/clients/jedis/ConnectionFactory.java
  class ConnectionFactory (line 22) | public class ConnectionFactory implements PooledObjectFactory<Connection> {
    class Builder (line 24) | public static class Builder {
      method clientConfig (line 32) | public Builder clientConfig(JedisClientConfig clientConfig) {
      method connectionBuilder (line 37) | public Builder connectionBuilder(Connection.Builder connectionBuilde...
      method socketFactory (line 42) | public Builder socketFactory(JedisSocketFactory jedisSocketFactory) {
      method cache (line 47) | public Builder cache(Cache cache) {
      method hostAndPort (line 52) | public Builder hostAndPort(HostAndPort hostAndPort) {
      method getConnectionBuilder (line 57) | public Connection.Builder getConnectionBuilder() {
      method getJedisSocketFactory (line 61) | public JedisSocketFactory getJedisSocketFactory() {
      method getClientConfig (line 65) | public JedisClientConfig getClientConfig() {
      method getCache (line 69) | public Cache getCache() {
      method build (line 73) | public ConnectionFactory build() {
      method withDefaults (line 78) | private Builder withDefaults() {
      method createDefaultSocketFactory (line 88) | private JedisSocketFactory createDefaultSocketFactory() {
      method createDefaultConnectionBuilder (line 98) | private Connection.Builder createDefaultConnectionBuilder() {
    method builder (line 105) | public static Builder builder() {
    method ConnectionFactory (line 117) | public ConnectionFactory(final HostAndPort hostAndPort) {
    method ConnectionFactory (line 121) | public ConnectionFactory(final HostAndPort hostAndPort, final JedisCli...
    method ConnectionFactory (line 125) | @Experimental
    method ConnectionFactory (line 130) | public ConnectionFactory(final JedisSocketFactory jedisSocketFactory, ...
    method ConnectionFactory (line 134) | public ConnectionFactory(Builder builder) {
    method initAuthXManager (line 141) | private void initAuthXManager() {
    method build (line 153) | private Connection build() {
    method activateObject (line 157) | @Override
    method destroyObject (line 162) | @Override
    method makeObject (line 174) | @Override
    method passivateObject (line 185) | @Override
    method validateObject (line 192) | @Override
    method reAuthenticate (line 208) | private void reAuthenticate(Connection jedis) throws Exception {

FILE: src/main/java/redis/clients/jedis/ConnectionPool.java
  class ConnectionPool (line 13) | public class ConnectionPool extends Pool<Connection> {
    method ConnectionPool (line 18) | public ConnectionPool(PooledObjectFactory<Connection> factory) {
    method ConnectionPool (line 22) | public ConnectionPool(PooledObjectFactory<Connection> factory,
    method ConnectionPool (line 28) | public ConnectionPool(HostAndPort hostAndPort, JedisClientConfig clien...
    method ConnectionPool (line 33) | public ConnectionPool(HostAndPort hostAndPort, JedisClientConfig clien...
    method ConnectionPool (line 39) | @Experimental
    method ConnectionPool (line 46) | @Experimental
    method getResource (line 53) | @Override
    method close (line 60) | @Override
    method attachAuthenticationListener (line 71) | protected void attachAuthenticationListener(AuthXManager authXManager) {
    method detachAuthenticationListener (line 78) | protected void detachAuthenticationListener() {
    method postAuthentication (line 84) | private void postAuthentication(Token token) {

FILE: src/main/java/redis/clients/jedis/ConnectionPoolConfig.java
  class ConnectionPoolConfig (line 6) | public class ConnectionPoolConfig extends GenericObjectPoolConfig<Connec...
    method ConnectionPoolConfig (line 8) | public ConnectionPoolConfig() {

FILE: src/main/java/redis/clients/jedis/DefaultJedisClientConfig.java
  class DefaultJedisClientConfig (line 13) | public final class DefaultJedisClientConfig implements JedisClientConfig {
    method DefaultJedisClientConfig (line 39) | private DefaultJedisClientConfig(DefaultJedisClientConfig.Builder buil...
    method getRedisProtocol (line 58) | @Override
    method getConnectionTimeoutMillis (line 63) | @Override
    method getSocketTimeoutMillis (line 68) | @Override
    method getBlockingSocketTimeoutMillis (line 73) | @Override
    method getUser (line 78) | @Override
    method getPassword (line 83) | @Override
    method getCredentialsProvider (line 89) | @Override
    method getAuthXManager (line 94) | @Override
    method getDatabase (line 99) | @Override
    method getClientName (line 104) | @Override
    method isSsl (line 109) | @Override
    method getSslSocketFactory (line 114) | @Override
    method getSslParameters (line 119) | @Override
    method getSslOptions (line 124) | @Override
    method getHostnameVerifier (line 129) | @Override
    method getHostAndPortMapper (line 134) | @Override
    method getClientSetInfoConfig (line 139) | @Override
    method isReadOnlyForRedisClusterReplicas (line 144) | @Override
    method builder (line 149) | public static Builder builder() {
    method builder (line 170) | public static Builder builder(URI redisUri) {
    class Builder (line 203) | public static class Builder {
      method Builder (line 231) | private Builder() {
      method build (line 234) | public DefaultJedisClientConfig build() {
      method resp3 (line 249) | public Builder resp3() {
      method protocol (line 253) | public Builder protocol(RedisProtocol protocol) {
      method timeoutMillis (line 258) | public Builder timeoutMillis(int timeoutMillis) {
      method connectionTimeoutMillis (line 264) | public Builder connectionTimeoutMillis(int connectionTimeoutMillis) {
      method socketTimeoutMillis (line 269) | public Builder socketTimeoutMillis(int socketTimeoutMillis) {
      method blockingSocketTimeoutMillis (line 274) | public Builder blockingSocketTimeoutMillis(int blockingSocketTimeout...
      method user (line 279) | public Builder user(String user) {
      method password (line 284) | public Builder password(String password) {
      method credentials (line 289) | public Builder credentials(RedisCredentials credentials) {
      method credentialsProvider (line 294) | public Builder credentialsProvider(Supplier<RedisCredentials> creden...
      method database (line 299) | public Builder database(int database) {
      method clientName (line 304) | public Builder clientName(String clientName) {
      method ssl (line 309) | public Builder ssl(boolean ssl) {
      method sslSocketFactory (line 314) | public Builder sslSocketFactory(SSLSocketFactory sslSocketFactory) {
      method sslParameters (line 319) | public Builder sslParameters(SSLParameters sslParameters) {
      method sslOptions (line 324) | public Builder sslOptions(SslOptions sslOptions) {
      method hostnameVerifier (line 329) | public Builder hostnameVerifier(HostnameVerifier hostnameVerifier) {
      method hostAndPortMapper (line 334) | public Builder hostAndPortMapper(HostAndPortMapper hostAndPortMapper) {
      method clientSetInfoConfig (line 339) | public Builder clientSetInfoConfig(ClientSetInfoConfig setInfoConfig) {
      method readOnlyForRedisClusterReplicas (line 344) | public Builder readOnlyForRedisClusterReplicas() {
      method authXManager (line 349) | public Builder authXManager(AuthXManager authXManager) {
      method from (line 354) | public Builder from(JedisClientConfig instance) {
    method create (line 378) | @Deprecated
    method copyConfig (line 402) | @Deprecated

FILE: src/main/java/redis/clients/jedis/DefaultJedisSocketFactory.java
  class DefaultJedisSocketFactory (line 20) | public class DefaultJedisSocketFactory implements JedisSocketFactory {
    method DefaultJedisSocketFactory (line 35) | public DefaultJedisSocketFactory() {
    method DefaultJedisSocketFactory (line 38) | public DefaultJedisSocketFactory(HostAndPort hostAndPort) {
    method DefaultJedisSocketFactory (line 42) | public DefaultJedisSocketFactory(JedisClientConfig config) {
    method DefaultJedisSocketFactory (line 46) | public DefaultJedisSocketFactory(HostAndPort hostAndPort, JedisClientC...
    method connectToFirstSuccessfulHost (line 62) | private Socket connectToFirstSuccessfulHost(HostAndPort hostAndPort) t...
    method createSocket (line 89) | @Override
    method createSslSocket (line 116) | private Socket createSslSocket(HostAndPort _hostAndPort, Socket socket...
    method updateHostAndPort (line 157) | public void updateHostAndPort(HostAndPort hostAndPort) {
    method getHostAndPort (line 161) | public HostAndPort getHostAndPort() {
    method getSocketHostAndPort (line 165) | protected HostAndPort getSocketHostAndPort() {
    method toString (line 177) | @Override

FILE: src/main/java/redis/clients/jedis/DefaultRedisCredentials.java
  class DefaultRedisCredentials (line 3) | public final class DefaultRedisCredentials implements RedisCredentials {
    method DefaultRedisCredentials (line 8) | public DefaultRedisCredentials(String user, char[] password) {
    method DefaultRedisCredentials (line 13) | public DefaultRedisCredentials(String user, CharSequence password) {
    method getUser (line 20) | @Override
    method getPassword (line 25) | @Override
    method toCharArray (line 30) | private static char[] toCharArray(CharSequence seq) {

FILE: src/main/java/redis/clients/jedis/DefaultRedisCredentialsProvider.java
  class DefaultRedisCredentialsProvider (line 3) | public final class DefaultRedisCredentialsProvider implements RedisCrede...
    method DefaultRedisCredentialsProvider (line 7) | public DefaultRedisCredentialsProvider(RedisCredentials credentials) {
    method setCredentials (line 11) | public void setCredentials(RedisCredentials credentials) {
    method get (line 15) | @Override

FILE: src/main/java/redis/clients/jedis/DriverInfo.java
  class DriverInfo (line 22) | public final class DriverInfo {
    method DriverInfo (line 35) | private DriverInfo(String name, List<String> upstreamDrivers) {
    method builder (line 46) | public static Builder builder() {
    method builder (line 56) | public static Builder builder(DriverInfo driverInfo) {
    method getFormattedName (line 80) | public String getFormattedName() {
    method getName (line 91) | public String getName() {
    method getUpstreamDrivers (line 108) | public String getUpstreamDrivers() {
    method toString (line 115) | @Override
    class Builder (line 123) | public static class Builder {
      method Builder (line 129) | private Builder() {
      method Builder (line 134) | private Builder(DriverInfo driverInfo) {
      method name (line 148) | public Builder name(String name) {
      method addUpstreamDriver (line 179) | public Builder addUpstreamDriver(String driverName, String driverVer...
      method addUpstreamDriver (line 193) | public Builder addUpstreamDriver(String driverName) {
      method build (line 206) | public DriverInfo build() {
    method validateDriverField (line 222) | private static void validateDriverField(String value, String fieldName) {
    method validateNoInvalidCharacters (line 240) | private static void validateNoInvalidCharacters(String value, String f...
    method formatDriverInfo (line 250) | private static String formatDriverInfo(String driverName, String drive...

FILE: src/main/java/redis/clients/jedis/Endpoint.java
  type Endpoint (line 3) | public interface Endpoint {
    method getHost (line 5) | String getHost();
    method getPort (line 7) | int getPort();

FILE: src/main/java/redis/clients/jedis/GeoCoordinate.java
  class GeoCoordinate (line 3) | public class GeoCoordinate {
    method GeoCoordinate (line 8) | public GeoCoordinate(double longitude, double latitude) {
    method getLongitude (line 13) | public double getLongitude() {
    method getLatitude (line 17) | public double getLatitude() {
    method equals (line 21) | @Override
    method hashCode (line 33) | @Override
    method toString (line 45) | @Override

FILE: src/main/java/redis/clients/jedis/HostAndPort.java
  class HostAndPort (line 5) | public class HostAndPort implements Serializable, Endpoint {
    method HostAndPort (line 12) | public HostAndPort(String host, int port) {
    method getHost (line 17) | @Override
    method getPort (line 22) | @Override
    method equals (line 27) | @Override
    method hashCode (line 36) | @Override
    method toString (line 41) | @Override
    method from (line 51) | public static HostAndPort from(String string) {

FILE: src/main/java/redis/clients/jedis/HostAndPortMapper.java
  type HostAndPortMapper (line 9) | @FunctionalInterface
    method getHostAndPort (line 16) | HostAndPort getHostAndPort(HostAndPort hap);

FILE: src/main/java/redis/clients/jedis/Jedis.java
  class Jedis (line 92) | public class Jedis implements ServerCommands, DatabaseCommands, JedisCom...
    method Jedis (line 107) | public Jedis() {
    method Jedis (line 116) | public Jedis(final String url) {
    method Jedis (line 120) | public Jedis(final HostAndPort hp) {
    method Jedis (line 124) | public Jedis(final String host, final int port) {
    method Jedis (line 128) | public Jedis(final String host, final int port, final JedisClientConfi...
    method Jedis (line 132) | public Jedis(final HostAndPort hostPort, final JedisClientConfig confi...
    method Jedis (line 138) | public Jedis(final String host, final int port, final boolean ssl) {
    method Jedis (line 142) | public Jedis(final String host, final int port, final boolean ssl,
    method Jedis (line 150) | public Jedis(final String host, final int port, final int timeout) {
    method Jedis (line 154) | public Jedis(final String host, final int port, final int timeout, fin...
    method Jedis (line 158) | public Jedis(final String host, final int port, final int timeout, fin...
    method Jedis (line 164) | public Jedis(final String host, final int port, final int connectionTi...
    method Jedis (line 170) | public Jedis(final String host, final int port, final int connectionTi...
    method Jedis (line 177) | public Jedis(final String host, final int port, final int connectionTi...
    method Jedis (line 184) | public Jedis(final String host, final int port, final int connectionTi...
    method Jedis (line 193) | public Jedis(final String host, final int port, final int connectionTi...
    method Jedis (line 204) | public Jedis(URI uri) {
    method Jedis (line 216) | public Jedis(URI uri, final SSLSocketFactory sslSocketFactory,
    method Jedis (line 222) | public Jedis(final URI uri, final int timeout) {
    method Jedis (line 226) | public Jedis(final URI uri, final int timeout, final SSLSocketFactory ...
    method Jedis (line 231) | public Jedis(final URI uri, final int connectionTimeout, final int soT...
    method Jedis (line 236) | public Jedis(final URI uri, final int connectionTimeout, final int soT...
    method Jedis (line 244) | public Jedis(final URI uri, final int connectionTimeout, final int soT...
    method Jedis (line 265) | public Jedis(final URI uri, JedisClientConfig config) {
    method Jedis (line 285) | public Jedis(final JedisSocketFactory jedisSocketFactory) {
    method Jedis (line 289) | public Jedis(final JedisSocketFactory jedisSocketFactory, final JedisC...
    method Jedis (line 295) | public Jedis(final Connection connection) {
    method toString (line 299) | @Override
    method getClient (line 305) | public Connection getClient() {
    method getConnection (line 309) | public Connection getConnection() {
    method connect (line 314) | public void connect() {
    method disconnect (line 321) | public void disconnect() {
    method isConnected (line 325) | public boolean isConnected() {
    method isBroken (line 329) | public boolean isBroken() {
    method resetState (line 333) | public void resetState() {
    method setDataSource (line 355) | protected void setDataSource(Pool<Jedis> jedisPool) {
    method close (line 359) | @Override
    method multi (line 375) | public Transaction multi() {
    method pipelined (line 391) | public Pipeline pipelined() {
    method checkIsInMultiOrPipeline (line 397) | protected void checkIsInMultiOrPipeline() {
    method getDB (line 408) | public int getDB() {
    method ping (line 415) | @Override
    method ping (line 427) | public byte[] ping(final byte[] message) {
    method select (line 439) | @Override
    method swapDB (line 448) | @Override
    method flushDB (line 459) | @Override
    method flushDB (line 470) | @Override
    method flushAll (line 482) | @Override
    method flushAll (line 494) | @Override
    method copy (line 509) | @Override
    method copy (line 522) | @Override
    method set (line 537) | @Override
    method set (line 554) | @Override
    method get (line 569) | @Override
    method digestKey (line 575) | @Override
    method setGet (line 581) | @Override
    method setGet (line 587) | @Override
    method getDel (line 601) | @Override
    method getEx (line 607) | @Override
    method exists (line 619) | @Override
    method exists (line 632) | @Override
    method del (line 644) | @Override
    method delex (line 649) | @Override
    method del (line 656) | @Override
    method unlink (line 675) | @Override
    method unlink (line 681) | @Override
    method type (line 695) | @Override
    method keys (line 729) | @Override
    method randomBinaryKey (line 741) | @Override
    method rename (line 756) | @Override
    method renamenx (line 770) | @Override
    method dbSize (line 780) | @Override
    method expire (line 806) | @Override
    method expire (line 812) | @Override
    method pexpire (line 837) | @Override
    method pexpire (line 843) | @Override
    method expireTime (line 849) | @Override
    method pexpireTime (line 855) | @Override
    method expireAt (line 884) | @Override
    method expireAt (line 890) | @Override
    method pexpireAt (line 896) | @Override
    method pexpireAt (line 902) | @Override
    method ttl (line 915) | @Override
    method touch (line 927) | @Override
    method touch (line 933) | @Override
    method move (line 949) | @Override
    method getSet (line 967) | @Deprecated
    method mget (line 983) | @Override
    method setnx (line 1000) | @Deprecated
    method setex (line 1020) | @Deprecated
    method mset (line 1043) | @Override
    method msetnx (line 1066) | @Override
    method msetex (line 1072) | @Override
    method decrBy (line 1096) | @Override
    method decr (line 1119) | @Override
    method incrBy (line 1143) | @Override
    method incrByFloat (line 1168) | @Override
    method incr (line 1191) | @Override
    method append (line 1209) | @Override
    method substr (line 1233) | @Deprecated
    method hset (line 1252) | @Override
    method hset (line 1258) | @Override
    method hsetex (line 1264) | @Override
    method hsetex (line 1270) | @Override
    method hget (line 1286) | @Override
    method hgetex (line 1292) | @Override
    method hgetdel (line 1298) | @Override
    method hsetnx (line 1313) | @Override
    method hmset (line 1331) | @Deprecated
    method hmget (line 1349) | @Override
    method hincrBy (line 1369) | @Override
    method hincrByFloat (line 1390) | @Override
    method hexists (line 1403) | @Override
    method hdel (line 1418) | @Override
    method hlen (line 1432) | @Override
    method hkeys (line 1445) | @Override
    method hvals (line 1458) | @Override
    method hgetAll (line 1471) | @Override
    method hrandfield (line 1484) | @Override
    method hrandfield (line 1497) | @Override
    method hrandfieldWithValues (line 1510) | @Override
    method rpush (line 1526) | @Override
    method lpush (line 1542) | @Override
    method llen (line 1557) | @Override
    method lrange (line 1595) | @Override
    method ltrim (line 1631) | @Override
    method lindex (line 1653) | @Override
    method lset (line 1678) | @Override
    method lrem (line 1699) | @Override
    method lpop (line 1715) | @Override
    method lpop (line 1721) | @Override
    method lpos (line 1739) | @Override
    method lpos (line 1763) | @Override
    method lpos (line 1783) | @Override
    method rpop (line 1800) | @Override
    method rpop (line 1806) | @Override
    method rpoplpush (line 1830) | @Deprecated
    method sadd (line 1848) | @Override
    method smembers (line 1862) | @Override
    method srem (line 1877) | @Override
    method spop (line 1894) | @Override
    method spop (line 1900) | @Override
    method smove (line 1924) | @Override
    method scard (line 1936) | @Override
    method sismember (line 1950) | @Override
    method smismember (line 1964) | @Override
    method sinter (line 1985) | @Override
    method sinterstore (line 2001) | @Override
    method sintercard (line 2015) | @Override
    method sintercard (line 2031) | @Override
    method sunion (line 2050) | @Override
    method sunionstore (line 2066) | @Override
    method sdiff (line 2092) | @Override
    method sdiffstore (line 2105) | @Override
    method srandmember (line 2121) | @Override
    method srandmember (line 2127) | @Override
    method zadd (line 2149) | @Override
    method zadd (line 2155) | @Override
    method zadd (line 2162) | @Override
    method zadd (line 2168) | @Override
    method zaddIncr (line 2174) | @Override
    method zrange (line 2180) | @Override
    method zrem (line 2196) | @Override
    method zincrby (line 2220) | @Override
    method zincrby (line 2226) | @Override
    method zrank (line 2248) | @Override
    method zrevrank (line 2269) | @Override
    method zrankWithScore (line 2282) | @Override
    method zrevrankWithScore (line 2295) | @Override
    method zrevrange (line 2301) | @Override
    method zrangeWithScores (line 2307) | @Override
    method zrevrangeWithScores (line 2313) | @Override
    method zrange (line 2319) | @Override
    method zrangeWithScores (line 2325) | @Override
    method zrangestore (line 2331) | @Override
    method zrandmember (line 2337) | @Override
    method zrandmember (line 2343) | @Override
    method zrandmemberWithScores (line 2349) | @Override
    method zcard (line 2363) | @Override
    method zscore (line 2379) | @Override
    method zmscore (line 2394) | @Override
    method zpopmax (line 2400) | @Override
    method zpopmax (line 2406) | @Override
    method zpopmin (line 2412) | @Override
    method zpopmin (line 2418) | @Override
    method watch (line 2424) | public String watch(final byte[]... keys) {
    method unwatch (line 2433) | public String unwatch() {
    method sort (line 2452) | @Override
    method sort (line 2532) | @Override
    method sort (line 2548) | @Override
    method sort (line 2567) | @Override
    method sortReadonly (line 2573) | @Override
    method lmove (line 2587) | @Override
    method blmove (line 2602) | @Override
    method blpop (line 2669) | @Override
    method blpop (line 2674) | @Override
    method brpop (line 2740) | @Override
    method brpop (line 2745) | @Override
    method lmpop (line 2750) | @Override
    method lmpop (line 2756) | @Override
    method blmpop (line 2762) | @Override
    method blmpop (line 2768) | @Override
    method bzpopmax (line 2774) | @Override
    method bzpopmin (line 2779) | @Override
    method auth (line 2796) | @Override
    method auth (line 2811) | @Override
    method zcount (line 2818) | @Override
    method zcount (line 2824) | @Override
    method zdiff (line 2830) | @Override
    method zdiffWithScores (line 2836) | @Override
    method zdiffStore (line 2842) | @Override
    method zdiffstore (line 2849) | @Override
    method zrangeByScore (line 2902) | @Override
    method zrangeByScore (line 2908) | @Override
    method zrangeByScore (line 2963) | @Override
    method zrangeByScore (line 2970) | @Override
    method zrangeByScoreWithScores (line 3024) | @Override
    method zrangeByScoreWithScores (line 3030) | @Override
    method zrangeByScoreWithScores (line 3085) | @Override
    method zrangeByScoreWithScores (line 3092) | @Override
    method zrevrangeByScore (line 3099) | @Override
    method zrevrangeByScore (line 3105) | @Override
    method zrevrangeByScore (line 3111) | @Override
    method zrevrangeByScore (line 3118) | @Override
    method zrevrangeByScoreWithScores (line 3125) | @Override
    method zrevrangeByScoreWithScores (line 3131) | @Override
    method zrevrangeByScoreWithScores (line 3138) | @Override
    method zrevrangeByScoreWithScores (line 3144) | @Override
    method zremrangeByRank (line 3165) | @Override
    method zremrangeByScore (line 3184) | @Override
    method zremrangeByScore (line 3190) | @Override
    method zunion (line 3203) | @Override
    method zunionWithScores (line 3216) | @Override
    method zunionstore (line 3247) | @Override
    method zunionstore (line 3280) | @Override
    method zinter (line 3293) | @Override
    method zinterWithScores (line 3306) | @Override
    method zinterstore (line 3338) | @Override
    method zinterstore (line 3371) | @Override
    method zintercard (line 3377) | @Override
    method zintercard (line 3383) | @Override
    method zlexcount (line 3389) | @Override
    method zrangeByLex (line 3395) | @Override
    method zrangeByLex (line 3401) | @Override
    method zrevrangeByLex (line 3408) | @Override
    method zrevrangeByLex (line 3414) | @Override
    method zremrangeByLex (line 3421) | @Override
    method zmpop (line 3427) | @Override
    method zmpop (line 3433) | @Override
    method bzmpop (line 3439) | @Override
    method bzmpop (line 3445) | @Override
    method save (line 3464) | @Override
    method bgsave (line 3478) | @Override
    method bgsaveSchedule (line 3484) | @Override
    method bgrewriteaof (line 3504) | @Override
    method lastsave (line 3518) | @Override
    method shutdown (line 3532) | @Override
    method shutdown (line 3543) | @Override
    method shutdownAbort (line 3554) | @Override
    method info (line 3596) | @Override
    method info (line 3602) | @Override
    method monitor (line 3616) | public void monitor(final JedisMonitor jedisMonitor) {
    method slaveof (line 3644) | @Override
    method slaveofNoOne (line 3654) | @Override
    method replicaof (line 3661) | @Override
    method replicaofNoOne (line 3667) | @Override
    method roleBinary (line 3673) | @Override
    method configGet (line 3714) | @Override
    method configGet (line 3721) | @Override
    method configResetStat (line 3731) | @Override
    method configRewrite (line 3764) | @Override
    method configSet (line 3800) | @Override
    method configSet (line 3807) | @Override
    method configSetBinary (line 3814) | @Override
    method strlen (line 3823) | @Override
    method lcs (line 3829) | @Override
    method lpushx (line 3835) | @Override
    method persist (line 3848) | @Override
    method rpushx (line 3854) | @Override
    method echo (line 3860) | @Override
    method linsert (line 3867) | @Override
    method brpoplpush (line 3880) | @Deprecated
    method setbit (line 3890) | @Override
    method getbit (line 3899) | @Override
    method bitpos (line 3905) | @Override
    method bitpos (line 3910) | @Override
    method setrange (line 3916) | @Override
    method getrange (line 3922) | @Override
    method publish (line 3928) | public long publish(final byte[] channel, final byte[] message) {
    method subscribe (line 3933) | public void subscribe(BinaryJedisPubSub jedisPubSub, final byte[]... c...
    method psubscribe (line 3937) | public void psubscribe(BinaryJedisPubSub jedisPubSub, final byte[]... ...
    method eval (line 3948) | @Override
    method evalReadonly (line 3954) | @Override
    method getParamsWithBinary (line 3960) | protected static byte[][] getParamsWithBinary(List<byte[]> keys, List<...
    method eval (line 3974) | @Override
    method eval (line 3980) | @Override
    method evalsha (line 3986) | @Override
    method evalsha (line 3992) | @Override
    method evalshaReadonly (line 3998) | @Override
    method evalsha (line 4004) | @Override
    method scriptFlush (line 4010) | @Override
    method scriptFlush (line 4016) | @Override
    method scriptExists (line 4022) | @Override
    method scriptExists (line 4029) | @Override
    method scriptLoad (line 4035) | @Override
    method scriptKill (line 4041) | @Override
    method slowlogReset (line 4046) | @Override
    method slowlogLen (line 4051) | @Override
    method slowlogGetBinary (line 4057) | @Override
    method slowlogGetBinary (line 4063) | @Override
    method objectRefcount (line 4069) | @Override
    method objectEncoding (line 4075) | @Override
    method objectIdletime (line 4081) | @Override
    method objectHelpBinary (line 4087) | @Override
    method objectFreq (line 4093) | @Override
    method bitcount (line 4099) | @Override
    method bitcount (line 4105) | @Override
    method bitcount (line 4111) | @Override
    method bitop (line 4117) | @Override
    method dump (line 4123) | @Override
    method restore (line 4129) | @Override
    method restore (line 4135) | @Override
    method pttl (line 4142) | @Override
    method psetex (line 4158) | @Deprecated
    method memoryDoctorBinary (line 4165) | @Override
    method memoryUsage (line 4172) | @Override
    method memoryUsage (line 4179) | @Override
    method failover (line 4186) | @Override
    method failover (line 4198) | @Override
    method failoverAbort (line 4211) | @Override
    method aclWhoAmIBinary (line 4218) | @Override
    method aclGenPassBinary (line 4225) | @Override
    method aclGenPassBinary (line 4232) | @Override
    method aclListBinary (line 4239) | @Override
    method aclUsersBinary (line 4246) | @Override
    method aclGetUser (line 4253) | @Override
    method aclSetUser (line 4260) | @Override
    method aclSetUser (line 4267) | @Override
    method aclDelUser (line 4274) | @Override
    method aclCatBinary (line 4281) | @Override
    method aclCat (line 4288) | @Override
    method aclLogBinary (line 4295) | @Override
    method aclLogBinary (line 4302) | @Override
    method aclLogReset (line 4309) | @Override
    method clientKill (line 4316) | @Override
    method clientKill (line 4323) | @Override
    method clientKill (line 4328) | @Override
    method clientGetnameBinary (line 4335) | @Override
    method clientListBinary (line 4342) | @Override
    method clientListBinary (line 4349) | @Override
    method clientListBinary (line 4356) | @Override
    method clientListParams (line 4363) | private byte[][] clientListParams(final long... clientIds) {
    method clientInfoBinary (line 4374) | @Override
    method clientSetInfo (line 4381) | @Override
    method clientSetname (line 4388) | @Override
    method clientId (line 4395) | @Override
    method clientUnblock (line 4406) | @Override
    method clientUnblock (line 4418) | @Override
    method clientPause (line 4425) | @Override
    method clientPause (line 4432) | @Override
    method clientUnpause (line 4439) | @Override
    method clientNoEvictOn (line 4446) | @Override
    method clientNoEvictOff (line 4453) | @Override
    method clientNoTouchOn (line 4460) | @Override
    method clientNoTouchOff (line 4467) | @Override
    method clientTrackingInfo (line 4474) | @Override
    method time (line 4481) | public List<String> time() {
    method migrate (line 4487) | @Override
    method migrate (line 4494) | @Override
    method migrate (line 4501) | @Override
    method migrate (line 4507) | @Override
    method waitReplicas (line 4513) | @Override
    method waitAOF (line 4520) | @Override
    method pfadd (line 4527) | @Override
    method pfcount (line 4533) | @Override
    method pfmerge (line 4539) | @Override
    method pfcount (line 4545) | @Override
    method scan (line 4551) | @Override
    method scan (line 4557) | @Override
    method scan (line 4563) | @Override
    method hscan (line 4569) | @Override
    method hscanNoValues (line 4576) | @Override
    method sscan (line 4582) | @Override
    method sscan (line 4587) | @Override
    method zscan (line 4593) | @Override
    method zscan (line 4598) | @Override
    method geoadd (line 4604) | @Override
    method geoadd (line 4611) | @Override
    method geoadd (line 4617) | @Override
    method geodist (line 4623) | @Override
    method geodist (line 4629) | @Override
    method geohash (line 4636) | @Override
    method geopos (line 4642) | @Override
    method georadius (line 4648) | @Override
    method georadiusReadonly (line 4655) | @Override
    method georadius (line 4662) | @Override
    method georadiusStore (line 4669) | @Override
    method georadiusReadonly (line 4677) | @Override
    method georadiusByMember (line 4684) | @Override
    method georadiusByMemberReadonly (line 4691) | @Override
    method georadiusByMember (line 4698) | @Override
    method georadiusByMemberStore (line 4705) | @Override
    method geosearch (line 4712) | @Override
    method geosearch (line 4718) | @Override
    method geosearch (line 4724) | @Override
    method geosearch (line 4730) | @Override
    method geosearch (line 4736) | @Override
    method geosearchStore (line 4742) | @Override
    method geosearchStore (line 4748) | @Override
    method geosearchStore (line 4754) | @Override
    method geosearchStore (line 4760) | @Override
    method geosearchStore (line 4766) | @Override
    method geosearchStoreStoreDist (line 4772) | @Override
    method georadiusByMemberReadonly (line 4778) | @Override
    method bitfield (line 4785) | @Override
    method bitfieldReadonly (line 4791) | @Override
    method hstrlen (line 4797) | @Override
    method hexpire (line 4803) | @Override
    method hexpire (line 4809) | @Override
    method hpexpire (line 4815) | @Override
    method hpexpire (line 4821) | @Override
    method hexpireAt (line 4827) | @Override
    method hexpireAt (line 4833) | @Override
    method hpexpireAt (line 4839) | @Override
    method hpexpireAt (line 4845) | @Override
    method hexpireTime (line 4851) | @Override
    method hpexpireTime (line 4857) | @Override
    method httl (line 4863) | @Override
    method hpttl (line 4869) | @Override
    method hpersist (line 4875) | @Override
    method xread (line 4887) | @Deprecated
    method xreadGroup (line 4899) | @Deprecated
    method xreadBinary (line 4907) | @Override
    method xreadBinaryAsMap (line 4914) | @Override
    method xreadGroupBinary (line 4921) | @Override
    method xreadGroupBinaryAsMap (line 4928) | @Override
    method xadd (line 4935) | @Override
    method xlen (line 4941) | @Override
    method xrange (line 4947) | @Override
    method xrange (line 4953) | @Override
    method xrevrange (line 4959) | @Override
    method xrevrange (line 4965) | @Override
    method xack (line 4971) | @Override
    method xackdel (line 4977) | @Override
    method xackdel (line 4983) | @Override
    method xgroupCreate (line 4989) | @Override
    method xgroupSetID (line 4995) | @Override
    method xgroupDestroy (line 5001) | @Override
    method xgroupCreateConsumer (line 5007) | @Override
    method xgroupDelConsumer (line 5013) | @Override
    method xdel (line 5019) | @Override
    method xdelex (line 5025) | @Override
    method xdelex (line 5031) | @Override
    method xtrim (line 5037) | @Override
    method xtrim (line 5043) | @Override
    method xpending (line 5049) | @Override
    method xpending (line 5055) | @Override
    method xclaim (line 5061) | @Override
    method xclaimJustId (line 5068) | @Override
    method xautoclaim (line 5075) | @Override
    method xautoclaimJustId (line 5082) | @Override
    method xinfoStream (line 5089) | @Override
    method xinfoStreamFull (line 5095) | @Override
    method xinfoStreamFull (line 5101) | @Override
    method xinfoGroups (line 5107) | @Override
    method xinfoConsumers (line 5113) | @Override
    method xcfgset (line 5119) | @Override
    method sendCommand (line 5125) | public Object sendCommand(ProtocolCommand cmd, byte[]... args) {
    method sendBlockingCommand (line 5131) | public Object sendBlockingCommand(ProtocolCommand cmd, byte[]... args) {
    method sendCommand (line 5142) | public Object sendCommand(ProtocolCommand cmd) {
    method copy (line 5154) | @Override
    method copy (line 5167) | @Override
    method ping (line 5178) | @Override
    method set (line 5194) | @Override
    method set (line 5211) | @Override
    method get (line 5226) | @Override
    method setGet (line 5232) | @Override
    method setGet (line 5238) | @Override
    method getDel (line 5252) | @Override
    method getEx (line 5258) | @Override
    method digestKey (line 5264) | @Override
    method delex (line 5270) | @Override
    method exists (line 5282) | @Override
    method exists (line 5295) | @Override
    method del (line 5307) | @Override
    method del (line 5313) | @Override
    method unlink (line 5332) | @Override
    method unlink (line 5338) | @Override
    method type (line 5352) | @Override
    method keys (line 5358) | @Override
    method randomKey (line 5370) | @Override
    method rename (line 5385) | @Override
    method renamenx (line 5399) | @Override
    method expire (line 5426) | @Override
    method expire (line 5442) | @Override
    method pexpire (line 5448) | @Override
    method pexpire (line 5454) | @Override
    method expireTime (line 5470) | @Override
    method pexpireTime (line 5486) | @Override
    method expireAt (line 5515) | @Override
    method expireAt (line 5530) | @Override
    method pexpireAt (line 5546) | @Override
    method pexpireAt (line 5562) | @Override
    method ttl (line 5576) | @Override
    method touch (line 5588) | @Override
    method touch (line 5594) | @Override
    method move (line 5610) | @Override
    method getSet (line 5628) | @Deprecated
    method mget (line 5644) | @Override
    method setnx (line 5661) | @Deprecated
    method setex (line 5681) | @Deprecated
    method mset (line 5704) | @Override
    method msetnx (line 5726) | @Override
    method msetex (line 5732) | @Override
    method decrBy (line 5756) | @Override
    method decr (line 5779) | @Override
    method incrBy (line 5803) | @Override
    method incrByFloat (line 5824) | @Override
    method incr (line 5847) | @Override
    method append (line 5865) | @Override
    method substr (line 5889) | @Deprecated
    method hset (line 5908) | @Override
    method hset (line 5914) | @Override
    method hsetex (line 5920) | @Override
    method hsetex (line 5926) | @Override
    method hget (line 5942) | @Override
    method hgetex (line 5948) | @Override
    method hgetdel (line 5954) | @Override
    method hsetnx (line 5969) | @Override
    method hmset (line 5987) | @Deprecated
    method hmget (line 6005) | @Override
    method hincrBy (line 6025) | @Override
    method hincrByFloat (line 6046) | @Override
    method hexists (line 6059) | @Override
    method hdel (line 6076) | @Override
    method hlen (line 6090) | @Override
    method hkeys (line 6103) | @Override
    method hvals (line 6116) | @Override
    method hgetAll (line 6129) | @Override
    method hrandfield (line 6142) | @Override
    method hrandfield (line 6156) | @Override
    method hrandfieldWithValues (line 6170) | @Override
    method rpush (line 6186) | @Override
    method lpush (line 6202) | @Override
    method llen (line 6217) | @Override
    method lrange (line 6255) | @Override
    method ltrim (line 6291) | @Override
    method lindex (line 6313) | @Override
    method lset (line 6338) | @Override
    method lrem (line 6359) | @Override
    method lpop (line 6375) | @Override
    method lpop (line 6381) | @Override
    method lpos (line 6387) | @Override
    method lpos (line 6393) | @Override
    method lpos (line 6399) | @Override
    method rpop (line 6416) | @Override
    method rpop (line 6422) | @Override
    method rpoplpush (line 6446) | @Deprecated
    method sadd (line 6463) | @Override
    method smembers (line 6477) | @Override
    method srem (line 6492) | @Override
    method spop (line 6509) | @Override
    method spop (line 6515) | @Override
    method smove (line 6540) | @Override
    method scard (line 6552) | @Override
    method sismember (line 6566) | @Override
    method smismember (line 6580) | @Override
    method sinter (line 6601) | @Override
    method sinterstore (line 6617) | @Override
    method sintercard (line 6631) | @Override
    method sintercard (line 6647) | @Override
    method sunion (line 6666) | @Override
    method sunionstore (line 6682) | @Override
    method sdiff (line 6708) | @Override
    method sdiffstore (line 6721) | @Override
    method srandmember (line 6737) | @Override
    method srandmember (line 6756) | @Override
    method zadd (line 6778) | @Override
    method zadd (line 6784) | @Override
    method zadd (line 6791) | @Override
    method zadd (line 6797) | @Override
    method zaddIncr (line 6803) | @Override
    method zdiff (line 6809) | @Override
    method zdiffWithScores (line 6815) | @Override
    method zdiffStore (line 6821) | @Override
    method zdiffstore (line 6828) | @Override
    method zrange (line 6834) | @Override
    method zrem (line 6849) | @Override
    method zincrby (line 6873) | @Override
    method zincrby (line 6879) | @Override
    method zrank (line 6901) | @Override
    method zrevrank (line 6922) | @Override
    method zrankWithScore (line 6935) | @Override
    method zrevrankWithScore (line 6948) | @Override
    method zrevrange (line 6958) | @Deprecated
    method zrangeWithScores (line 6965) | @Override
    method zrevrangeWithScores (line 6975) | @Deprecated
    method zrange (line 6982) | @Override
    method zrangeWithScores (line 6988) | @Override
    method zrangestore (line 6994) | @Override
    method zrandmember (line 7000) | @Override
    method zrandmember (line 7006) | @Override
    method zrandmemberWithScores (line 7012) | @Override
    method zcard (line 7026) | @Override
    method zscore (line 7042) | @Override
    method zmscore (line 7057) | @Override
    method zpopmax (line 7063) | @Override
    method zpopmax (line 7069) | @Override
    method zpopmin (line 7075) | @Override
    method zpopmin (line 7081) | @Override
    method watch (line 7087) | public String watch(final String... keys) {
    method sort (line 7109) | @Override
    method sort (line 7189) | @Override
    method sort (line 7205) | @Override
    method sortReadonly (line 7211) | @Override
    method sort (line 7230) | @Override
    method lmove (line 7236) | @Override
    method blmove (line 7243) | @Override
    method blpop (line 7312) | @Override
    method blpop (line 7318) | @Override
    method brpop (line 7386) | @Override
    method brpop (line 7392) | @Override
    method lmpop (line 7398) | @Override
    method lmpop (line 7404) | @Override
    method blmpop (line 7410) | @Override
    method blmpop (line 7416) | @Override
    method bzpopmax (line 7422) | @Override
    method bzpopmin (line 7428) | @Override
    method blpop (line 7434) | @Override
    method blpop (line 7440) | @Override
    method brpop (line 7446) | @Override
    method brpop (line 7452) | @Override
    method zcount (line 7458) | @Override
    method zcount (line 7464) | @Override
    method zrangeByScore (line 7520) | @Deprecated
    method zrangeByScore (line 7531) | @Deprecated
    method zrangeByScore (line 7589) | @Deprecated
    method zrangeByScore (line 7601) | @Deprecated
    method zrangeByScoreWithScores (line 7658) | @Deprecated
    method zrangeByScoreWithScores (line 7669) | @Deprecated
    method zrangeByScoreWithScores (line 7727) | @Deprecated
    method zrangeByScoreWithScores (line 7739) | @Deprecated
    method zrevrangeByScore (line 7751) | @Deprecated
    method zrevrangeByScore (line 7762) | @Deprecated
    method zrevrangeByScore (line 7773) | @Deprecated
    method zrevrangeByScoreWithScores (line 7785) | @Deprecated
    method zrevrangeByScoreWithScores (line 7796) | @Deprecated
    method zrevrangeByScoreWithScores (line 7808) | @Deprecated
    method zrevrangeByScore (line 7820) | @Deprecated
    method zrevrangeByScoreWithScores (line 7832) | @Deprecated
    method zremrangeByRank (line 7852) | @Override
    method zremrangeByScore (line 7871) | @Override
    method zremrangeByScore (line 7877) | @Override
    method zunion (line 7890) | @Override
    method zunionWithScores (line 7903) | @Override
    method zunionstore (line 7939) | @Override
    method zunionstore (line 7976) | @Override
    method zinter (line 7989) | @Override
    method zinterWithScores (line 8002) | @Override
    method zintercard (line 8008) | @Override
    method zintercard (line 8014) | @Override
    method zinterstore (line 8050) | @Override
    method zinterstore (line 8087) | @Override
    method zlexcount (line 8093) | @Override
    method zrangeByLex (line 8103) | @Deprecated
    method zrangeByLex (line 8114) | @Deprecated
    method zrevrangeByLex (line 8126) | @Deprecated
    method zrevrangeByLex (line 8137) | @Deprecated
    method zremrangeByLex (line 8145) | @Override
    method zmpop (line 8151) | @Override
    method zmpop (line 8157) | @Override
    method bzmpop (line 8163) | @Override
    method bzmpop (line 8169) | @Override
    method strlen (line 8175) | @Override
    method lcs (line 8188) | @Override
    method lpushx (line 8194) | @Override
    method persist (line 8207) | @Override
    method rpushx (line 8213) | @Override
    method echo (line 8219) | @Override
    method linsert (line 8226) | @Override
    method brpoplpush (line 8243) | @Deprecated
    method setbit (line 8256) | @Override
    method getbit (line 8267) | @Override
    method setrange (line 8273) | @Override
    method getrange (line 8279) | @Override
    method bitpos (line 8285) | @Override
    method bitpos (line 8291) | @Override
    method role (line 8297) | @Override
    method configGet (line 8338) | @Override
    method configGet (line 8345) | @Override
    method configSet (line 8381) | @Override
    method configSet (line 8388) | @Override
    method configSet (line 8395) | @Override
    method publish (line 8404) | public long publish(final String channel, final String message) {
    method subscribe (line 8410) | public void subscribe(final JedisPubSub jedisPubSub, final String... c...
    method psubscribe (line 8414) | public void psubscribe(final JedisPubSub jedisPubSub, final String... ...
    method pubsubChannels (line 8418) | public List<String> pubsubChannels() {
    method pubsubChannels (line 8424) | public List<String> pubsubChannels(final String pattern) {
    method pubsubNumPat (line 8430) | public Long pubsubNumPat() {
    method pubsubNumSub (line 8436) | public Map<String, Long> pubsubNumSub(String... channels) {
    method pubsubShardChannels (line 8442) | public List<String> pubsubShardChannels() {
    method pubsubShardChannels (line 8448) | public List<String> pubsubShardChannels(final String pattern) {
    method pubsubShardNumSub (line 8454) | public Map<String, Long> pubsubShardNumSub(String... channels) {
    method eval (line 8460) | @Override
    method eval (line 8466) | @Override
    method evalReadonly (line 8472) | @Override
    method eval (line 8478) | @Override
    method evalsha (line 8484) | @Override
    method evalsha (line 8490) | @Override
    method evalshaReadonly (line 8496) | @Override
    method evalsha (line 8502) | @Override
    method scriptExists (line 8508) | @Override
    method scriptExists (line 8515) | @Override
    method scriptLoad (line 8521) | @Override
    method slowlogGet (line 8527) | @Override
    method slowlogGet (line 8533) | @Override
    method objectRefcount (line 8539) | @Override
    method objectEncoding (line 8545) | @Override
    method objectIdletime (line 8551) | @Override
    method objectHelp (line 8557) | @Override
    method objectFreq (line 8563) | @Override
    method bitcount (line 8569) | @Override
    method bitcount (line 8575) | @Override
    method bitcount (line 8581) | @Override
    method bitop (line 8587) | @Override
    method commandCount (line 8593) | @Override
    method commandDocs (line 8600) | @Override
    method commandGetKeys (line 8607) | @Override
    method commandGetKeysAndFlags (line 8614) | @Override
    method commandInfo (line 8621) | @Override
    method command (line 8628) | @Override
    method commandList (line 8635) | @Override
    method commandListFilterBy (line 8642) | @Override
    method sentinelMyId (line 8650) | @Override
    method sentinelMasters (line 8686) | @Override
    method sentinelMaster (line 8693) | @Override
    method sentinelSentinels (line 8699) | @Override
    method sentinelGetMasterAddrByName (line 8715) | @Override
    method sentinelReset (line 8728) | @Override
    method sentinelSlaves (line 8768) | @Override
    method sentinelReplicas (line 8776) | @Override
    method sentinelFailover (line 8783) | @Override
    method sentinelMonitor (line 8789) | @Override
    method sentinelRemove (line 8797) | @Override
    method sentinelSet (line 8803) | @Override
    method dump (line 8811) | @Override
    method restore (line 8817) | @Override
    method restore (line 8823) | @Override
    method pttl (line 8830) | @Override
    method psetex (line 8846) | @Deprecated
    method aclSetUser (line 8853) | @Override
    method aclSetUser (line 8860) | @Override
    method aclDelUser (line 8867) | @Override
    method aclGetUser (line 8874) | @Override
    method aclUsers (line 8881) | @Override
    method aclList (line 8888) | @Override
    method aclWhoAmI (line 8895) | @Override
    method aclCat (line 8902) | @Override
    method aclCat (line 8909) | @Override
    method aclLog (line 8916) | @Override
    method aclLog (line 8923) | @Override
    method aclLoad (line 8930) | @Override
    method aclSave (line 8937) | @Override
    method aclGenPass (line 8944) | @Override
    method aclGenPass (line 8950) | @Override
    method aclDryRun (line 8957) | @Override
    method aclDryRun (line 8969) | @Override
    method aclDryRunBinary (line 8979) | @Override
    method aclDryRunBinary (line 8991) | @Override
    method clientKill (line 9001) | @Override
    method clientGetname (line 9008) | @Override
    method clientList (line 9015) | @Override
    method clientList (line 9022) | @Override
    method clientList (line 9029) | @Override
    method clientInfo (line 9036) | @Override
    method clientSetInfo (line 9043) | @Override
    method clientSetname (line 9050) | @Override
    method migrate (line 9057) | @Override
    method migrate (line 9064) | @Override
    method migrate (line 9071) | @Override
    method migrate (line 9077) | @Override
    method scan (line 9083) | @Override
    method scan (line 9088) | @Override
    method scan (line 9093) | @Override
    method hscan (line 9099) | @Override
    method hscanNoValues (line 9106) | @Override
    method sscan (line 9112) | @Override
    method zscan (line 9118) | @Override
    method readonly (line 9124) | @Override
    method readwrite (line 9131) | @Override
    method clusterNodes (line 9138) | @Override
    method clusterMeet (line 9145) | @Override
    method clusterReset (line 9152) | @Override
    method clusterReset (line 9159) | @Override
    method clusterAddSlots (line 9166) | @Override
    method clusterDelSlots (line 9173) | @Override
    method clusterInfo (line 9180) | @Override
    method clusterGetKeysInSlot (line 9187) | @Override
    method clusterGetKeysInSlotBinary (line 9194) | @Override
    method clusterSetSlotNode (line 9201) | @Override
    method clusterSetSlotMigrating (line 9208) | @Override
    method clusterSetSlotImporting (line 9215) | @Override
    method clusterSetSlotStable (line 9222) | @Override
    method clusterForget (line 9229) | @Override
    method clusterFlushSlots (line 9236) | @Override
    method clusterKeySlot (line 9243) | @Override
    method clusterCountFailureReports (line 9250) | @Override
    method clusterCountKeysInSlot (line 9257) | @Override
    method clusterSaveConfig (line 9264) | @Override
    method clusterSetConfigEpoch (line 9271) | @Override
    method clusterBumpEpoch (line 9278) | @Override
    method clusterReplicate (line 9285) | @Override
    method clusterSlaves (line 9292) | @Override
    method clusterReplicas (line 9300) | @Override
    method clusterFailover (line 9307) | @Override
    method clusterFailover (line 9314) | @Override
    method clusterSlots (line 9321) | @Override
    method clusterShards (line 9329) | @Override
    method clusterMyId (line 9336) | @Override
    method clusterMyShardId (line 9343) | @Override
    method clusterLinks (line 9350) | @Override
    method clusterAddSlotsRange (line 9358) | @Override
    method clusterDelSlotsRange (line 9366) | @Override
    method asking (line 9374) | @Override
    method pfadd (line 9381) | @Override
    method pfcount (line 9387) | @Override
    method pfcount (line 9393) | @Override
    method pfmerge (line 9399) | @Override
    method fcall (line 9405) | @Override
    method fcallReadonly (line 9410) | @Override
    method functionDelete (line 9415) | @Override
    method functionLoad (line 9421) | @Override
    method functionLoadReplace (line 9427) | @Override
    method functionStats (line 9433) | @Override
    method functionFlush (line 9439) | @Override
    method functionFlush (line 9445) | @Override
    method functionKill (line 9451) | @Override
    method functionList (line 9457) | @Override
    method functionList (line 9463) | @Override
    method functionListWithCode (line 9469) | @Override
    method functionListWithCode (line 9474) | @Override
    method geoadd (line 9480) | @Override
    method geoadd (line 9487) | @Override
    method geoadd (line 9493) | @Override
    method geodist (line 9499) | @Override
    method geodist (line 9505) | @Override
    method geohash (line 9512) | @Override
    method geopos (line 9518) | @Override
    method georadius (line 9528) | @Deprecated
    method georadiusReadonly (line 9540) | @Deprecated
    method georadius (line 9552) | @Deprecated
    method georadiusStore (line 9564) | @Deprecated
    method georadiusReadonly (line 9576) | @Deprecated
    method georadiusByMember (line 9588) | @Deprecated
    method georadiusByMemberReadonly (line 9600) | @Deprecated
    method georadiusByMember (line 9612) | @Deprecated
    method georadiusByMemberStore (line 9624) | @Deprecated
    method georadiusByMemberReadonly (line 9636) | @Deprecated
    method geosearch (line 9644) | @Override
    method geosearch (line 9650) | @Override
    method geosearch (line 9656) | @Override
    method geosearch (line 9662) | @Override
    method geosearch (line 9668) | @Override
    method geosearchStore (line 9674) | @Override
    method geosearchStore (line 9680) | @Override
    method geosearchStore (line 9686) | @Override
    method geosearchStore (line 9692) | @Override
    method geosearchStore (line 9698) | @Override
    method geosearchStoreStoreDist (line 9704) | @Override
    method moduleLoad (line 9710) | @Override
    method moduleLoad (line 9717) | @Override
    method moduleLoadEx (line 9724) | @Override
    method moduleUnload (line 9732) | @Override
    method moduleList (line 9739) | @Override
    method bitfield (line 9746) | @Override
    method bitfieldReadonly (line 9752) | @Override
    method hstrlen (line 9758) | @Override
    method hexpire (line 9764) | @Override
    method hexpire (line 9770) | @Override
    method hpexpire (line 9776) | @Override
    method hpexpire (line 9782) | @Override
    method hexpireAt (line 9788) | @Override
    method hexpireAt (line 9794) | @Override
    method hpexpireAt (line 9800) | @Override
    method hpexpireAt (line 9806) | @Override
    method hexpireTime (line 9812) | @Override
    method hpexpireTime (line 9818) | @Override
    method httl (line 9824) | @Override
    method hpttl (line 9830) | @Override
    method hpersist (line 9836) | @Override
    method memoryDoctor (line 9842) | @Override
    method memoryUsage (line 9849) | @Override
    method memoryUsage (line 9856) | @Override
    method memoryPurge (line 9863) | @Override
    method memoryStats (line 9870) | @Override
    method lolwut (line 9877) | @Override
    method lolwut (line 9884) | @Override
    method reset (line 9891) | @Override
    method latencyDoctor (line 9897) | @Override
    method latencyLatest (line 9904) | public Map<String, LatencyLatestInfo> latencyLatest() {
    method latencyHistory (line 9910) | public List<LatencyHistoryInfo> latencyHistory(LatencyEvent event) {
    method latencyReset (line 9916) | public long latencyReset(LatencyEvent... events) {
    method hotkeysStart (line 9924) | @Override
    method hotkeysStop (line 9930) | @Override
    method hotkeysReset (line 9936) | @Override
    method hotkeysGet (line 9942) | @Override
    method xadd (line 9948) | @Override
    method xadd (line 9954) | @Override
    method xlen (line 9960) | @Override
    method xrange (line 9966) | @Override
    method xrange (line 9972) | @Override
    method xrevrange (line 9979) | @Override
    method xrevrange (line 9986) | @Override
    method xrange (line 9993) | @Override
    method xrange (line 9999) | @Override
    method xrevrange (line 10005) | @Override
    method xrevrange (line 10011) | @Override
    method xread (line 10017) | @Override
    method xreadAsMap (line 10023) | @Override
    method xack (line 10029) | @Override
    method xackdel (line 10035) | @Override
    method xackdel (line 10041) | @Override
    method xgroupCreate (line 10047) | @Override
    method xgroupSetID (line 10054) | @Override
    method xgroupDestroy (line 10060) | @Override
    method xgroupCreateConsumer (line 10066) | @Override
    method xgroupDelConsumer (line 10072) | @Override
    method xdel (line 10078) | @Override
    method xdelex (line 10084) | @Override
    method xdelex (line 10090) | @Override
    method xtrim (line 10096) | @Override
    method xtrim (line 10102) | @Override
    method xreadGroup (line 10108) | @Override
    method xreadGroupAsMap (line 10115) | @Override
    method xpending (line 10122) | @Override
    method xpending (line 10128) | @Override
    method xclaim (line 10134) | @Override
    method xclaimJustId (line 10141) | @Override
    method xautoclaim (line 10148) | @Override
    method xautoclaimJustId (line 10155) | @Override
    method xinfoStream (line 10162) | @Override
    method xinfoStreamFull (line 10167) | @Override
    method xcfgset (line 10173) | @Override
    method xinfoStreamFull (line 10179) | @Override
    method xinfoGroups (line 10185) | @Override
    method xinfoConsumers (line 10190) | @Override
    method xinfoConsumers2 (line 10195) | @Override
    method fcall (line 10200) | @Override
    method fcallReadonly (line 10206) | @Override
    method functionDelete (line 10212) | @Override
    method functionDump (line 10218) | @Override
    method functionListBinary (line 10224) | @Override
    method functionList (line 10230) | @Override
    method functionListWithCodeBinary (line 10236) | @Override
    method functionListWithCode (line 10242) | @Override
    method functionLoad (line 10248) | @Override
    method functionLoadReplace (line 10254) | @Override
    method functionRestore (line 10260) | @Override
    method functionRestore (line 10266) | @Override
    method functionStatsBinary (line 10272) | @Override
    method sendCommand (line 10278) | public Object sendCommand(ProtocolCommand cmd, String... args) {
    method sendBlockingCommand (line 10284) | public Object sendBlockingCommand(ProtocolCommand cmd, String... args) {
    method joinParameters (line 10295) | private static byte[][] joinParameters(int... params) {
    method joinParameters (line 10303) | private static byte[][] joinParameters(byte[] first, byte[][] rest) {
    method joinParameters (line 10310) | private static byte[][] joinParameters(byte[] first, byte[] second, by...
    method joinParameters (line 10318) | private static String[] joinParameters(String first, String[] rest) {
    method joinParameters (line 10325) | private static String[] joinParameters(String first, String second, St...
    method vadd (line 10334) | @Override
    method vadd (line 10340) | @Override
    method vaddFP32 (line 10346) | @Override
    method vaddFP32 (line 10352) | @Override
    method vadd (line 10358) | @Override
    method vaddFP32 (line 10364) | @Override
    method vsim (line 10370) | @Override
    method vsim (line 10376) | @Override
    method vsimWithScores (line 10382) | @Override
    method vsimWithScoresAndAttribs (line 10388) | @Override
    method vsimByElement (line 10394) | @Override
    method vsimByElement (line 10400) | @Override
    method vsimByElementWithScores (line 10406) | @Override
    method vsimByElementWithScoresAndAttribs (line 10412) | @Override
    method vdim (line 10418) | @Override
    method vcard (line 10424) | @Override
    method vemb (line 10430) | @Override
    method vembRaw (line 10436) | @Override
    method vrem (line 10442) | @Override
    method vlinks (line 10448) | @Override
    method vlinksWithScores (line 10454) | @Override
    method vrandmember (line 10460) | @Override
    method vrandmember (line 10466) | @Override
    method vgetattr (line 10472) | @Override
    method vsetattr (line 10478) | @Override
    method vinfo (line 10484) | @Override
    method vadd (line 10491) | @Override
    method vadd (line 10497) | @Override
    method vaddFP32 (line 10503) | @Override
    method vaddFP32 (line 10509) | @Override
    method vadd (line 10515) | @Override
    method vaddFP32 (line 10521) | @Override
    method vsim (line 10527) | @Override
    method vsim (line 10533) | @Override
    method vsimWithScores (line 10539) | @Override
    method vsimWithScoresAndAttribs (line 10545) | @Override
    method vsimByElement (line 10551) | @Override
    method vsimByElement (line 10557) | @Override
    method vsimByElementWithScores (line 10563) | @Override
    method vsimByElementWithScoresAndAttribs (line 10569) | @Override
    method vdim (line 10575) | @Override
    method vcard (line 10581) | @Override
    method vemb (line 10587) | @Override
    method vembRaw (line 10593) | @Override
    method vrem (line 10599) | @Override
    method vlinks (line 10605) | @Override
    method vlinksWithScores (line 10611) | @Override
    method vrandmember (line 10617) | @Override
    method vrandmember (line 10623) | @Override
    method vgetattr (line 10629) | @Override
    method vsetattr (line 10635) | @Override

FILE: src/main/java/redis/clients/jedis/JedisClientConfig.java
  type JedisClientConfig (line 10) | public interface JedisClientConfig {
    method getRedisProtocol (line 12) | default RedisProtocol getRedisProtocol() {
    method getConnectionTimeoutMillis (line 19) | default int getConnectionTimeoutMillis() {
    method getSocketTimeoutMillis (line 26) | default int getSocketTimeoutMillis() {
    method getBlockingSocketTimeoutMillis (line 34) | default int getBlockingSocketTimeoutMillis() {
    method getUser (line 41) | default String getUser() {
    method getPassword (line 45) | default String getPassword() {
    method getCredentialsProvider (line 50) | default Supplier<RedisCredentials> getCredentialsProvider() {
    method getAuthXManager (line 55) | default AuthXManager getAuthXManager() {
    method getDatabase (line 59) | default int getDatabase() {
    method getClientName (line 63) | default String getClientName() {
    method isSsl (line 70) | default boolean isSsl() {
    method getSslSocketFactory (line 74) | default SSLSocketFactory getSslSocketFactory() {
    method getSslParameters (line 78) | default SSLParameters getSslParameters() {
    method getSslOptions (line 88) | default SslOptions getSslOptions() {
    method getHostnameVerifier (line 92) | default HostnameVerifier getHostnameVerifier() {
    method getHostAndPortMapper (line 96) | default HostAndPortMapper getHostAndPortMapper() {
    method isReadOnlyForRedisClusterReplicas (line 107) | default boolean isReadOnlyForRedisClusterReplicas() {
    method getClientSetInfoConfig (line 115) | default ClientSetInfoConfig getClientSetInfoConfig() {

FILE: src/main/java/redis/clients/jedis/JedisCluster.java
  class JedisCluster (line 28) | @Deprecated
    method JedisCluster (line 52) | public JedisCluster(HostAndPort node) {
    method JedisCluster (line 64) | public JedisCluster(HostAndPort node, int timeout) {
    method JedisCluster (line 75) | public JedisCluster(HostAndPort node, int timeout, int maxAttempts) {
    method JedisCluster (line 79) | public JedisCluster(HostAndPort node, final GenericObjectPoolConfig<Co...
    method JedisCluster (line 83) | public JedisCluster(HostAndPort node, int timeout, final GenericObject...
    method JedisCluster (line 87) | public JedisCluster(HostAndPort node, int timeout, int maxAttempts,
    method JedisCluster (line 92) | public JedisCluster(HostAndPort node, int connectionTimeout, int soTim...
    method JedisCluster (line 97) | public JedisCluster(HostAndPort node, int connectionTimeout, int soTim...
    method JedisCluster (line 103) | public JedisCluster(HostAndPort node, int connectionTimeout, int soTim...
    method JedisCluster (line 109) | public JedisCluster(HostAndPort node, int connectionTimeout, int soTim...
    method JedisCluster (line 116) | public JedisCluster(HostAndPort node, int connectionTimeout, int soTim...
    method JedisCluster (line 123) | public JedisCluster(HostAndPort node, int connectionTimeout, int soTim...
    method JedisCluster (line 130) | public JedisCluster(HostAndPort node, final JedisClientConfig clientCo...
    method JedisCluster (line 142) | public JedisCluster(Set<HostAndPort> nodes) {
    method JedisCluster (line 154) | public JedisCluster(Set<HostAndPort> nodes, int timeout) {
    method JedisCluster (line 165) | public JedisCluster(Set<HostAndPort> nodes, int timeout, int maxAttemp...
    method JedisCluster (line 169) | public JedisCluster(Set<HostAndPort> nodes, String user, String passwo...
    method JedisCluster (line 173) | public JedisCluster(Set<HostAndPort> nodes, String user, String password,
    method JedisCluster (line 179) | public JedisCluster(Set<HostAndPort> nodes, final GenericObjectPoolCon...
    method JedisCluster (line 183) | public JedisCluster(Set<HostAndPort> nodes, int timeout,
    method JedisCluster (line 188) | public JedisCluster(Set<HostAndPort> clusterNodes, int timeout, int ma...
    method JedisCluster (line 193) | public JedisCluster(Set<HostAndPort> clusterNodes, int connectionTimeo...
    method JedisCluster (line 198) | public JedisCluster(Set<HostAndPort> clusterNodes, int connectionTimeo...
    method JedisCluster (line 203) | public JedisCluster(Set<HostAndPort> clusterNodes, int connectionTimeo...
   
Condensed preview — 1030 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (8,231K chars).
[
  {
    "path": ".github/CONTRIBUTING.md",
    "chars": 4694,
    "preview": "# How to use Jedis Github Issue\n\n* Github issues SHOULD BE USED to report bugs and for DETAILED feature requests. Everyt"
  },
  {
    "path": ".github/ISSUE_TEMPLATE",
    "chars": 762,
    "preview": "<!--\nGithub issues should be used to report bugs and for detailed feature requests. \nEverything else belongs in the [Jed"
  },
  {
    "path": ".github/actions/run-tests/action.yml",
    "chars": 7408,
    "preview": "# Note: this action is used as a part of redis oss release and test automation in\n# redis-developer/redis-oss-release-au"
  },
  {
    "path": ".github/codecov.yml",
    "chars": 779,
    "preview": "codecov:                                    # see https://docs.codecov.com/docs/codecovyml-reference\n  branch: master\n\nc"
  },
  {
    "path": ".github/dependabot.yml",
    "chars": 110,
    "preview": "version: 2\n\nupdates:\n  - package-ecosystem: \"maven\"\n    directory: \"/\"\n    schedule:\n      interval: \"weekly\"\n"
  },
  {
    "path": ".github/release-drafter-config.yml",
    "chars": 1056,
    "preview": "name-template: '$NEXT_MINOR_VERSION'\ntag-template: 'v$NEXT_MINOR_VERSION'\nfilter-by-commitish: true\ncommitish: master\nau"
  },
  {
    "path": ".github/workflows/codeql-analysis.yml",
    "chars": 934,
    "preview": "name: \"CodeQL\"\n\non:\n  workflow_dispatch:\n  push:\n    branches: [ master ]\n  pull_request:\n    # The branches below must "
  },
  {
    "path": ".github/workflows/docs.yml",
    "chars": 899,
    "preview": "name: Publish Docs\non:\n  push:\n    branches: [\"master\"]\npermissions:\n  contents: read\n  pages: write\n  id-token: write\nc"
  },
  {
    "path": ".github/workflows/doctests.yml",
    "chars": 942,
    "preview": "name: Documentation Tests\n\non:\n  push:\n    branches:\n      - master\n      - 'emb-examples'\n  pull_request:\n  workflow_di"
  },
  {
    "path": ".github/workflows/format_check.yml",
    "chars": 2243,
    "preview": "name: Java Format Check\n\non:\n  workflow_dispatch:\n  pull_request:\n    paths:\n      - '**/*.java' # Only trigger for Java"
  },
  {
    "path": ".github/workflows/integration.yml",
    "chars": 1268,
    "preview": "---\n\nname: Build and Test using local environment\n\non:\n  push:\n    paths-ignore:\n      - 'docs/**'\n      - '**/*.md'\n   "
  },
  {
    "path": ".github/workflows/release-drafter.yml",
    "chars": 584,
    "preview": "name: Release Drafter\n\non:\n  push:\n    # branches to consider in the event; optional, defaults to all\n    branches:\n    "
  },
  {
    "path": ".github/workflows/snapshot.yml",
    "chars": 1005,
    "preview": "---\n\nname: Publish Snapshot\n\non:\n  push:\n    branches:\n      - master\n      - '[0-9].x'\n  workflow_dispatch:\n\njobs:\n\n  s"
  },
  {
    "path": ".github/workflows/stale-issues.yml",
    "chars": 966,
    "preview": "name: \"Close stale issues\"\non:\n  schedule:\n  - cron: \"0 0 * * *\"\n\npermissions: {}\njobs:\n  stale:\n    permissions:\n      "
  },
  {
    "path": ".github/workflows/test-on-docker.yml",
    "chars": 2328,
    "preview": "---\n\nname: Build and Test using a containerized environment\nrun-name: \"Build and Test using ${{ github.event.inputs.clie"
  },
  {
    "path": ".github/workflows/version-and-release.yml",
    "chars": 1278,
    "preview": "name: Release\n\non:\n  release:\n    types: [published]\n\njobs:\n  build:\n    runs-on: ubuntu-latest\n\n    steps:\n      - uses"
  },
  {
    "path": ".gitignore",
    "chars": 167,
    "preview": ".classpath\n*.iml\n*.ipr\n*.iws\nnb*\n.project\n.settings/\n.gradle/\ntarget/\nbuild/\nbin/\ntags\n.idea\n.run\n*.aof\n*.rdb\nredis-git\n"
  },
  {
    "path": "LICENSE",
    "chars": 1074,
    "preview": "MIT License\n\nCopyright (c) 2021-2023, Redis, inc.\n\nPermission is hereby granted, free of charge, to any person obtaining"
  },
  {
    "path": "Makefile",
    "chars": 4125,
    "preview": "PATH := ./redis-git/src:${PATH}\n\n# Supported test env versions\nSUPPORTED_TEST_ENV_VERSIONS := 8.6 8.4 8.2 8.0 7.4 7.2 6."
  },
  {
    "path": "README.md",
    "chars": 6779,
    "preview": "# Jedis\n\n[![Release](https://img.shields.io/github/release/redis/jedis.svg?sort=semver)](https://github.com/redis/jedis/"
  },
  {
    "path": "docs/Dockerfile",
    "chars": 91,
    "preview": "FROM squidfunk/mkdocs-material\nCOPY requirements.txt .\nRUN pip install -r requirements.txt\n"
  },
  {
    "path": "docs/README.md",
    "chars": 492,
    "preview": "# Jedis Documentation\n\nThis documentation uses [MkDocs](https://www.mkdocs.org/) to generate the static site.\n\nSee [mkdo"
  },
  {
    "path": "docs/advanced-usage.md",
    "chars": 13839,
    "preview": "# Advanced Usage\n\n## Transactions\n\nTo do transactions in Jedis, you have to wrap operations in a transaction block, very"
  },
  {
    "path": "docs/css/extra.css",
    "chars": 63,
    "preview": "/* extra.css */\n.md-header {\n    background-color: #FB2A2C; \n}\n"
  },
  {
    "path": "docs/failover.md",
    "chars": 35831,
    "preview": "# Automatic Failover and Failback with Jedis\n\n> API was significantly changed in 7.0.0. Please follow the migration guid"
  },
  {
    "path": "docs/faq.md",
    "chars": 2391,
    "preview": "# Frequently Asked Questions\n\n## If you get `java.net.SocketTimeoutException: Read timed out` exception\n\nTry setting own"
  },
  {
    "path": "docs/index.md",
    "chars": 25,
    "preview": "{% include 'README.md' %}"
  },
  {
    "path": "docs/jedis-maven.md",
    "chars": 761,
    "preview": "## Use Jedis as a maven dependency:\n\n### Official Releases\n\n```xml\n<dependency>\n    <groupId>redis.clients</groupId>\n   "
  },
  {
    "path": "docs/migration-guides/v3-to-v4-primitives.md",
    "chars": 8505,
    "preview": "## The following methods now return primitive values:\n\\>> `long`/`boolean`/`double` instead of `Long`/`Boolean`/`Double`"
  },
  {
    "path": "docs/migration-guides/v3-to-v4-zset-list.md",
    "chars": 3542,
    "preview": "## Each of the following sorted set methods now return a Java `List` instead of a `Set`:\n\n- zrange(byte[] key, long star"
  },
  {
    "path": "docs/migration-guides/v3-to-v4.md",
    "chars": 6639,
    "preview": "# Jedis 4 Breaking Changes\n\n- The `BinaryJedis` and `BinaryJedisCluster` classes have been removed.\n\n  The methods from "
  },
  {
    "path": "docs/migration-guides/v4-to-v5.md",
    "chars": 9257,
    "preview": "# Jedis 5 Breaking Changes\n\n- All variants of `blmpop` and `bzmpop` methods now take `double timeout` parameter instead "
  },
  {
    "path": "docs/migration-guides/v5-to-v6.md",
    "chars": 8986,
    "preview": "# Jedis 6.0.0 Migration Guide\n\nThis guide helps you migrate from Jedis 5.x to Jedis 6.0.0. Version 6.0.0 includes breaki"
  },
  {
    "path": "docs/migration-guides/v6-to-v7.md",
    "chars": 7450,
    "preview": "# Jedis 7.0.0 Migration Guide\n\nThis guide helps you migrate from Jedis 6.2.0 to Jedis 7.0.0. Version 7.0.0 includes seve"
  },
  {
    "path": "docs/redisearch.md",
    "chars": 2547,
    "preview": "# RediSearch Jedis Quick Start\n\nTo use RediSearch features with Jedis, you'll need to use an implementation of RediSearc"
  },
  {
    "path": "docs/redisjson.md",
    "chars": 3998,
    "preview": "# RedisJSON Jedis Quick Start\n\nJedis supports [RedisJSON](https://redis.io/docs/latest/develop/data-types/json/) and [Re"
  },
  {
    "path": "docs/requirements.txt",
    "chars": 100,
    "preview": "mkdocs~=1.6\nmkdocs-material~=9.5\npymdown-extensions~=10.8\nmkdocs-macros-plugin~=1.0\nmkdocs-glightbox"
  },
  {
    "path": "docs/transactions-multi.md",
    "chars": 5500,
    "preview": "# Transactions/Multi\n\n## Overview\n\nTransactions guarantee that all the included commands will execute to completion with"
  },
  {
    "path": "docs/tutorials_examples.md",
    "chars": 902,
    "preview": "# Tutorials and Examples\n\n## General\n\n* Redis for Java Developers: <https://university.redis.io/learningpath/kllayn0wtd8"
  },
  {
    "path": "docs/verifying-artifacts.md",
    "chars": 1655,
    "preview": "## Verifying contents\nJedis artifacts published on Maven central are signed. For each artifact, there is an associated s"
  },
  {
    "path": "formatter-pom.xml",
    "chars": 1076,
    "preview": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocat"
  },
  {
    "path": "hbase-formatter.xml",
    "chars": 30892,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<profiles version=\"12\">\n<profile kind=\"CodeFormatterProfile\" name"
  },
  {
    "path": "mkdocs.yml",
    "chars": 1577,
    "preview": "site_name: Jedis\nrepo_name: Jedis\nsite_author: Redis, Inc.\nsite_description: Jedis is a Redis client for the JVM.\nrepo_u"
  },
  {
    "path": "pom.xml",
    "chars": 22463,
    "preview": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocat"
  },
  {
    "path": "src/main/java/redis/clients/jedis/AbstractPipeline.java",
    "chars": 657,
    "preview": "package redis.clients.jedis;\n\nimport java.io.Closeable;\n\npublic abstract class AbstractPipeline extends PipeliningBase i"
  },
  {
    "path": "src/main/java/redis/clients/jedis/AbstractTransaction.java",
    "chars": 1243,
    "preview": "package redis.clients.jedis;\n\nimport java.io.Closeable;\nimport java.util.List;\n\npublic abstract class AbstractTransactio"
  },
  {
    "path": "src/main/java/redis/clients/jedis/BinaryJedisPubSub.java",
    "chars": 185,
    "preview": "package redis.clients.jedis;\n\npublic abstract class BinaryJedisPubSub extends JedisPubSubBase<byte[]> {\n\n  @Override\n  p"
  },
  {
    "path": "src/main/java/redis/clients/jedis/BinaryJedisShardedPubSub.java",
    "chars": 199,
    "preview": "package redis.clients.jedis;\n\npublic abstract class BinaryJedisShardedPubSub extends JedisShardedPubSubBase<byte[]> {\n\n "
  },
  {
    "path": "src/main/java/redis/clients/jedis/Builder.java",
    "chars": 108,
    "preview": "package redis.clients.jedis;\n\npublic abstract class Builder<T> {\n\n  public abstract T build(Object data);\n}\n"
  },
  {
    "path": "src/main/java/redis/clients/jedis/BuilderFactory.java",
    "chars": 83027,
    "preview": "package redis.clients.jedis;\n\nimport java.io.Serializable;\nimport java.util.*;\nimport java.util.stream.Collectors;\n\nimpo"
  },
  {
    "path": "src/main/java/redis/clients/jedis/ClientSetInfoConfig.java",
    "chars": 4864,
    "preview": "package redis.clients.jedis;\n\nimport redis.clients.jedis.exceptions.JedisValidationException;\n\n/**\n * Configuration for "
  },
  {
    "path": "src/main/java/redis/clients/jedis/ClusterCommandObjects.java",
    "chars": 29299,
    "preview": "package redis.clients.jedis;\n\nimport redis.clients.jedis.params.IParams;\nimport redis.clients.jedis.params.MSetExParams;"
  },
  {
    "path": "src/main/java/redis/clients/jedis/ClusterPipeline.java",
    "chars": 5076,
    "preview": "package redis.clients.jedis;\n\nimport java.time.Duration;\nimport java.util.Set;\nimport org.apache.commons.pool2.impl.Gene"
  },
  {
    "path": "src/main/java/redis/clients/jedis/CommandArguments.java",
    "chars": 8248,
    "preview": "package redis.clients.jedis;\n\nimport java.util.*;\n\nimport redis.clients.jedis.annots.Experimental;\nimport redis.clients."
  },
  {
    "path": "src/main/java/redis/clients/jedis/CommandFlagsRegistry.java",
    "chars": 6249,
    "preview": "package redis.clients.jedis;\n\nimport java.util.EnumSet;\n\n/**\n * Registry interface for command flags. Provides a mapping"
  },
  {
    "path": "src/main/java/redis/clients/jedis/CommandKeyArgumentPreProcessor.java",
    "chars": 278,
    "preview": "package redis.clients.jedis;\n\nimport redis.clients.jedis.annots.Experimental;\n\n@Experimental\npublic interface CommandKey"
  },
  {
    "path": "src/main/java/redis/clients/jedis/CommandObject.java",
    "chars": 1294,
    "preview": "package redis.clients.jedis;\n\nimport java.util.Iterator;\nimport redis.clients.jedis.args.Rawable;\n\npublic class CommandO"
  },
  {
    "path": "src/main/java/redis/clients/jedis/CommandObjects.java",
    "chars": 251875,
    "preview": "package redis.clients.jedis;\n\nimport static redis.clients.jedis.Protocol.Command.*;\nimport static redis.clients.jedis.Pr"
  },
  {
    "path": "src/main/java/redis/clients/jedis/Connection.java",
    "chars": 19422,
    "preview": "package redis.clients.jedis;\n\nimport static redis.clients.jedis.util.SafeEncoder.encode;\n\nimport java.io.Closeable;\nimpo"
  },
  {
    "path": "src/main/java/redis/clients/jedis/ConnectionFactory.java",
    "chars": 7042,
    "preview": "package redis.clients.jedis;\n\nimport org.apache.commons.pool2.PooledObject;\nimport org.apache.commons.pool2.PooledObject"
  },
  {
    "path": "src/main/java/redis/clients/jedis/ConnectionPool.java",
    "chars": 2926,
    "preview": "package redis.clients.jedis;\n\nimport org.apache.commons.pool2.PooledObjectFactory;\nimport org.apache.commons.pool2.impl."
  },
  {
    "path": "src/main/java/redis/clients/jedis/ConnectionPoolConfig.java",
    "chars": 482,
    "preview": "package redis.clients.jedis;\n\nimport java.time.Duration;\nimport org.apache.commons.pool2.impl.GenericObjectPoolConfig;\n\n"
  },
  {
    "path": "src/main/java/redis/clients/jedis/DefaultJedisClientConfig.java",
    "chars": 13505,
    "preview": "package redis.clients.jedis;\n\nimport java.net.URI;\nimport java.util.function.Supplier;\nimport javax.net.ssl.HostnameVeri"
  },
  {
    "path": "src/main/java/redis/clients/jedis/DefaultJedisSocketFactory.java",
    "chars": 6007,
    "preview": "package redis.clients.jedis;\n\nimport java.io.IOException;\nimport java.net.InetAddress;\nimport java.net.InetSocketAddress"
  },
  {
    "path": "src/main/java/redis/clients/jedis/DefaultRedisCredentials.java",
    "chars": 889,
    "preview": "package redis.clients.jedis;\n\npublic final class DefaultRedisCredentials implements RedisCredentials {\n\n  private final "
  },
  {
    "path": "src/main/java/redis/clients/jedis/DefaultRedisCredentialsProvider.java",
    "chars": 467,
    "preview": "package redis.clients.jedis;\n\npublic final class DefaultRedisCredentialsProvider implements RedisCredentialsProvider {\n\n"
  },
  {
    "path": "src/main/java/redis/clients/jedis/DriverInfo.java",
    "chars": 9455,
    "preview": "package redis.clients.jedis;\n\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Collections;\nimport "
  },
  {
    "path": "src/main/java/redis/clients/jedis/Endpoint.java",
    "chars": 100,
    "preview": "package redis.clients.jedis;\n\npublic interface Endpoint {\n\n  String getHost();\n\n  int getPort();\n\n}\n"
  },
  {
    "path": "src/main/java/redis/clients/jedis/GeoCoordinate.java",
    "chars": 1145,
    "preview": "package redis.clients.jedis;\n\npublic class GeoCoordinate {\n\n  private double longitude;\n  private double latitude;\n\n  pu"
  },
  {
    "path": "src/main/java/redis/clients/jedis/HostAndPort.java",
    "chars": 1360,
    "preview": "package redis.clients.jedis;\n\nimport java.io.Serializable;\n\npublic class HostAndPort implements Serializable, Endpoint {"
  },
  {
    "path": "src/main/java/redis/clients/jedis/HostAndPortMapper.java",
    "chars": 484,
    "preview": "package redis.clients.jedis;\n\n/**\n * An interface for mapping Redis node addresses.\n * <p>\n * It is used to translate an"
  },
  {
    "path": "src/main/java/redis/clients/jedis/Jedis.java",
    "chars": 398782,
    "preview": "package redis.clients.jedis;\n\nimport static redis.clients.jedis.Protocol.Command.*;\nimport static redis.clients.jedis.Pr"
  },
  {
    "path": "src/main/java/redis/clients/jedis/JedisClientConfig.java",
    "chars": 2757,
    "preview": "package redis.clients.jedis;\n\nimport java.util.function.Supplier;\nimport javax.net.ssl.HostnameVerifier;\nimport javax.ne"
  },
  {
    "path": "src/main/java/redis/clients/jedis/JedisCluster.java",
    "chars": 19997,
    "preview": "package redis.clients.jedis;\n\nimport java.time.Duration;\nimport java.util.Collections;\nimport java.util.Map;\nimport java"
  },
  {
    "path": "src/main/java/redis/clients/jedis/JedisClusterInfoCache.java",
    "chars": 16190,
    "preview": "package redis.clients.jedis;\n\nimport java.time.Duration;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport jav"
  },
  {
    "path": "src/main/java/redis/clients/jedis/JedisFactory.java",
    "chars": 10448,
    "preview": "package redis.clients.jedis;\n\nimport java.net.URI;\n\nimport javax.net.ssl.HostnameVerifier;\nimport javax.net.ssl.SSLParam"
  },
  {
    "path": "src/main/java/redis/clients/jedis/JedisMetaInfo.java",
    "chars": 1014,
    "preview": "package redis.clients.jedis;\n\nimport java.io.InputStream;\nimport java.util.Properties;\nimport org.slf4j.LoggerFactory;\n\n"
  },
  {
    "path": "src/main/java/redis/clients/jedis/JedisMonitor.java",
    "chars": 381,
    "preview": "package redis.clients.jedis;\n\npublic abstract class JedisMonitor {\n\n  protected Connection client;\n\n  public void procee"
  },
  {
    "path": "src/main/java/redis/clients/jedis/JedisPool.java",
    "chars": 19172,
    "preview": "package redis.clients.jedis;\n\nimport java.net.URI;\nimport java.util.function.Consumer;\nimport java.util.function.Functio"
  },
  {
    "path": "src/main/java/redis/clients/jedis/JedisPoolConfig.java",
    "chars": 979,
    "preview": "package redis.clients.jedis;\n\nimport java.time.Duration;\nimport org.apache.commons.pool2.impl.GenericObjectPoolConfig;\n\n"
  },
  {
    "path": "src/main/java/redis/clients/jedis/JedisPooled.java",
    "chars": 22526,
    "preview": "package redis.clients.jedis;\n\nimport java.net.URI;\nimport javax.net.ssl.HostnameVerifier;\nimport javax.net.ssl.SSLParame"
  },
  {
    "path": "src/main/java/redis/clients/jedis/JedisPubSub.java",
    "chars": 245,
    "preview": "package redis.clients.jedis;\n\nimport redis.clients.jedis.util.SafeEncoder;\n\npublic abstract class JedisPubSub extends Je"
  },
  {
    "path": "src/main/java/redis/clients/jedis/JedisPubSubBase.java",
    "chars": 7346,
    "preview": "package redis.clients.jedis;\n\nimport static redis.clients.jedis.Protocol.ResponseKeyword.*;\n\nimport java.util.Arrays;\nim"
  },
  {
    "path": "src/main/java/redis/clients/jedis/JedisSafeAuthenticator.java",
    "chars": 4186,
    "preview": "package redis.clients.jedis;\n\nimport java.util.Queue;\nimport java.util.concurrent.ConcurrentLinkedQueue;\nimport java.uti"
  },
  {
    "path": "src/main/java/redis/clients/jedis/JedisSentinelPool.java",
    "chars": 18040,
    "preview": "package redis.clients.jedis;\n\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Collection;\nimport j"
  },
  {
    "path": "src/main/java/redis/clients/jedis/JedisSentineled.java",
    "chars": 4175,
    "preview": "package redis.clients.jedis;\n\nimport java.util.Set;\nimport org.apache.commons.pool2.impl.GenericObjectPoolConfig;\nimport"
  },
  {
    "path": "src/main/java/redis/clients/jedis/JedisShardedPubSub.java",
    "chars": 259,
    "preview": "package redis.clients.jedis;\n\nimport redis.clients.jedis.util.SafeEncoder;\n\npublic abstract class JedisShardedPubSub ext"
  },
  {
    "path": "src/main/java/redis/clients/jedis/JedisShardedPubSubBase.java",
    "chars": 4119,
    "preview": "package redis.clients.jedis;\n\nimport static redis.clients.jedis.Protocol.ResponseKeyword.*;\n\nimport java.util.Arrays;\nim"
  },
  {
    "path": "src/main/java/redis/clients/jedis/JedisSocketFactory.java",
    "chars": 603,
    "preview": "package redis.clients.jedis;\n\nimport java.net.Socket;\nimport redis.clients.jedis.exceptions.JedisConnectionException;\n\n/"
  },
  {
    "path": "src/main/java/redis/clients/jedis/Module.java",
    "chars": 834,
    "preview": "package redis.clients.jedis;\n\n// TODO: 'resps' package\n// TODO: remove\npublic class Module {\n\n  private final String nam"
  },
  {
    "path": "src/main/java/redis/clients/jedis/MultiDbClient.java",
    "chars": 13257,
    "preview": "package redis.clients.jedis;\n\nimport redis.clients.jedis.MultiDbConfig.DatabaseConfig;\nimport redis.clients.jedis.annots"
  },
  {
    "path": "src/main/java/redis/clients/jedis/MultiDbConfig.java",
    "chars": 59679,
    "preview": "package redis.clients.jedis;\n\nimport io.github.resilience4j.circuitbreaker.CallNotPermittedException;\nimport java.time.D"
  },
  {
    "path": "src/main/java/redis/clients/jedis/MultiNodePipelineBase.java",
    "chars": 6986,
    "preview": "package redis.clients.jedis;\n\nimport java.util.Iterator;\nimport java.util.LinkedHashMap;\nimport java.util.LinkedList;\nim"
  },
  {
    "path": "src/main/java/redis/clients/jedis/Pipeline.java",
    "chars": 6373,
    "preview": "package redis.clients.jedis;\n\nimport java.io.Closeable;\nimport java.util.ArrayList;\nimport java.util.LinkedList;\nimport "
  },
  {
    "path": "src/main/java/redis/clients/jedis/PipeliningBase.java",
    "chars": 167532,
    "preview": "package redis.clients.jedis;\n\nimport java.util.List;\nimport java.util.Map;\nimport java.util.Set;\nimport org.json.JSONArr"
  },
  {
    "path": "src/main/java/redis/clients/jedis/Protocol.java",
    "chars": 15699,
    "preview": "package redis.clients.jedis;\n\nimport java.io.IOException;\nimport java.nio.charset.Charset;\nimport java.nio.charset.Stand"
  },
  {
    "path": "src/main/java/redis/clients/jedis/RedisClient.java",
    "chars": 5774,
    "preview": "package redis.clients.jedis;\n\nimport java.net.URI;\n\nimport redis.clients.jedis.builders.StandaloneClientBuilder;\nimport "
  },
  {
    "path": "src/main/java/redis/clients/jedis/RedisClusterClient.java",
    "chars": 16160,
    "preview": "package redis.clients.jedis;\n\nimport java.time.Duration;\nimport java.util.Collections;\nimport java.util.List;\nimport jav"
  },
  {
    "path": "src/main/java/redis/clients/jedis/RedisCredentials.java",
    "chars": 214,
    "preview": "package redis.clients.jedis;\n\npublic interface RedisCredentials {\n\n  /**\n   * @return Redis ACL user\n   */\n  default Str"
  },
  {
    "path": "src/main/java/redis/clients/jedis/RedisCredentialsProvider.java",
    "chars": 846,
    "preview": "package redis.clients.jedis;\n\nimport java.util.function.Supplier;\n\npublic interface RedisCredentialsProvider extends Sup"
  },
  {
    "path": "src/main/java/redis/clients/jedis/RedisProtocol.java",
    "chars": 242,
    "preview": "package redis.clients.jedis;\n\npublic enum RedisProtocol {\n\n  RESP2(\"2\"),\n  RESP3(\"3\");\n\n  private final String version;\n"
  },
  {
    "path": "src/main/java/redis/clients/jedis/RedisSentinelClient.java",
    "chars": 2497,
    "preview": "package redis.clients.jedis;\n\nimport redis.clients.jedis.builders.SentinelClientBuilder;\nimport redis.clients.jedis.csc."
  },
  {
    "path": "src/main/java/redis/clients/jedis/ReliableTransaction.java",
    "chars": 6521,
    "preview": "package redis.clients.jedis;\n\nimport static redis.clients.jedis.Protocol.Command.DISCARD;\nimport static redis.clients.je"
  },
  {
    "path": "src/main/java/redis/clients/jedis/Response.java",
    "chars": 2367,
    "preview": "package redis.clients.jedis;\n\nimport java.util.function.Supplier;\nimport redis.clients.jedis.exceptions.JedisDataExcepti"
  },
  {
    "path": "src/main/java/redis/clients/jedis/SSLSocketWrapper.java",
    "chars": 9130,
    "preview": "package redis.clients.jedis;\n\nimport java.io.IOException;\nimport java.io.InputStream;\nimport java.io.OutputStream;\nimpor"
  },
  {
    "path": "src/main/java/redis/clients/jedis/ScanIteration.java",
    "chars": 1770,
    "preview": "package redis.clients.jedis;\n\nimport java.util.Collection;\nimport java.util.function.Function;\n\nimport redis.clients.jed"
  },
  {
    "path": "src/main/java/redis/clients/jedis/SslOptions.java",
    "chars": 19083,
    "preview": "package redis.clients.jedis;\n\nimport java.io.File;\nimport java.io.FileInputStream;\nimport java.io.IOException;\nimport ja"
  },
  {
    "path": "src/main/java/redis/clients/jedis/SslVerifyMode.java",
    "chars": 406,
    "preview": "package redis.clients.jedis;\n\n/**\n * Enumeration of SSL/TLS hostname verification modes.\n */\npublic enum SslVerifyMode {"
  },
  {
    "path": "src/main/java/redis/clients/jedis/StaticCommandFlagsRegistry.java",
    "chars": 8817,
    "preview": "package redis.clients.jedis;\n\nimport redis.clients.jedis.annots.Internal;\nimport redis.clients.jedis.args.Rawable;\nimpor"
  },
  {
    "path": "src/main/java/redis/clients/jedis/StaticCommandFlagsRegistryInitializer.java",
    "chars": 61476,
    "preview": "package redis.clients.jedis;\n\nimport java.util.EnumSet;\nimport static redis.clients.jedis.StaticCommandFlagsRegistry.EMP"
  },
  {
    "path": "src/main/java/redis/clients/jedis/StreamEntryID.java",
    "chars": 4430,
    "preview": "package redis.clients.jedis;\n\nimport java.io.IOException;\nimport java.io.Serializable;\nimport redis.clients.jedis.util.S"
  },
  {
    "path": "src/main/java/redis/clients/jedis/Transaction.java",
    "chars": 7624,
    "preview": "package redis.clients.jedis;\n\nimport static redis.clients.jedis.Protocol.Command.DISCARD;\nimport static redis.clients.je"
  },
  {
    "path": "src/main/java/redis/clients/jedis/UnifiedJedis.java",
    "chars": 194188,
    "preview": "package redis.clients.jedis;\n\nimport java.net.URI;\nimport java.time.Duration;\nimport java.util.List;\nimport java.util.Ma"
  },
  {
    "path": "src/main/java/redis/clients/jedis/annots/Experimental.java",
    "chars": 673,
    "preview": "package redis.clients.jedis.annots;\n\nimport java.lang.annotation.Documented;\nimport java.lang.annotation.ElementType;\nim"
  },
  {
    "path": "src/main/java/redis/clients/jedis/annots/Internal.java",
    "chars": 626,
    "preview": "package redis.clients.jedis.annots;\n\nimport java.lang.annotation.Documented;\nimport java.lang.annotation.ElementType;\nim"
  },
  {
    "path": "src/main/java/redis/clients/jedis/annots/VisibleForTesting.java",
    "chars": 428,
    "preview": "package redis.clients.jedis.annots;\n\nimport java.lang.annotation.Documented;\nimport java.lang.annotation.ElementType;\nim"
  },
  {
    "path": "src/main/java/redis/clients/jedis/args/BitCountOption.java",
    "chars": 359,
    "preview": "package redis.clients.jedis.args;\n\nimport redis.clients.jedis.util.SafeEncoder;\n\n/**\n * The options for {@code BITCOUNT}"
  },
  {
    "path": "src/main/java/redis/clients/jedis/args/BitOP.java",
    "chars": 374,
    "preview": "package redis.clients.jedis.args;\n\nimport redis.clients.jedis.util.SafeEncoder;\n\n/**\n * Bit operations for {@code BITOP}"
  },
  {
    "path": "src/main/java/redis/clients/jedis/args/ClientAttributeOption.java",
    "chars": 453,
    "preview": "package redis.clients.jedis.args;\n\nimport redis.clients.jedis.util.SafeEncoder;\n\n/**\n * CLIENT SETINFO command attr opti"
  },
  {
    "path": "src/main/java/redis/clients/jedis/args/ClientPauseMode.java",
    "chars": 350,
    "preview": "package redis.clients.jedis.args;\n\nimport redis.clients.jedis.util.SafeEncoder;\n\n/**\n * Client pause supported modes.\n *"
  },
  {
    "path": "src/main/java/redis/clients/jedis/args/ClientType.java",
    "chars": 341,
    "preview": "package redis.clients.jedis.args;\n\nimport redis.clients.jedis.util.SafeEncoder;\n\npublic enum ClientType implements Rawab"
  },
  {
    "path": "src/main/java/redis/clients/jedis/args/ClusterFailoverOption.java",
    "chars": 494,
    "preview": "package redis.clients.jedis.args;\n\nimport redis.clients.jedis.util.SafeEncoder;\n\n/**\n * Enumeration of cluster failover "
  },
  {
    "path": "src/main/java/redis/clients/jedis/args/ClusterResetType.java",
    "chars": 630,
    "preview": "package redis.clients.jedis.args;\n\nimport redis.clients.jedis.util.SafeEncoder;\n\n/**\n * Reset type for command cluster r"
  },
  {
    "path": "src/main/java/redis/clients/jedis/args/ExpiryOption.java",
    "chars": 664,
    "preview": "package redis.clients.jedis.args;\n\nimport redis.clients.jedis.util.SafeEncoder;\n\n/**\n * Enumeration of setting expiratio"
  },
  {
    "path": "src/main/java/redis/clients/jedis/args/FlushMode.java",
    "chars": 434,
    "preview": "package redis.clients.jedis.args;\n\nimport redis.clients.jedis.util.SafeEncoder;\n\n/**\n * Enum object describing flushing "
  },
  {
    "path": "src/main/java/redis/clients/jedis/args/FunctionRestorePolicy.java",
    "chars": 765,
    "preview": "package redis.clients.jedis.args;\n\nimport redis.clients.jedis.util.SafeEncoder;\n\npublic enum FunctionRestorePolicy imple"
  },
  {
    "path": "src/main/java/redis/clients/jedis/args/GeoUnit.java",
    "chars": 349,
    "preview": "package redis.clients.jedis.args;\n\nimport java.util.Locale;\nimport redis.clients.jedis.util.SafeEncoder;\n\npublic enum Ge"
  },
  {
    "path": "src/main/java/redis/clients/jedis/args/HotkeysMetric.java",
    "chars": 507,
    "preview": "package redis.clients.jedis.args;\n\nimport redis.clients.jedis.util.SafeEncoder;\n\n/**\n * Enum representing the metrics th"
  },
  {
    "path": "src/main/java/redis/clients/jedis/args/LatencyEvent.java",
    "chars": 882,
    "preview": "package redis.clients.jedis.args;\n\nimport redis.clients.jedis.util.SafeEncoder;\n\npublic enum LatencyEvent implements Raw"
  },
  {
    "path": "src/main/java/redis/clients/jedis/args/ListDirection.java",
    "chars": 373,
    "preview": "package redis.clients.jedis.args;\n\nimport redis.clients.jedis.util.SafeEncoder;\n\n/**\n * Direction for {@code LMOVE} and "
  },
  {
    "path": "src/main/java/redis/clients/jedis/args/ListPosition.java",
    "chars": 306,
    "preview": "package redis.clients.jedis.args;\n\nimport redis.clients.jedis.util.SafeEncoder;\n\npublic enum ListPosition implements Raw"
  },
  {
    "path": "src/main/java/redis/clients/jedis/args/Rawable.java",
    "chars": 292,
    "preview": "package redis.clients.jedis.args;\n\n/**\n * Byte array representation of arguments to write in socket input stream.\n */\npu"
  },
  {
    "path": "src/main/java/redis/clients/jedis/args/RawableFactory.java",
    "chars": 2270,
    "preview": "package redis.clients.jedis.args;\n\nimport static redis.clients.jedis.Protocol.toByteArray;\n\nimport java.util.Arrays;\nimp"
  },
  {
    "path": "src/main/java/redis/clients/jedis/args/SaveMode.java",
    "chars": 479,
    "preview": "package redis.clients.jedis.args;\n\nimport redis.clients.jedis.util.SafeEncoder;\n\npublic enum SaveMode implements Rawable"
  },
  {
    "path": "src/main/java/redis/clients/jedis/args/SortedSetOption.java",
    "chars": 307,
    "preview": "package redis.clients.jedis.args;\n\nimport redis.clients.jedis.util.SafeEncoder;\n\npublic enum SortedSetOption implements "
  },
  {
    "path": "src/main/java/redis/clients/jedis/args/SortingOrder.java",
    "chars": 307,
    "preview": "package redis.clients.jedis.args;\n\nimport redis.clients.jedis.util.SafeEncoder;\n\npublic enum SortingOrder implements Raw"
  },
  {
    "path": "src/main/java/redis/clients/jedis/args/StreamDeletionPolicy.java",
    "chars": 955,
    "preview": "package redis.clients.jedis.args;\n\nimport redis.clients.jedis.util.SafeEncoder;\n\n/**\n * Deletion policy for stream comma"
  },
  {
    "path": "src/main/java/redis/clients/jedis/args/UnblockType.java",
    "chars": 370,
    "preview": "package redis.clients.jedis.args;\n\nimport redis.clients.jedis.util.SafeEncoder;\n\n/**\n * Unblock type for {@code CLIENT U"
  },
  {
    "path": "src/main/java/redis/clients/jedis/args/package-info.java",
    "chars": 128,
    "preview": "/**\n * This package contains the classes that represent arguments of Redis core commands.\n */\npackage redis.clients.jedi"
  },
  {
    "path": "src/main/java/redis/clients/jedis/authentication/AuthXEventListener.java",
    "chars": 490,
    "preview": "package redis.clients.jedis.authentication;\n\npublic interface AuthXEventListener {\n\n    static AuthXEventListener NOOP_L"
  },
  {
    "path": "src/main/java/redis/clients/jedis/authentication/AuthXManager.java",
    "chars": 4373,
    "preview": "package redis.clients.jedis.authentication;\n\nimport java.lang.ref.WeakReference;\nimport java.util.ArrayList;\nimport java"
  },
  {
    "path": "src/main/java/redis/clients/jedis/authentication/JedisAuthenticationException.java",
    "chars": 371,
    "preview": "package redis.clients.jedis.authentication;\n\nimport redis.clients.jedis.exceptions.JedisException;\n\npublic class JedisAu"
  },
  {
    "path": "src/main/java/redis/clients/jedis/authentication/TokenCredentials.java",
    "chars": 544,
    "preview": "package redis.clients.jedis.authentication;\n\nimport redis.clients.authentication.core.Token;\nimport redis.clients.jedis."
  },
  {
    "path": "src/main/java/redis/clients/jedis/bloom/BFInsertParams.java",
    "chars": 1917,
    "preview": "package redis.clients.jedis.bloom;\n\nimport static redis.clients.jedis.Protocol.toByteArray;\nimport static redis.clients."
  },
  {
    "path": "src/main/java/redis/clients/jedis/bloom/BFReserveParams.java",
    "chars": 976,
    "preview": "package redis.clients.jedis.bloom;\n\nimport static redis.clients.jedis.Protocol.toByteArray;\nimport static redis.clients."
  },
  {
    "path": "src/main/java/redis/clients/jedis/bloom/CFInsertParams.java",
    "chars": 983,
    "preview": "package redis.clients.jedis.bloom;\n\nimport static redis.clients.jedis.Protocol.toByteArray;\nimport static redis.clients."
  },
  {
    "path": "src/main/java/redis/clients/jedis/bloom/CFReserveParams.java",
    "chars": 1457,
    "preview": "package redis.clients.jedis.bloom;\n\nimport static redis.clients.jedis.Protocol.toByteArray;\nimport static redis.clients."
  },
  {
    "path": "src/main/java/redis/clients/jedis/bloom/RedisBloomProtocol.java",
    "chars": 2874,
    "preview": "package redis.clients.jedis.bloom;\n\nimport redis.clients.jedis.args.Rawable;\nimport redis.clients.jedis.commands.Protoco"
  },
  {
    "path": "src/main/java/redis/clients/jedis/bloom/TDigestMergeParams.java",
    "chars": 995,
    "preview": "package redis.clients.jedis.bloom;\n\nimport static redis.clients.jedis.Protocol.toByteArray;\nimport static redis.clients."
  },
  {
    "path": "src/main/java/redis/clients/jedis/bloom/commands/BloomFilterCommands.java",
    "chars": 2265,
    "preview": "package redis.clients.jedis.bloom.commands;\n\nimport java.util.List;\nimport java.util.Map;\nimport redis.clients.jedis.blo"
  },
  {
    "path": "src/main/java/redis/clients/jedis/bloom/commands/BloomFilterPipelineCommands.java",
    "chars": 1100,
    "preview": "package redis.clients.jedis.bloom.commands;\n\nimport java.util.List;\nimport java.util.Map;\nimport redis.clients.jedis.Res"
  },
  {
    "path": "src/main/java/redis/clients/jedis/bloom/commands/CountMinSketchCommands.java",
    "chars": 3841,
    "preview": "package redis.clients.jedis.bloom.commands;\n\nimport java.util.List;\nimport java.util.Map;\n\n/**\n * Interface for RedisBlo"
  },
  {
    "path": "src/main/java/redis/clients/jedis/bloom/commands/CountMinSketchPipelineCommands.java",
    "chars": 671,
    "preview": "package redis.clients.jedis.bloom.commands;\n\nimport java.util.List;\nimport java.util.Map;\nimport redis.clients.jedis.Res"
  },
  {
    "path": "src/main/java/redis/clients/jedis/bloom/commands/CuckooFilterCommands.java",
    "chars": 7110,
    "preview": "package redis.clients.jedis.bloom.commands;\n\nimport java.util.List;\nimport java.util.Map;\nimport redis.clients.jedis.blo"
  },
  {
    "path": "src/main/java/redis/clients/jedis/bloom/commands/CuckooFilterPipelineCommands.java",
    "chars": 1288,
    "preview": "package redis.clients.jedis.bloom.commands;\n\nimport java.util.List;\nimport java.util.Map;\nimport redis.clients.jedis.Res"
  },
  {
    "path": "src/main/java/redis/clients/jedis/bloom/commands/RedisBloomCommands.java",
    "chars": 207,
    "preview": "package redis.clients.jedis.bloom.commands;\n\npublic interface RedisBloomCommands extends BloomFilterCommands, CuckooFilt"
  },
  {
    "path": "src/main/java/redis/clients/jedis/bloom/commands/RedisBloomPipelineCommands.java",
    "chars": 259,
    "preview": "package redis.clients.jedis.bloom.commands;\n\npublic interface RedisBloomPipelineCommands extends BloomFilterPipelineComm"
  },
  {
    "path": "src/main/java/redis/clients/jedis/bloom/commands/TDigestSketchCommands.java",
    "chars": 3978,
    "preview": "package redis.clients.jedis.bloom.commands;\n\nimport java.util.List;\nimport java.util.Map;\nimport redis.clients.jedis.blo"
  },
  {
    "path": "src/main/java/redis/clients/jedis/bloom/commands/TDigestSketchPipelineCommands.java",
    "chars": 1306,
    "preview": "package redis.clients.jedis.bloom.commands;\n\nimport java.util.List;\nimport java.util.Map;\nimport redis.clients.jedis.Res"
  },
  {
    "path": "src/main/java/redis/clients/jedis/bloom/commands/TopKFilterCommands.java",
    "chars": 1972,
    "preview": "package redis.clients.jedis.bloom.commands;\n\nimport java.util.Collections;\nimport java.util.List;\nimport java.util.Map;\n"
  },
  {
    "path": "src/main/java/redis/clients/jedis/bloom/commands/TopKFilterPipelineCommands.java",
    "chars": 706,
    "preview": "package redis.clients.jedis.bloom.commands;\n\nimport java.util.List;\nimport java.util.Map;\nimport redis.clients.jedis.Res"
  },
  {
    "path": "src/main/java/redis/clients/jedis/bloom/commands/package-info.java",
    "chars": 147,
    "preview": "/**\n * This package contains the interfaces that contain methods representing RedisBloom commands.\n */\npackage redis.cli"
  },
  {
    "path": "src/main/java/redis/clients/jedis/bloom/package-info.java",
    "chars": 110,
    "preview": "/**\n * This package contains the classes related to RedisBloom module.\n */\npackage redis.clients.jedis.bloom;\n"
  },
  {
    "path": "src/main/java/redis/clients/jedis/builders/AbstractClientBuilder.java",
    "chars": 11677,
    "preview": "package redis.clients.jedis.builders;\n\nimport org.apache.commons.pool2.impl.GenericObjectPoolConfig;\nimport redis.client"
  },
  {
    "path": "src/main/java/redis/clients/jedis/builders/ClusterClientBuilder.java",
    "chars": 5590,
    "preview": "package redis.clients.jedis.builders;\n\nimport java.time.Duration;\nimport java.util.Set;\nimport redis.clients.jedis.*;\nim"
  },
  {
    "path": "src/main/java/redis/clients/jedis/builders/MultiDbClientBuilder.java",
    "chars": 5473,
    "preview": "package redis.clients.jedis.builders;\n\nimport java.util.function.Consumer;\n\nimport redis.clients.jedis.MultiDbConfig;\nim"
  },
  {
    "path": "src/main/java/redis/clients/jedis/builders/SentinelClientBuilder.java",
    "chars": 4156,
    "preview": "package redis.clients.jedis.builders;\n\nimport java.time.Duration;\nimport java.util.Set;\nimport redis.clients.jedis.*;\nim"
  },
  {
    "path": "src/main/java/redis/clients/jedis/builders/StandaloneClientBuilder.java",
    "chars": 7747,
    "preview": "package redis.clients.jedis.builders;\n\nimport java.net.URI;\nimport redis.clients.jedis.*;\nimport redis.clients.jedis.pro"
  },
  {
    "path": "src/main/java/redis/clients/jedis/commands/AccessControlLogBinaryCommands.java",
    "chars": 4351,
    "preview": "package redis.clients.jedis.commands;\n\nimport java.util.List;\nimport redis.clients.jedis.CommandArguments;\nimport redis."
  },
  {
    "path": "src/main/java/redis/clients/jedis/commands/AccessControlLogCommands.java",
    "chars": 4238,
    "preview": "package redis.clients.jedis.commands;\n\nimport java.util.List;\nimport redis.clients.jedis.CommandArguments;\nimport redis."
  },
  {
    "path": "src/main/java/redis/clients/jedis/commands/BitBinaryCommands.java",
    "chars": 1128,
    "preview": "package redis.clients.jedis.commands;\n\nimport java.util.List;\n\nimport redis.clients.jedis.args.BitCountOption;\nimport re"
  },
  {
    "path": "src/main/java/redis/clients/jedis/commands/BitCommands.java",
    "chars": 3784,
    "preview": "package redis.clients.jedis.commands;\n\nimport java.util.List;\n\nimport redis.clients.jedis.args.BitCountOption;\nimport re"
  },
  {
    "path": "src/main/java/redis/clients/jedis/commands/BitPipelineBinaryCommands.java",
    "chars": 932,
    "preview": "package redis.clients.jedis.commands;\n\nimport java.util.List;\n\nimport redis.clients.jedis.Response;\nimport redis.clients"
  },
  {
    "path": "src/main/java/redis/clients/jedis/commands/BitPipelineCommands.java",
    "chars": 924,
    "preview": "package redis.clients.jedis.commands;\n\nimport redis.clients.jedis.Response;\nimport redis.clients.jedis.args.BitCountOpti"
  },
  {
    "path": "src/main/java/redis/clients/jedis/commands/ClientBinaryCommands.java",
    "chars": 4679,
    "preview": "package redis.clients.jedis.commands;\n\nimport redis.clients.jedis.args.ClientAttributeOption;\nimport redis.clients.jedis"
  },
  {
    "path": "src/main/java/redis/clients/jedis/commands/ClientCommands.java",
    "chars": 5069,
    "preview": "package redis.clients.jedis.commands;\n\nimport redis.clients.jedis.args.ClientAttributeOption;\nimport redis.clients.jedis"
  },
  {
    "path": "src/main/java/redis/clients/jedis/commands/ClusterCommands.java",
    "chars": 3778,
    "preview": "package redis.clients.jedis.commands;\n\nimport java.util.List;\nimport java.util.Map;\n\nimport redis.clients.jedis.args.Clu"
  },
  {
    "path": "src/main/java/redis/clients/jedis/commands/CommandCommands.java",
    "chars": 1894,
    "preview": "package redis.clients.jedis.commands;\n\nimport redis.clients.jedis.params.CommandListFilterByParams;\nimport redis.clients"
  },
  {
    "path": "src/main/java/redis/clients/jedis/commands/ConfigCommands.java",
    "chars": 3005,
    "preview": "package redis.clients.jedis.commands;\n\nimport java.util.Map;\n\n/**\n * The interface about managing configuration paramete"
  },
  {
    "path": "src/main/java/redis/clients/jedis/commands/ControlBinaryCommands.java",
    "chars": 3240,
    "preview": "package redis.clients.jedis.commands;\n\nimport java.util.List;\n\n/**\n * The interface about Redis management command\n */\np"
  },
  {
    "path": "src/main/java/redis/clients/jedis/commands/ControlCommands.java",
    "chars": 3566,
    "preview": "package redis.clients.jedis.commands;\n\nimport java.util.List;\nimport java.util.Map;\n\n/**\n * The interface about Redis ma"
  },
  {
    "path": "src/main/java/redis/clients/jedis/commands/DatabaseCommands.java",
    "chars": 4883,
    "preview": "package redis.clients.jedis.commands;\n\nimport redis.clients.jedis.args.FlushMode;\nimport redis.clients.jedis.params.Migr"
  },
  {
    "path": "src/main/java/redis/clients/jedis/commands/DatabasePipelineCommands.java",
    "chars": 4620,
    "preview": "package redis.clients.jedis.commands;\n\nimport redis.clients.jedis.Response;\nimport redis.clients.jedis.params.MigratePar"
  },
  {
    "path": "src/main/java/redis/clients/jedis/commands/FunctionBinaryCommands.java",
    "chars": 4308,
    "preview": "package redis.clients.jedis.commands;\n\nimport redis.clients.jedis.args.FlushMode;\nimport redis.clients.jedis.args.Functi"
  },
  {
    "path": "src/main/java/redis/clients/jedis/commands/FunctionCommands.java",
    "chars": 4409,
    "preview": "package redis.clients.jedis.commands;\n\nimport redis.clients.jedis.args.FlushMode;\nimport redis.clients.jedis.args.Functi"
  },
  {
    "path": "src/main/java/redis/clients/jedis/commands/FunctionPipelineBinaryCommands.java",
    "chars": 1189,
    "preview": "package redis.clients.jedis.commands;\n\nimport redis.clients.jedis.Response;\nimport redis.clients.jedis.args.FlushMode;\ni"
  },
  {
    "path": "src/main/java/redis/clients/jedis/commands/FunctionPipelineCommands.java",
    "chars": 1297,
    "preview": "package redis.clients.jedis.commands;\n\nimport redis.clients.jedis.Response;\nimport redis.clients.jedis.args.FlushMode;\ni"
  },
  {
    "path": "src/main/java/redis/clients/jedis/commands/GenericControlCommands.java",
    "chars": 388,
    "preview": "package redis.clients.jedis.commands;\n\nimport java.util.List;\nimport redis.clients.jedis.Module;\nimport redis.clients.je"
  },
  {
    "path": "src/main/java/redis/clients/jedis/commands/GeoBinaryCommands.java",
    "chars": 3356,
    "preview": "package redis.clients.jedis.commands;\n\nimport java.util.List;\nimport java.util.Map;\n\nimport redis.clients.jedis.GeoCoord"
  },
  {
    "path": "src/main/java/redis/clients/jedis/commands/GeoCommands.java",
    "chars": 20537,
    "preview": "package redis.clients.jedis.commands;\n\nimport java.util.List;\nimport java.util.Map;\n\nimport redis.clients.jedis.GeoCoord"
  },
  {
    "path": "src/main/java/redis/clients/jedis/commands/GeoPipelineBinaryCommands.java",
    "chars": 3679,
    "preview": "package redis.clients.jedis.commands;\n\nimport java.util.List;\nimport java.util.Map;\n\nimport redis.clients.jedis.GeoCoord"
  },
  {
    "path": "src/main/java/redis/clients/jedis/commands/GeoPipelineCommands.java",
    "chars": 3673,
    "preview": "package redis.clients.jedis.commands;\n\nimport java.util.List;\nimport java.util.Map;\n\nimport redis.clients.jedis.GeoCoord"
  },
  {
    "path": "src/main/java/redis/clients/jedis/commands/HashBinaryCommands.java",
    "chars": 8686,
    "preview": "package redis.clients.jedis.commands;\n\nimport java.util.List;\nimport java.util.Map;\nimport java.util.Set;\n\nimport redis."
  },
  {
    "path": "src/main/java/redis/clients/jedis/commands/HashCommands.java",
    "chars": 8682,
    "preview": "package redis.clients.jedis.commands;\n\nimport java.util.List;\nimport java.util.Map;\nimport java.util.Set;\n\nimport redis."
  },
  {
    "path": "src/main/java/redis/clients/jedis/commands/HashPipelineBinaryCommands.java",
    "chars": 3375,
    "preview": "package redis.clients.jedis.commands;\n\nimport java.util.List;\nimport java.util.Map;\nimport java.util.Set;\n\nimport redis."
  },
  {
    "path": "src/main/java/redis/clients/jedis/commands/HashPipelineCommands.java",
    "chars": 3367,
    "preview": "package redis.clients.jedis.commands;\n\nimport java.util.List;\nimport java.util.Map;\nimport java.util.Set;\n\nimport redis."
  },
  {
    "path": "src/main/java/redis/clients/jedis/commands/HyperLogLogBinaryCommands.java",
    "chars": 253,
    "preview": "package redis.clients.jedis.commands;\n\npublic interface HyperLogLogBinaryCommands {\n\n  long pfadd(byte[] key, byte[]... "
  },
  {
    "path": "src/main/java/redis/clients/jedis/commands/HyperLogLogCommands.java",
    "chars": 247,
    "preview": "package redis.clients.jedis.commands;\n\npublic interface HyperLogLogCommands {\n\n  long pfadd(String key, String... elemen"
  },
  {
    "path": "src/main/java/redis/clients/jedis/commands/HyperLogLogPipelineBinaryCommands.java",
    "chars": 339,
    "preview": "package redis.clients.jedis.commands;\n\nimport redis.clients.jedis.Response;\n\npublic interface HyperLogLogPipelineBinaryC"
  },
  {
    "path": "src/main/java/redis/clients/jedis/commands/HyperLogLogPipelineCommands.java",
    "chars": 333,
    "preview": "package redis.clients.jedis.commands;\n\nimport redis.clients.jedis.Response;\n\npublic interface HyperLogLogPipelineCommand"
  }
]

// ... and 830 more files (download for full content)

About this extraction

This page contains the full source code of the redis/jedis GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 1030 files (7.5 MB), approximately 2.0M tokens, and a symbol index with 17408 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!