# Changelog

<Update label="March 2026">
Added [Upstash Redis Search](/redis/search/introduction) feature, a new extension for searching Redis data. It works with JSON, Hash, and String data, automatically keeps indexes in sync with Redis writes, and supports full-text search, filtering, aggregations, aliases, highlighting, fuzzy matching, phrase queries, and regex matching.

Redis Search is available through the [@upstash/redis](/redis/sdks/ts/overview) and [upstash-redis](/redis/sdks/py/overview) SDKs. If you already use `node-redis` or `ioredis`, you can use the [`@upstash/search-redis`](/redis/search/adapters/node-redis) and [`@upstash/search-ioredis`](/redis/search/adapters/ioredis) wrappers without switching clients.

New Redis Search commands:
- [`SEARCH.CREATE`](/redis/search/command-reference#searchcreate): Create a search index
- [`SEARCH.DROP`](/redis/search/command-reference#searchdrop): Remove a search index
- [`SEARCH.DESCRIBE`](/redis/search/command-reference#searchdescribe): Return metadata about a search index
- [`SEARCH.WAITINDEXING`](/redis/search/command-reference#searchwaitindexing): Wait until pending index updates are visible to queries
- [`SEARCH.QUERY`](/redis/search/command-reference#searchquery): Search documents with a JSON filter
- [`SEARCH.COUNT`](/redis/search/command-reference#searchcount): Count matching documents without returning them
- [`SEARCH.AGGREGATE`](/redis/search/command-reference#searchaggregate): Compute analytics over matching documents
- [`SEARCH.ALIASADD`](/redis/search/command-reference#searchaliasadd), [`SEARCH.ALIASDEL`](/redis/search/command-reference#searchaliasdel), and [`SEARCH.LISTALIASES`](/redis/search/command-reference#searchlistaliases): Manage search index aliases
</Update>

<Update label="December 2025">
Added [Redis Functions](https://redis.io/docs/latest/develop/programmability/functions-intro/) support. New commands are: 
- [`FCALL`](https://redis.io/docs/latest/commands/fcall/): Call a function with read/write capabilities
- [`FCALL_RO`](https://redis.io/docs/latest/commands/fcall_ro/): Call a function in read-only mode
- `FUNCTION DELETE`, `FUNCTION FLUSH`, `FUNCTION KILL`, `FUNCTION LIST`, `FUNCTION LOAD` and `FUNCTION STATS`

New Hash commands:
- [`HGETDEL`](https://redis.io/docs/latest/commands/hgetdel/): Get and delete hash fields atomically
- [`HGETEX`](https://redis.io/docs/latest/commands/hgetex/): Get hash fields with expiration support
- [`HSETEX`](https://redis.io/docs/latest/commands/hsetex/): Set hash fields with expiration support
    
New Stream Commands:
- [`XDELEX`](https://redis.io/docs/latest/commands/xdelex/): Extended delete for streams
- [`XACKDEL`](https://redis.io/docs/latest/commands/xackdel/): Acknowledge and delete stream entries
  
New Bit operations added:
- `BITOP DIFF`: A bit is set only if it's set in all source bitmaps
- `BITOP DIFF1`: A bit is set if it's set in the first key but not in any of the other keys
- `BITOP ANDOR`: A bit is set if it's set in X and also in one or more of Y1, Y2, ...
- `BITOP ONE`: A bit is set if it's set in exactly one source key
</Update>

<Update label="April 2025">
Added HASH expiration support. New commands are:
- [`HEXPIRE`](https://redis.io/docs/latest/commands/hexpire/): Set expiration time in seconds 
- [`HPEXPIRE`](https://redis.io/docs/latest/commands/hpexpire/): Set expiration time in milliseconds 
- [`HEXPIREAT`](https://redis.io/docs/latest/commands/hexpireat/): Set expiration time as Unix timestamp in seconds 
- [`HPEXPIREAT`](https://redis.io/docs/latest/commands/hpexpireat/): Set expiration time as Unix timestamp in milliseconds 
- [`HTTL`](https://redis.io/docs/latest/commands/httl/): Get remaining time to live in seconds 
- [`HPTTL`](https://redis.io/docs/latest/commands/hpttl/): Get remaining time to live in milliseconds 
- [`HEXPIRETIME`](https://redis.io/docs/latest/commands/hexpiretime/): Get absolute expiration time as Unix timestamp in seconds 
- [`HPEXPIRETIME`](https://redis.io/docs/latest/commands/hpexpiretime/): Get absolute expiration time as Unix timestamp in milliseconds 
- [`HPERSIST`](https://redis.io/docs/latest/commands/hpersist/): Remove expiration from hash fields
</Update>

<Update label="Feb 2025">
Added [`EVAL_RO`](https://redis.io/docs/latest/commands/eval_ro/) and [`EVALSHA_RO`](https://redis.io/docs/latest/commands/evalsha_ro/) 
commands introduced in Redis 7. 
</Update>

<Update label="July 2024">
- Added REST API support for [`MONITOR`](https://redis.io/docs/latest/commands/monitor/) and [`SUBSCRIBE`](https://redis.io/docs/latest/commands/subscribe/) 
commands using [SSE](https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events). 
See [Monitor](../features/restapi#monitor-command) and [Subscribe](../features/restapi#subscribe-command) docs.
- Added [`JSON.MSET`](https://redis.io/docs/latest/commands/json.mset/) and [`JSON.MERGE`](https://redis.io/docs/latest/commands/json.merge/) commands.
- Introduced the `IP Allowlist` feature for enhanced security on newly created databases. By default, all IP addresses will be allowed. 
However, access can be restricted by specifying permitted IP addresses or CIDR ranges.
</Update>


<Update label="June 2024">
- Added AWS AP-NorthEast-1 Japan region.
- Added an option to return REST response in [`RESP2`](https://redis.io/docs/latest/develop/reference/protocol-spec/) format instead of `JSON`. 
See [REST API docs](/redis/features/restapi#resp2-format-responses) for more information.
</Update>


<Update label="April 2024">
- Implemented [`MONITOR`](https://redis.io/docs/latest/commands/monitor/) command
- Implemented Redis [keyspace notifications](/redis/howto/keyspacenotifications)
- Implemented [`WAIT`](https://redis.io/docs/latest/commands/wait/) and [`WAITAOF`](https://redis.io/docs/latest/commands/waitaof/) commands
- Added `lag` field to [`XINFO GROUPS`](https://redis.io/docs/latest/commands/xinfo-groups/)
- Added [`CLIENT ID`](https://redis.io/docs/latest/commands/client-id/) subcommand
- Added password strength check to [`ACL SETUSER`](https://redis.io/docs/latest/commands/acl-setuser/) command
</Update>


<Update label="February 2024">
- Fixed JSON commands with empty keys
- Fixed a panic on `XTRIM` and `XDEL`
- Added `CLIENT SETNAME/NAME/LIST` subcommands
- Implemented near exact trim for streams
</Update>


<Update label="September 2023">
- Implemented some missing Redis commands:
    - `DUMP` 
    - `RESTORE`
    - `ZMPOP` 
    - `BZMPOP`
    - `LMPOP` 
    - `BLMPOP`
    - `SINTERCARD`
- Added support for `BIT/BYTE` flag to `BITPOS` and `BITCOUNT` commands
- Added support for `XX`, `NX`, `GT`, and `LT` arguments to `EXPIRE` commands
- Allowed `NX` and `GET` args to be used together in `SET` command
</Update>
