Update urgency: SECURITY: There are security fixes in the release.
RESTORE may lead to Remote Code ExecutionRESTORE may lead to Remote Code Execution (Time Series)RESTORE may lead to Remote Code Execution (Probabilistic)SUBSCRIBE, PSUBSCRIBE, SSUBSCRIBE: crash on OOM (RED-167788)CONFIG SET: some settings allow invalid characters (RED-167787)SCRIPT DEBUG: potential crash on scripts (RED-175507)VADD: crash or buffer overflow on large REDUCE value (RED-170921)VSET: crash on huge allocations (MOD-12678)FT.HYBRID VSIM RANGE + FILTER incorrectly returns zero results (MOD-12370, MOD-13884)FT.PROFILE HYBRID returns an empty reply (MOD-14778)FT.PROFILE reports an incorrect shard total profile time (MOD-13735, MOD-13181)FT.PROFILE output is inconsistent when a profiled value is missing (MOD-10560)FT.EXPLAIN does not lock, causing a race with concurrent index changes (MOD-14461)FILTER returns inconsistent results with multiple indexes sharing field aliases (MOD-14063)FILTER behavior depends on property order in the expression (MOD-14065)RENAME notification handler loads the wrong key, causing stale index entries after a rename (MOD-14328)PERSIST and HPERSIST notifications are not reflected in index expiration tracking (MOD-14800)FT.SPELLCHECK treats PARAMS placeholders as literal terms instead of resolving them (MOD-10596)FT.HYBRID causes intermittent failures under concurrent hybrid query load (MOD-14732)FT.SEARCH when topology validation fails (for example, some nodes unreachable) (MOD-14475)FT.SEARCH fails with "Query requires unavailable slots" after shard restart or failover (MOD-13828)FT.INFO-style output no longer reports zero-index summary data when no indices exist (MOD-14079)FT.CREATE now rejects schema definitions with invalid option combinations at creation time (MOD-14655)IndexSpec of the index the failing thread was working on (MOD-7574)FT.PROFILE: added queue time tracking (MOD-13602)Update urgency: SECURITY: There are security fixes in the release.
RESTORE may lead to Remote Code ExecutionRESTORE may lead to Remote Code Execution (Time Series)RESTORE may lead to Remote Code Execution (Probabilistic)SUBSCRIBE, PSUBSCRIBE, SSUBSCRIBE: crash on OOM (RED-167788)CONFIG SET: some settings allow invalid characters (RED-167787)SCRIPT DEBUG: potential crash on scripts (RED-175507)VADD: crash or buffer overflow on large REDUCE value (RED-170921)VSET: crash on huge allocations (MOD-12678)FT.HYBRID VSIM RANGE + FILTER incorrectly returns zero results (MOD-13885)FT.PROFILE HYBRID returns an empty reply (MOD-14778)FT.PROFILE output is inconsistent when a profiled value is missing (MOD-10560)FT.EXPLAIN does not lock, causing a race with concurrent index changes (MOD-14461)FILTER returns inconsistent results with multiple indexes sharing field aliases (MOD-14063)FILTER behavior depends on property order in the expression (MOD-14065)RENAME notification handler loads the wrong key, causing stale index entries after a rename (MOD-14062)PERSIST and HPERSIST notifications are not reflected in index expiration tracking (MOD-14800)FT.SPELLCHECK treats PARAMS placeholders as literal terms instead of resolving them (MOD-10596)FT.HYBRID causes intermittent failures under concurrent hybrid query load (MOD-14732)FT.SEARCH and FT.AGGREGATE load (MOD-14268)FT.SEARCH when topology validation fails (for example, some nodes unreachable) (MOD-14475)FT.SEARCH fails with "Query requires unavailable slots" after shard restart or failover (MOD-13828)FT.INFO-style output no longer reports zero-index summary data when no indices exist (MOD-14080)FT.CREATE now rejects schema definitions with invalid option combinations at creation time (MOD-14655)FT.PROFILE: added queue time tracking (MOD-13602)Update urgency: SECURITY: There are security fixes in the release.
RESTORE may lead to Remote Code ExecutionRESTORE may lead to Remote Code Execution (Time Series)RESTORE may lead to Remote Code Execution (Probabilistic)SUBSCRIBE, PSUBSCRIBE, SSUBSCRIBE: crash on OOM (RED-167788)CONFIG SET: some settings allow invalid characters (RED-167787)SCRIPT DEBUG: potential crash on scripts (RED-175507)VADD: crash or buffer overflow on large REDUCE value (RED-170921)VSET: crash on huge allocations (MOD-12678)FT.SEARCH and FT.AGGREGATE load (MOD-14268)FT.PROFILE output is inconsistent when a profiled value is missing (MOD-10560)FT.EXPLAIN does not lock, causing a race with concurrent index changes (MOD-14461)FILTER returns inconsistent results with multiple indexes sharing field aliases (MOD-14063)FILTER behavior depends on property order in the expression (MOD-14342)RENAME notification handler loads the wrong key, causing stale index entries after a rename (MOD-14062)PERSIST and HPERSIST notifications are not reflected in index expiration tracking (MOD-14800)FT.SPELLCHECK treats PARAMS placeholders as literal terms instead of resolving them (MOD-10596)FT.CURSOR enters an infinite loop when the ACL user lacks specific permissions (MOD-14479)FT.SEARCH when topology validation fails (for example, some nodes unreachable) (MOD-14475)FT.INFO-style output no longer reports zero-index summary data when no indices exist (MOD-14081)FT.CREATE now rejects schema definitions with invalid option combinations at creation time (MOD-14655)FT.PROFILE: added queue time tracking (MOD-13602)Update urgency: SECURITY: There are security fixes in the release.
RESTORE may lead to Remote Code ExecutionSUBSCRIBE, PSUBSCRIBE, SSUBSCRIBE: crash on OOM (RED-167788)CONFIG SET: some settings allow invalid characters (RED-167787)SCRIPT DEBUG: potential crash on scripts (RED-175507)Update urgency: SECURITY: There are security fixes in the release.
RESTORE may lead to Remote Code ExecutionSUBSCRIBE, PSUBSCRIBE, SSUBSCRIBE: crash on OOM (RED-167788)CONFIG SET: some settings allow invalid characters (RED-167787)SCRIPT DEBUG: potential crash on scripts (RED-175507)Update urgency: SECURITY: There is a security fix in the release.
RESTORE may lead to Remote Code ExecutionSUBSCRIBE, PSUBSCRIBE, SSUBSCRIBE: crash on OOM (RED-167788)SCRIPT DEBUG: potential crash on scripts (RED-175507)This is the third Milestone of Redis 8.8 in Redis Open Source.
Milestones are non-feature-complete pre-releases. Pre-releases are not suitable for production use.
Redis 8.8 introduces new features and performance improvements.
FT.HYBRID KNN clause: new argument to request fewer candidates per shardFT.PROFILE HYBRID: profiling support for FT.HYBRIDCLIENT TRACKING: self-overlap returning non-zero loop indexSCAN commands: integer overflow in COUNT parameterHSETEX when a field appears more than once and an expiry is specifiedLL_WARNING to LL_VERBOSE-ERR and \r\nFT.SEARCH and FT.AGGREGATE loadFT.SEARCH when topology validation fails (for example, some nodes unreachable)FILTER returns inconsistent results with multiple indexes sharing field aliasesFT.HYBRID VSIM RANGE + FILTER incorrectly returns zero resultsFT.SEARCH fails with “Query requires unavailable slots” after shard restart or failoverFILTER behavior depends on property order in the expressionFILTER applied inconsistently when documents are missing filtered fieldsFT.AGGREGATEFT.HYBRID queriesFT.HYBRID queriesFT.SEARCH / FT.AGGREGATEFT.SEARCH coordinator lacks strict FAIL timeout enforcementfast_float_strtod fast path to 17-19 digit mantissasFT.PROFILE: added queue time tracking (MOD-13602)INFO: Skip metrics when there are no indices (MOD-13903)search-workers: change default to 16 (MOD-14486)BG_INDEX_SLEEP_DURATION_US: sleep duration during background indexing (MOD-13994)Script now supports a FIPS-safe execution mode that avoids client-side SHA-1 computation, which is blocked in strict FIPS environments. A new NewScriptServerSHA constructor uses SCRIPT LOAD to obtain and cache the digest from the server, then runs commands via EVALSHA/EVALSHA_RO. Falls back to EVAL/EVALRO if loading fails, and transparently retries once on NOSCRIPT. The default behavior is unchanged for existing users.
(#3700) by @chaitanyabodlapati
Added a new step-based FT.AGGREGATE pipeline API via FTAggregateOptions.Steps, allowing LOAD, APPLY, GROUPBY, and SORTBY (with per-step MAX) to be repeated and interleaved in arbitrary order — matching Redis's native multi-stage aggregation semantics. The legacy Load/Apply/GroupBy/SortBy/SortByMax fields are now deprecated.
Added DoRaw and DoRawWriteTo methods for executing arbitrary commands and reading the raw RESP response. Useful for proxying, custom protocol inspection, and working with commands not yet wrapped by go-redis.
(#3713) by @ofekshenawa
Added DialerRetryBackoff option (plumbed through Options, ClusterOptions, RingOptions, FailoverOptions) to let callers customize the delay between failed dial attempts. Helpers DialRetryBackoffConstant and DialRetryBackoffExponential (with jitter and cap) are provided out of the box. Dial timeout is now also applied per attempt rather than across all retries.
FT.AGGREGATE with support for repeated/interleaved LOAD, APPLY, GROUPBY, and SORTBY stages (#3782) by @ndyakovVISMEMBER and WITHATTRIBS support (#3753) by @romanpovolNewScriptServerSHA uses SCRIPT LOAD to obtain the digest from the server, avoiding client-side SHA-1 (#3700) by @chaitanyabodlapatiDoRaw and DoRawWriteTo for raw RESP protocol access (#3713) by @ofekshenawaDialerRetryBackoff function option with constant and exponential helpers (#3706) by @mwhookerNOSCRIPT replies are now surfaced as a typed error for easier handling (#3738) by @LINKIWIClientSetName method to PubSub (#3727) by @Flack74ReplicaOf method replaces the deprecated SlaveOf (#3720) by @CopilotHScan now supports types implementing encoding.BinaryUnmarshaler (#3768) by @Aaditya-dubey1CLIENT MAINT_NOTIFICATIONS handshake when HELLO fails and connection falls back to RESP2; fail fast when explicitly enabled with RESP3 (#3788) by @ndyakovShouldRetry now treats net.OpError with Op == "dial" timeout errors as safe to retry since no command was sent (#3787) by @vladisa88baseClient close logic; replaced with a bounded, concurrency-safe named-hook registry (#3785) by @ndyakovcloseNotify timeouts) for connections already dropped by the server due to idle timeout (#3778) by @ofekshenawaConnStateMachine.notifyWaiters that could wake multiple waiters under a single mutex hold and violate FIFO ordering (#3777) by @0x48coreREADONLY errors embedded in Lua script error messages on read-only replicas so commands are correctly retried (#3769) by @zhengjileiVSimWithScores, VSimWithArgsWithScores, and VLinksWithScores which were broken on RESP2 connections returning flat arrays instead of maps (#3767) by @CopilotZRangeArgs with Rev + ByScore/ByLex incorrectly swapping Start/Stop, breaking ZRANGESTORE (#3751) by @Copilotredisotel-native (#3743) by @ofekshenawaOptions (#3739) by @rubensayshiredisotel-native (#3735) by @ofekshenawaotel/semconv/v1.38.0 in redisotel-native (#3731) by @wzy9607SET ... NX instead of the deprecated SETNX command (#3723) by @ndyakovTIME as a keyless command for correct cluster routing (#3722) by @fatal10110pool.name being appended per node, which corrupted and dropped user-provided custom attributes (#3699) by @Jesse-Bonfire*baseClient.initConn(); added explicit nil option guards to client constructors (#3676) by @olde-duckegithub.com/dgryski/go-rendezvous dependency with an in-repo implementation in internal/hashtag, reducing the dependency graph while preserving algorithm parity (#3762) by @bigsk05repository, ref, and client-libs-test-image-tag inputs to the run-tests composite action; redis-version is now optional so unstable builds use REDIS_VERSION from the Makefile (#3749) by @dariaguy-compat=1.24 in release scripts (#3714, #3754) by @ndyakov, @cxljsConn.closed atomic field in favor of the state machine's StateClosed (#3783) by @cxljsredisotel/redisotel-native (#3770) by @ndyakovmaps.Keys, slices.Collect, slices.Contains, clear(), and slices.SortFunc instead of custom helpers (#3758, #3746) by @cxljsHGetAll describing behavior and complexity (#3776) by @0x48coreWe'd like to thank all the contributors who worked on this release!
@0x48core, @Aaditya-dubey1, @Copilot, @Flack74, @Jesse-Bonfire, @LINKIWI, @bigsk05, @chaitanyabodlapati, @cxljs, @dariaguy, @fatal10110, @mwhooker, @ndyakov, @ofekshenawa, @olde-ducke, @olzhas-sabiyev, @romanpovol, @rubensayshi, @vladisa88, @wzy9607, @zhengjilei
Full Changelog: https://github.com/redis/go-redis/compare/v9.18.0...v9.19.0
This is a maintenance release of Redis Insight.
SHA-512 Checksums
https://redis.io/docs/latest/develop/tools/insight/release-notes/v.3.4.2/
Full Changelog: https://github.com/redis/RedisInsight/compare/3.4.1...3.4.2
This is the General Availability (GA) release of Redis Insight 3.4.1, which includes new features, enhancements and bug fixes.
.redis-insight/logs directory when the parent directory does not exist yet.SHA-512 Checksums
https://redis.io/docs/latest/develop/tools/insight/release-notes/v.3.4.1/
Full Changelog: https://github.com/redis/RedisInsight/compare/3.2.0...3.4.1
In this release, the command response types across RESP2 and RESP3 protocols are unified, ensuring that the same command returns the same Python type and structure regardless of which protocol version is in use — eliminating the need for protocol-specific branching in application code (#4025). Approximately 84 commands are affected across core Redis, Search, JSON, TimeSeries, and Probabilistic modules. Additionally, the default protocol has been changed from RESP2 to RESP3 for all Redis clients and connections, enabling richer native types (maps, sets, doubles, booleans) and improved performance out of the box (#4031).
These changes are breaking relative to redis-py 7.x and earlier, so users upgrading should carefully review the migration guide. For a complete list of affected commands and updated response formats, see docs/resp_unification.rst and the detailed migration guide at specs/resp2_resp3_migration_guide.md.
Users who need to retain the previous default protocol configuration can explicitly set protocol=2 when creating their client or connection.
We'd like to thank all the contributors who worked on this release! @Pack-Yak1 @petyaslavova
This is the second Milestone of Redis 8.8 in Redis Open Source.
Milestones are non-feature-complete pre-releases. Pre-releases are not suitable for production use.
Redis 8.8 introduces new features and performance improvements.
8.8-M02 is available as a Docker image and can be downloaded from Docker Hub. Additional distributions will be introduced in upcoming pre-releases.
XNACK: a new streams command that allows consumers to explicitly release pending messagesJSON.SET: new FPHA argument to specify the FP type for FP homogeneous arrays (MOD-13577)ZUNION, ZINTER, ZUNIONSTORE, ZINTERSTORE: new COUNT aggregatorTS.RANGE, TS.REVRANGE, TS.MRANGE, TS.MREVRANGE: multiple aggregators in a single command (MOD-9162)XINFO STREAM: wrong value in the per-slot memory trackingHEXPIRE: overflow on fields countXREADGROUP: consumer replication inconsistencyCOMMAND GETKEYS for PFMERGE with no source keyslpSafeToAddhide_user_data_from_log is enabledINFO KEYSIZES and INFO ALLOCSIZES fixesHOTKEYS HELP subcommand (Each command having subcommands needs a HELP subcommand)RESTORE and SET: expiredkeys counter updates incorrectly on keys with past expiration timegetKeysFreeResult() on cross-slot error pathused_memory_dataset calculationHOTKEYS results field sampled-command-selected-slots-us to sampled-commands-selected-slots-usHOTKEYS does not track each command in a MULTI/EXEC blockHOTKEYS GET RESP3 reply fixed to map instead of flat arrayJSON.NUMINCRBY, JSON.NUMMULTBY don’t error on numeric overflow (MOD-14191)TS.INCRBY, TS.DECRBY create key before validating args (MOD-8167)TS.RANGE with aggregation and EMPTYBITOP operations with AVX512SFLUSH can now flush slots partiallySFLUSH skips slot trimming when the requested slot ranges exactly match the node’s local slot coverageTS.RANGE, TS.REVRANGE, TS.MRANGE, TS.MREVRANGE: improve performance on a cluster setup (RED-184104)type_changed KSN instead of set (MOD-12919)RedisModule_CreateKeyMetaClass - define a new key-metadata classRedisModule_ReleaseKeyMetaClass - release a key-metadata classRedisModule_SetModuleMetadata - attach or update metadata to a keyRedisModule_GetKeyMeta - get key metadataINFO STATS - global stats for slowlog metrics:
slowlog_commands_count - commands written to slowlogslowlog_commands_time_ms_sum - sum of execution times of commands from the slowlogslowlog_commands_time_ms_max - maximum execution time of a command from the slowlogINFO COMMANDSTATS - per-command stats for slowlog metrics:
slowlog_count - number of times the command was written in the slowlogslowlog_time_ms_sum - sum of execution time of the command (only from the slowlog)slowlog_time_ms_max - maximum execution time of the command (only from the slowlog)INFO STATS (global, all clients aggregated):
total_client_processing_events: attempts to process client input buffers; does not guarantee any command was actually parsedeventloop_cycles_with_clients_processing: event loop cycles where client input buffers were processedcommands_per_parse_batch_sum: cumulative number of commands parsed across all parsing batches for all clientscommands_per_parse_batch_cnt: number of parsing batches across all clients. A batch is counted each time at least one command is parsed from a client's query buffercommands_per_parse_batch_avg: average commands parsed per batch (sum/cnt). Approximates pipelining depthCLIENT INFO and CLIENT LIST (per-client):
read-events: number of read events for this clientparse-batch-cmd-sum: cumulative number of commands parsed across all parsing batches for this clientparse-batch-cnt: total number of parsing batches for this client. Divide parse-batch-cmd-sum by this value to get the client’s average commands per batchsendCommand on multi for all clients by @nkaradzhov in https://github.com/redis/node-redis/pull/3181sSubscribe/sUnsubscribe methods to Sentinel client by @nkaradzhov in https://github.com/redis/node-redis/pull/3178INDEXMISSING placement by @nkaradzhov in https://github.com/redis/node-redis/pull/3179@redis/client dist imports in CREATE command by @PavelPashov in https://github.com/redis/node-redis/pull/3187transformDoubleReply by @rhymincymon in https://github.com/redis/node-redis/pull/3213Node Redis now ships with first-class observability via OpenTelemetry metrics and Node.js diagnostics_channel. Initialize OpenTelemetry before creating clients (OpenTelemetry.init({ metrics: { enabled: true } })) and you can plug Redis client telemetry into your existing OTel SDK/exporter pipeline.
This enables visibility into command latency, connection lifecycle, resiliency/errors, Pub/Sub traffic, streaming behavior, and client-side caching activity. On top of metrics, diagnostics channels provide a more abstract, higher-level way to track runtime behavior through low-overhead event streams (commands, batches, connection events, maintenance notifications, pub/sub, cache, and pool wait timing), so APM tools or custom subscribers can observe the system without changing application code.
Full Changelog: https://github.com/redis/node-redis/compare/redis@5.11.0...redis@5.12.0
This release introduces full asyncio Cluster PubSub support, bringing shard-channel capabilities (SSUBSCRIBE, SUNSUBSCRIBE, SPUBLISH) to the async RedisCluster client. The new ClusterPubSub class in redis.asyncio.cluster automatically routes shard-channel subscriptions to the correct cluster node based on key-slot hashing, manages per-node PubSub connections, and supports round-robin message retrieval across nodes. Users can create a cluster pubsub instance via RedisCluster.pubsub() and use ssubscribe(), sunsubscribe(), and get_sharded_message() just as they would with the sync cluster client.
Alongside this, Redis Keyspace Notifications are now supported for both standalone and cluster deployments, in both sync and async modes. New classes—KeyspaceNotifications, ClusterKeyspaceNotifications, AsyncKeyspaceNotifications, and AsyncClusterKeyspaceNotifications—provide a high-level API for subscribing to keyspace and keyevent channels. In cluster mode, notifications are automatically subscribed across all primary nodes (since each node only emits notifications for keys it owns), with built-in topology-change handling. Convenience methods like subscribe_keyspace(), subscribe_keyevent(), and channel classes (KeyspaceChannel, KeyeventChannel) simplify common subscription patterns. Both sync run_in_thread() and async listen() workflows are supported.
The @overload pattern has been applied systematically across core commands (core.py), VectorSet commands, and module commands (Search, JSON, TimeSeries, Bloom filters) to provide distinct return types for sync and async clients. Previously, methods returned a combined ResponseT (i.e., Union[Awaitable[Any], Any]), which caused static analysis tools like mypy and Pyright to flag false positives. Now, sync clients see concrete return types (e.g., int, bool, list[str]) while async clients see Awaitable[...] wrappers. This is a breaking change for type-checking only—runtime behavior is unchanged, but code relying on the old union return types in type annotations may need updates. Two new protocol types, SyncClientProtocol and AsyncClientProtocol, are used in overload signatures to enable this distinction.
We'd like to thank all the contributors who worked on this release! @abersheeran @alisaifee @majiayu000 @dmaier-redislabs @vladvildanov @petyaslavova
XIDMPRECORD internal command and AOFRW emission to restore stream IDMP stateXADD with IDMP/IDMPAUTO that hits an existing IID records the metadata changeHSETEX, HGETEX do not validate that FIELDS is specified only once-Refactored health check logic for MultiDBClient (#3994)
We'd like to thank all the contributors who worked on this release! @vladvildanov @petyaslavova
OpenTelemetry Native Metrics Support for asynchronous clients Added comprehensive OpenTelemetry metrics support for asynchronous clients following the OpenTelemetry Database Client Semantic Conventions. Metric groups include:
We'd like to thank all the contributors who worked on this release! @mitre88 @turanalmammadov @haosenwang1018 @Medno @vladvildanov @petyaslavova
Passwordless authentication for Redis Cloud Pro, Redis 8.4 on Redis Cloud Pro, Automatic database upgrades.
This is the General Availability (GA) release of Redis Insight 3.2.0, which includes new features, build updates, and bug fixes.
Connect to Azure Managed Redis with ease. Auto-discover databases across subscriptions with one-click import and connect using Entra ID and Azure passwordless (OAuth) authentication. To get started, follow the Azure setup guide to configure the required permissions.
Full Changelog: https://github.com/redis/RedisInsight/compare/3.0.3...3.2.0