DECRBY
Introduction
In Dragonfly, as well as in Redis and Valkey, the DECRBY
command is used to decrement the integer value of a key by a specified amount.
This command is particularly useful for counters, resource quotas, or rate-limiting scenarios where you want to decrease a value atomically with minimal overhead.
Syntax
DECRBY key decrement
- Time complexity: O(1)
- ACL categories: @write, @string, @fast
Parameter Explanations
key
: The key associated with the integer value that will be decremented.decrement
: The decrement amount, which is a signed integer. The value will be subtracted from the current value of the key.
Return Values
The command returns the integer result after the decrement operation is performed on the value of the key.
Code Examples
Basic Example
Decrement the value stored at a key by a specified amount:
dragonfly> SET mycounter 10
OK
dragonfly> DECRBY mycounter 3
(integer) 7
Using Non-Existent Keys
If the key does not exist, DECRBY
assumes the initial value to be 0
:
dragonfly> DECRBY non_existent 5
(integer) -5
Decrementing by a Negative Value (Effectively Incrementing)
You can provide a negative decrement
to increase the value:
dragonfly> SET score 50
OK
dragonfly> DECRBY score -10
(integer) 60 # Effectively increments by 10
Handling Large Decrement Values
You can use large decrement values, but the key's value must always remain within the 64-bit signed integer limit:
dragonfly> SET largekey 1000000000000
OK
dragonfly> DECRBY largekey 999999999999
(integer) 1
Best Practices
- Ensure the value of the key is always an integer or can be interpreted as an integer, otherwise a failure will occur.
- Avoid using excessive large decrements that push the value beyond the bounds of a signed 64-bit integer, since this will generate an overflow error.
- For scenarios such as rate-limiting or quotas, always check the resulting value after decrementing to ensure it has not gone below the allowed threshold.
Common Mistakes
- Using
DECRBY
on keys that don't contain numeric values, such as strings, will result in an error. - Assuming that the command creates a new
key
with the specified value, when the behavior for non-existent keys is to start with0
instead.
FAQs
What happens if the key is not an integer or the value is non-numeric?
The DECRBY
command will return an error if the key holds a value that is not an integer or cannot be interpreted as such.
Can I decrement the value of a key by 0
?
Yes, decrementing by 0
will simply return the current value of the key without making any changes.
What happens if I try to decrement a value outside the range of a 64-bit signed integer?
If you attempt to decrement a value beyond the supported range for 64-bit signed integers, you'll receive an overflow error.