Skip to content

Adds HGETDEL Support to Valkey - #2851

Merged
ranshid merged 6 commits into
valkey-io:unstablefrom
roshkhatri:hgetdel
Nov 26, 2025
Merged

ranshid merged 6 commits into
valkey-io:unstablefrom
roshkhatri:hgetdel

Conversation

@roshkhatri

@roshkhatri roshkhatri commented Nov 17, 2025 •

Copy link
Copy Markdown
Member

Fixes #2850.

Adds support for HGETDEL to Valkey and aligns with Redis 8.0 feature.
Maintains syntax compatibility
Retrieves all the values, and null if fields dont exists and deletes once retrieved.

127.0.0.1:6379> HGETDEL key FIELDS numfields field [ field ... ]
127.0.0.1:6379> HSET foo field1 bar1 field2 bar2 field3 bar3
(integer) 3
127.0.0.1:6379> HGETDEL foo FIELDS 1 field2
1) "bar2"
127.0.0.1:6379> HGETDEL foo FIELDS 1 field2
1) (nil)
127.0.0.1:6379> HGETALL foo
1) "field1"
2) "bar1"
3) "field3"
4) "bar3"
127.0.0.1:6379>  HGETDEL foo FIELDS 2 field2 field3
1) (nil)
2) "bar3"
127.0.0.1:6379> HGETALL foo
1) "field1"
2) "bar1"
127.0.0.1:6379> HGETDEL foo FIELDS 3 field1 non-exist-field
(error) ERR syntax error
127.0.0.1:6379> HGETDEL foo FIELDS 2 field1 non-exist-field
1) "bar1"
2) (nil)
127.0.0.1:6379> HGETALL foo
(empty array)
127.0.0.1:6379> 

Signed-off-by: Roshan Khatri <rvkhatri@amazon.com>
@codecov

codecov Bot commented Nov 17, 2025 •

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 96.66667% with 1 line in your changes missing coverage. Please review.
✅ Project coverage is 72.41%. Comparing base (9562bdc) to head (809de8d).
⚠️ Report is 1 commits behind head on unstable.

Files with missing lines Patch % Lines
src/t_hash.c 96.66% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff            @@
##           unstable    #2851   +/-   ##
=========================================
  Coverage     72.41%   72.41%           
=========================================
  Files           128      128           
  Lines         70439    70469   +30     
=========================================
+ Hits          51006    51029   +23     
- Misses        19433    19440    +7     
Files with missing lines Coverage Δ
src/commands.def 100.00% <ø> (ø)
src/server.h 100.00% <ø> (ø)
src/t_hash.c 96.25% <96.66%> (+0.09%) ⬆️

... and 14 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@hwware hwware added the major-decision-pending Major decision pending by TSC team label Nov 17, 2025
@hwware

hwware commented Nov 17, 2025

Copy link
Copy Markdown
Contributor

@valkey-io/core-team I would like to add this pr to next meeting agenda to discuss more, Thanks

@hwware

hwware commented Nov 17, 2025

Copy link
Copy Markdown
Contributor

I think it is one feature to align with Redis 8

@zuiderkwast

Copy link
Copy Markdown
Contributor

If it's the same syntax as in Redis 8, I vote YES.

@roshkhatri

Copy link
Copy Markdown
Member Author

If it's the same syntax as in Redis 8, I vote YES.

It is not, but I can make it the same

@zuiderkwast

Copy link
Copy Markdown
Contributor

Ah... Redis insist on using this very ugly syntax for all new commands. It appears to be designed for machine generated command lines, not humans.

HGETDEL key FIELDS numfields field [field ...]

I think your syntax HGETDEL key field [field ...] is much nicer. I don't know if Redis compatibility is important or not. Maybe it's best to discuss it in a meeting then.

@valkey-io/client-maintainers WDYT?

@roshkhatri

Copy link
Copy Markdown
Member Author

Yeah, it is the same as HTTL

HTTL key FIELDS numfields field [ field ... ]

https://valkey.io/commands/httl/

The one I implemented is similar to HMGET: HMGET key field [ field ... ]

I think we have similar syntax in valkey as well so it would be generally better to keep compatibility

@JimB123

JimB123 commented Nov 17, 2025

Copy link
Copy Markdown
Member

I like consistency with HMGET better than creating a weird syntax just to align with Redis.

That said, IF the 3rd parameter is a number AND the number equals the number of remaining parameters, we could just silently ignore it. But, unfortunately, that becomes ambiguous in a case like this: HGETDEL key 3 4 5 6 - is "3" a field? or a count of fields?

@hpatro hpatro left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Regarding the syntax, users migrating from Redis to Valkey will have problems if we don't choose to stick with it. We have decided to stick through with so many of features so far (Hash field expiration / Search / JSON). So, I think we should continue have symmetry with them atleast on the data path commands which were introduced there first.

@hpatro
hpatro requested a review from ranshid November 17, 2025 19:59
Signed-off-by: Roshan Khatri <rvkhatri@amazon.com>
Signed-off-by: Roshan Khatri <rvkhatri@amazon.com>
@nihohit

nihohit commented Nov 17, 2025 •

Copy link
Copy Markdown
Contributor

Breaking API with Redis will mean that client maintainers might need to choose sides, and only fully support one DB, and offer partial support for the other, which will also lead to poor UX for the client users, since these details are easy to miss, and expectations won't match reality.
Unless there's a clear benefit that's worth the potential harm, I would prefer for valkey to be consistent with Redis where possible (and the other way around too, of course).

@roshkhatri

Copy link
Copy Markdown
Member Author

Updated the top comment and this PR now maintain syntax compatibility.

@hwware

hwware commented Nov 17, 2025 •

Copy link
Copy Markdown
Contributor

I have one question: In Redis 8.0, it introduces this command HGETDEL, the open source license was changed before Redis 8.0. I am not sure how many users migrating from Redis 8.0 to Valkey? Do we need still align with the Redis weird syntax?

Honestly, I do not like the format: HGETDEL key FIELDS numfields field [field ...]

@ranshid ranshid added needs-doc-pr This change needs to update a documentation page. Remove label once doc PR is open. release-notes This issue should get a line item in the release notes labels Nov 17, 2025

@ranshid ranshid left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Gave a quick one (and will continue tomorrow)
Looks good overall. I would be happy if we can also include a test in hashexpire.tcl to test the command when there are expired fields.

Comment thread src/t_hash.c Outdated
Comment thread src/t_hash.c Outdated
Comment thread src/t_hash.c Outdated
Comment thread src/commands/hgetdel.json
@ranshid

ranshid commented Nov 17, 2025

Copy link
Copy Markdown
Member

I have one question: In Redis 8.0, it introduces this command HGETDEL, the open source license was changed before Redis 8.0. I am not sure how many users migrating from Redis 8.0 to Valkey? Do we need still align with the Redis weird syntax?

Honestly, I do not like the format: HGETDEL key FIELDS numfields field [field ...]

I also do not like the FIELDS (although it has advantages for adding future command arguments), but I agree with the state that we should be more aligned with the client ecosystem needs and I think it is overriding personal taste ATM.

@rueian

rueian commented Nov 17, 2025

Copy link
Copy Markdown
Contributor

As a client maintainer, I suggest aligning with the weird syntax as long as the command name remains the same.

Signed-off-by: Roshan Khatri <rvkhatri@amazon.com>
@yangbodong22011

Copy link
Copy Markdown
Contributor

I vote for use Redis syntax. (for save time and compatibility, Redis client for Valkey, Valkey client for Redis)

P.S. Actually, client can support both two syntax use two api.

@ranshid

ranshid commented Nov 18, 2025 •

Copy link
Copy Markdown
Member

@valkey-io/core-team Let me summarize the decision points:

  • Should we support this new API? this functionality is already available since Valkey 9.0 (eg HGETEX myhash EX 0 FIELDS ....)
  • Should we duplicate the Redis API? The majority of comments here suggest we do. This will probably make it easier for client libraries to support it ifor both Redis and Valkey
  • Order regarding command complexity. When we introduced HFE we decided to set the complexity of variadic commands.
    I think O(N) sounds better but in that case we need to take an action item to align other commands (can/should be in a separate PR)
  • keyspace notifications: Currently the decision is to produce keyspace evenets ONLY when there are actually mutations oin the objects. we will trigger a SINGLE hdel event in case we deleted at least 1 field and del event in case the object was deleted after all fields deleted.

@hwware

hwware commented Nov 18, 2025

Copy link
Copy Markdown
Contributor

If it's the same syntax as in Redis 8, I vote YES.

It is not, but I can make it the same

Now the syntax is same as redis https://redis.io/docs/latest/commands/hgetdel/

@ranshid

ranshid commented Nov 19, 2025 •

Copy link
Copy Markdown
Member

@valkey-io/core-team do you want to try and take a decision offline (on this PR) or should I schedule this to be a topic on Monday?
Seems to me it might not require an extensive talk so maybe we can push this by aligning offline?

@enjoy-binbin

Copy link
Copy Markdown
Member

Also +1 for Wen's comments. (Yes, align with Redis syntax, O(n), single hdel event.)

@madolson

Copy link
Copy Markdown
Member
  1. Weekly meeting. This feature is probably OK since compatibility is useful and the cost for this feature is quite low. We would like to have better long term guidance on what features we implement from Redis though.

@zuiderkwast zuiderkwast added major-decision-approved Major decision approved by TSC team and removed major-decision-pending Major decision pending by TSC team labels Nov 24, 2025
Comment thread src/t_hash.c
ranshid added a commit that referenced this pull request Nov 26, 2025
#2875)

When we added the Hash Field Expiration feature in Valkey 9.0, some of
the new command docs included complexity description of O(1) even tough
they except multiple arguments.
(see discussion in
#2851 (comment))
This PR does:
1. align all the commands to the same description
2. fix the complexity description of some commands (eg HSETEX and
HGETEX)

---------

Signed-off-by: Ran Shidlansik <ranshid@amazon.com>
ranshid added a commit to ranshid/valkey that referenced this pull request Nov 26, 2025
valkey-io#2875)

When we added the Hash Field Expiration feature in Valkey 9.0, some of
the new command docs included complexity description of O(1) even tough
they except multiple arguments.
(see discussion in
valkey-io#2851 (comment))
This PR does:
1. align all the commands to the same description
2. fix the complexity description of some commands (eg HSETEX and
HGETEX)

---------

Signed-off-by: Ran Shidlansik <ranshid@amazon.com>
Signed-off-by: Ran Shidlansik <ranshid@amazon.com>
Signed-off-by: Ran Shidlansik <ranshid@amazon.com>

@ranshid ranshid left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@ranshid
ranshid merged commit 56ab3c4 into valkey-io:unstable Nov 26, 2025
56 checks passed
zhijun42 pushed a commit to zhijun42/valkey that referenced this pull request Nov 28, 2025
valkey-io#2875)

When we added the Hash Field Expiration feature in Valkey 9.0, some of
the new command docs included complexity description of O(1) even tough
they except multiple arguments.
(see discussion in
valkey-io#2851 (comment))
This PR does:
1. align all the commands to the same description
2. fix the complexity description of some commands (eg HSETEX and
HGETEX)

---------

Signed-off-by: Ran Shidlansik <ranshid@amazon.com>
zhijun42 pushed a commit to zhijun42/valkey that referenced this pull request Nov 28, 2025
Fixes this: valkey-io#2850
Adds support for HGETDEL to Valkey and aligns with Redis 8.0 feature.
Maintains syntax compatibility
Retrieves all the values, and null if fields dont exists and deletes
once retrieved.
```
127.0.0.1:6379> HGETDEL key FIELDS numfields field [ field ... ]
```
```
127.0.0.1:6379> HSET foo field1 bar1 field2 bar2 field3 bar3
(integer) 3
127.0.0.1:6379> HGETDEL foo FIELDS 1 field2
1) "bar2"
127.0.0.1:6379> HGETDEL foo FIELDS 1 field2
1) (nil)
127.0.0.1:6379> HGETALL foo
1) "field1"
2) "bar1"
3) "field3"
4) "bar3"
127.0.0.1:6379>  HGETDEL foo FIELDS 2 field2 field3
1) (nil)
2) "bar3"
127.0.0.1:6379> HGETALL foo
1) "field1"
2) "bar1"
127.0.0.1:6379> HGETDEL foo FIELDS 3 field1 non-exist-field
(error) ERR syntax error
127.0.0.1:6379> HGETDEL foo FIELDS 2 field1 non-exist-field
1) "bar1"
2) (nil)
127.0.0.1:6379> HGETALL foo
(empty array)
127.0.0.1:6379> 
```

---------

Signed-off-by: Roshan Khatri <rvkhatri@amazon.com>
Signed-off-by: Ran Shidlansik <ranshid@amazon.com>
Co-authored-by: Ran Shidlansik <ranshid@amazon.com>
zhijun42 pushed a commit to zhijun42/valkey that referenced this pull request Nov 28, 2025
valkey-io#2875)

When we added the Hash Field Expiration feature in Valkey 9.0, some of
the new command docs included complexity description of O(1) even tough
they except multiple arguments.
(see discussion in
valkey-io#2851 (comment))
This PR does:
1. align all the commands to the same description
2. fix the complexity description of some commands (eg HSETEX and
HGETEX)

---------

Signed-off-by: Ran Shidlansik <ranshid@amazon.com>
zhijun42 pushed a commit to zhijun42/valkey that referenced this pull request Nov 28, 2025
Fixes this: valkey-io#2850
Adds support for HGETDEL to Valkey and aligns with Redis 8.0 feature.
Maintains syntax compatibility
Retrieves all the values, and null if fields dont exists and deletes
once retrieved.
```
127.0.0.1:6379> HGETDEL key FIELDS numfields field [ field ... ]
```
```
127.0.0.1:6379> HSET foo field1 bar1 field2 bar2 field3 bar3
(integer) 3
127.0.0.1:6379> HGETDEL foo FIELDS 1 field2
1) "bar2"
127.0.0.1:6379> HGETDEL foo FIELDS 1 field2
1) (nil)
127.0.0.1:6379> HGETALL foo
1) "field1"
2) "bar1"
3) "field3"
4) "bar3"
127.0.0.1:6379>  HGETDEL foo FIELDS 2 field2 field3
1) (nil)
2) "bar3"
127.0.0.1:6379> HGETALL foo
1) "field1"
2) "bar1"
127.0.0.1:6379> HGETDEL foo FIELDS 3 field1 non-exist-field
(error) ERR syntax error
127.0.0.1:6379> HGETDEL foo FIELDS 2 field1 non-exist-field
1) "bar1"
2) (nil)
127.0.0.1:6379> HGETALL foo
(empty array)
127.0.0.1:6379> 
```

---------

Signed-off-by: Roshan Khatri <rvkhatri@amazon.com>
Signed-off-by: Ran Shidlansik <ranshid@amazon.com>
Co-authored-by: Ran Shidlansik <ranshid@amazon.com>
zhijun42 pushed a commit to zhijun42/valkey that referenced this pull request Nov 28, 2025
valkey-io#2875)

When we added the Hash Field Expiration feature in Valkey 9.0, some of
the new command docs included complexity description of O(1) even tough
they except multiple arguments.
(see discussion in
valkey-io#2851 (comment))
This PR does:
1. align all the commands to the same description
2. fix the complexity description of some commands (eg HSETEX and
HGETEX)

---------

Signed-off-by: Ran Shidlansik <ranshid@amazon.com>
zhijun42 pushed a commit to zhijun42/valkey that referenced this pull request Nov 28, 2025
Fixes this: valkey-io#2850
Adds support for HGETDEL to Valkey and aligns with Redis 8.0 feature.
Maintains syntax compatibility
Retrieves all the values, and null if fields dont exists and deletes
once retrieved.
```
127.0.0.1:6379> HGETDEL key FIELDS numfields field [ field ... ]
```
```
127.0.0.1:6379> HSET foo field1 bar1 field2 bar2 field3 bar3
(integer) 3
127.0.0.1:6379> HGETDEL foo FIELDS 1 field2
1) "bar2"
127.0.0.1:6379> HGETDEL foo FIELDS 1 field2
1) (nil)
127.0.0.1:6379> HGETALL foo
1) "field1"
2) "bar1"
3) "field3"
4) "bar3"
127.0.0.1:6379>  HGETDEL foo FIELDS 2 field2 field3
1) (nil)
2) "bar3"
127.0.0.1:6379> HGETALL foo
1) "field1"
2) "bar1"
127.0.0.1:6379> HGETDEL foo FIELDS 3 field1 non-exist-field
(error) ERR syntax error
127.0.0.1:6379> HGETDEL foo FIELDS 2 field1 non-exist-field
1) "bar1"
2) (nil)
127.0.0.1:6379> HGETALL foo
(empty array)
127.0.0.1:6379> 
```

---------

Signed-off-by: Roshan Khatri <rvkhatri@amazon.com>
Signed-off-by: Ran Shidlansik <ranshid@amazon.com>
Co-authored-by: Ran Shidlansik <ranshid@amazon.com>
zuiderkwast pushed a commit to zuiderkwast/valkey that referenced this pull request Dec 4, 2025
valkey-io#2875)

When we added the Hash Field Expiration feature in Valkey 9.0, some of
the new command docs included complexity description of O(1) even tough
they except multiple arguments.
(see discussion in
valkey-io#2851 (comment))
This PR does:
1. align all the commands to the same description
2. fix the complexity description of some commands (eg HSETEX and
HGETEX)

---------

Signed-off-by: Ran Shidlansik <ranshid@amazon.com>
zuiderkwast pushed a commit that referenced this pull request Dec 9, 2025
#2875)

When we added the Hash Field Expiration feature in Valkey 9.0, some of
the new command docs included complexity description of O(1) even tough
they except multiple arguments.
(see discussion in
#2851 (comment))
This PR does:
1. align all the commands to the same description
2. fix the complexity description of some commands (eg HSETEX and
HGETEX)

---------

Signed-off-by: Ran Shidlansik <ranshid@amazon.com>
aradz44 pushed a commit to aradz44/valkey that referenced this pull request Dec 23, 2025
valkey-io#2875)

When we added the Hash Field Expiration feature in Valkey 9.0, some of
the new command docs included complexity description of O(1) even tough
they except multiple arguments.
(see discussion in
valkey-io#2851 (comment))
This PR does:
1. align all the commands to the same description
2. fix the complexity description of some commands (eg HSETEX and
HGETEX)

---------

Signed-off-by: Ran Shidlansik <ranshid@amazon.com>
aradz44 pushed a commit to aradz44/valkey that referenced this pull request Dec 23, 2025
Fixes this: valkey-io#2850
Adds support for HGETDEL to Valkey and aligns with Redis 8.0 feature.
Maintains syntax compatibility
Retrieves all the values, and null if fields dont exists and deletes
once retrieved.
```
127.0.0.1:6379> HGETDEL key FIELDS numfields field [ field ... ]
```
```
127.0.0.1:6379> HSET foo field1 bar1 field2 bar2 field3 bar3
(integer) 3
127.0.0.1:6379> HGETDEL foo FIELDS 1 field2
1) "bar2"
127.0.0.1:6379> HGETDEL foo FIELDS 1 field2
1) (nil)
127.0.0.1:6379> HGETALL foo
1) "field1"
2) "bar1"
3) "field3"
4) "bar3"
127.0.0.1:6379>  HGETDEL foo FIELDS 2 field2 field3
1) (nil)
2) "bar3"
127.0.0.1:6379> HGETALL foo
1) "field1"
2) "bar1"
127.0.0.1:6379> HGETDEL foo FIELDS 3 field1 non-exist-field
(error) ERR syntax error
127.0.0.1:6379> HGETDEL foo FIELDS 2 field1 non-exist-field
1) "bar1"
2) (nil)
127.0.0.1:6379> HGETALL foo
(empty array)
127.0.0.1:6379> 
```

---------

Signed-off-by: Roshan Khatri <rvkhatri@amazon.com>
Signed-off-by: Ran Shidlansik <ranshid@amazon.com>
Co-authored-by: Ran Shidlansik <ranshid@amazon.com>
jdheyburn pushed a commit to jdheyburn/valkey that referenced this pull request Jan 8, 2026
valkey-io#2875)

When we added the Hash Field Expiration feature in Valkey 9.0, some of
the new command docs included complexity description of O(1) even tough
they except multiple arguments.
(see discussion in
valkey-io#2851 (comment))
This PR does:
1. align all the commands to the same description
2. fix the complexity description of some commands (eg HSETEX and
HGETEX)

---------

Signed-off-by: Ran Shidlansik <ranshid@amazon.com>
jdheyburn pushed a commit to jdheyburn/valkey that referenced this pull request Jan 8, 2026
Fixes this: valkey-io#2850
Adds support for HGETDEL to Valkey and aligns with Redis 8.0 feature.
Maintains syntax compatibility
Retrieves all the values, and null if fields dont exists and deletes
once retrieved.
```
127.0.0.1:6379> HGETDEL key FIELDS numfields field [ field ... ]
```
```
127.0.0.1:6379> HSET foo field1 bar1 field2 bar2 field3 bar3
(integer) 3
127.0.0.1:6379> HGETDEL foo FIELDS 1 field2
1) "bar2"
127.0.0.1:6379> HGETDEL foo FIELDS 1 field2
1) (nil)
127.0.0.1:6379> HGETALL foo
1) "field1"
2) "bar1"
3) "field3"
4) "bar3"
127.0.0.1:6379>  HGETDEL foo FIELDS 2 field2 field3
1) (nil)
2) "bar3"
127.0.0.1:6379> HGETALL foo
1) "field1"
2) "bar1"
127.0.0.1:6379> HGETDEL foo FIELDS 3 field1 non-exist-field
(error) ERR syntax error
127.0.0.1:6379> HGETDEL foo FIELDS 2 field1 non-exist-field
1) "bar1"
2) (nil)
127.0.0.1:6379> HGETALL foo
(empty array)
127.0.0.1:6379> 
```

---------

Signed-off-by: Roshan Khatri <rvkhatri@amazon.com>
Signed-off-by: Ran Shidlansik <ranshid@amazon.com>
Co-authored-by: Ran Shidlansik <ranshid@amazon.com>
zuiderkwast pushed a commit to valkey-io/valkey-doc that referenced this pull request Feb 3, 2026
Adds documentation for `HGETDEL` command which was added here:
valkey-io/valkey#2851

Signed-off-by: Roshan Khatri <rvkhatri@amazon.com>
hpatro pushed a commit to hpatro/valkey that referenced this pull request Mar 5, 2026
valkey-io#2875)

When we added the Hash Field Expiration feature in Valkey 9.0, some of
the new command docs included complexity description of O(1) even tough
they except multiple arguments.
(see discussion in
valkey-io#2851 (comment))
This PR does:
1. align all the commands to the same description
2. fix the complexity description of some commands (eg HSETEX and
HGETEX)

---------

Signed-off-by: Ran Shidlansik <ranshid@amazon.com>
Signed-off-by: Harkrishn Patro <bunty.hari@gmail.com>
hpatro pushed a commit to hpatro/valkey that referenced this pull request Mar 5, 2026
Fixes this: valkey-io#2850
Adds support for HGETDEL to Valkey and aligns with Redis 8.0 feature.
Maintains syntax compatibility
Retrieves all the values, and null if fields dont exists and deletes
once retrieved.
```
127.0.0.1:6379> HGETDEL key FIELDS numfields field [ field ... ]
```
```
127.0.0.1:6379> HSET foo field1 bar1 field2 bar2 field3 bar3
(integer) 3
127.0.0.1:6379> HGETDEL foo FIELDS 1 field2
1) "bar2"
127.0.0.1:6379> HGETDEL foo FIELDS 1 field2
1) (nil)
127.0.0.1:6379> HGETALL foo
1) "field1"
2) "bar1"
3) "field3"
4) "bar3"
127.0.0.1:6379>  HGETDEL foo FIELDS 2 field2 field3
1) (nil)
2) "bar3"
127.0.0.1:6379> HGETALL foo
1) "field1"
2) "bar1"
127.0.0.1:6379> HGETDEL foo FIELDS 3 field1 non-exist-field
(error) ERR syntax error
127.0.0.1:6379> HGETDEL foo FIELDS 2 field1 non-exist-field
1) "bar1"
2) (nil)
127.0.0.1:6379> HGETALL foo
(empty array)
127.0.0.1:6379>
```

---------

Signed-off-by: Roshan Khatri <rvkhatri@amazon.com>
Signed-off-by: Ran Shidlansik <ranshid@amazon.com>
Co-authored-by: Ran Shidlansik <ranshid@amazon.com>
Signed-off-by: Harkrishn Patro <bunty.hari@gmail.com>
zeekay pushed a commit to hanzoai/kv that referenced this pull request Jul 26, 2026
…s (#2875)

When we added the Hash Field Expiration feature in Valkey 9.0, some of
the new command docs included complexity description of O(1) even tough
they except multiple arguments.
(see discussion in
valkey-io/valkey#2851 (comment))
This PR does:
1. align all the commands to the same description
2. fix the complexity description of some commands (eg HSETEX and
HGETEX)

---------

Signed-off-by: Ran Shidlansik <ranshid@amazon.com>
zeekay pushed a commit to hanzoai/kv that referenced this pull request Jul 26, 2026
…s (#2875)

When we added the Hash Field Expiration feature in Valkey 9.0, some of
the new command docs included complexity description of O(1) even tough
they except multiple arguments.
(see discussion in
valkey-io/valkey#2851 (comment))
This PR does:
1. align all the commands to the same description
2. fix the complexity description of some commands (eg HSETEX and
HGETEX)

---------

Signed-off-by: Ran Shidlansik <ranshid@amazon.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

major-decision-approved Major decision approved by TSC team needs-doc-pr This change needs to update a documentation page. Remove label once doc PR is open. release-notes This issue should get a line item in the release notes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[NEW] HGETDEL support in Valkey