Redis HINCRBY in PHP (Detailed Guide w/ Code Examples)

Use Case(s)

The HINCRBY command in Redis is used when you need to increment the integer stored at field in the hash stored at key by increment. This operation is atomic, meaning it's safe to use in concurrent environments. It's typically utilized for counters in a hash data structure.

Code Examples

<?php $redis = new Redis(); $redis->connect('', 6379); // Adding initial value of 'counter_field' as 5 $redis->hSet('hash_key', 'counter_field', 5); // Using HINCRBY to increment the 'counter_field' by 2 $new_value = $redis->hIncrBy('hash_key', 'counter_field', 2); echo "New value: " . strval($new_value); // Outputs "New value: 7" ?>

This first example demonstrates how to connect to a Redis server using PHP and uses HINCRBY to increment an integer value within a hash table. We first set an initial value of 5 to 'counter_field'. Then, we increment this value by 2 using hIncrBy.

<?php $redis = new Redis(); $redis->connect('', 6379); // Check if 'counter_field' exists before proceeding if ($redis->hExists('hash_key', 'counter_field')) { $new_value = $redis->hIncrBy('hash_key', 'counter_field', 3); echo "New value: " . strval($new_value); } else { echo "'counter_field' does not exist."; } ?>

The second example introduces a conditional check with hExists to ensure a field exists in the hash before trying to increment it. This can prevent errors if the field is not yet initialized.

Best Practices

  • Always check if the field exists before using HINCRBY to avoid unintentional creation of fields.
  • Use HINCRBY for atomic increments in scenarios with concurrent accesses to avoid race conditions.

Common Mistakes

  • Trying to increment a non-integer field with HINCRBY will return an error as it only works with integer values.
  • Neglecting to handle connection errors when connecting to the Redis server could lead to unhandled exceptions in your program.


Q: Can I use HINCRBY with non-integer values? A: No, you cannot. The HINCRBY command in Redis only works on integer values.

Q: What happens if I try to increment a field that doesn't exist? A: If you try to increment a field that doesn't exist, Redis will assume its value is 0 and apply the increment, effectively creating the field.

Was this content helpful?

Start building today

Dragonfly is fully compatible with the Redis ecosystem and requires no code changes to implement.