Redis HDEL in Golang (Detailed Guide w/ Code Examples)

Use Case(s)

The HDEL command is used in Redis to remove one or more fields from a hash stored at a key. This is commonly used in scenarios where you need to manage and manipulate complex data structures, like records of objects with various fields, in your database.

Code Examples

Let's assume that we have a hash at key "user:1000" with fields "name", "email", "password".

package main import ( "" "context" ) func main() { rdb := redis.NewClient(&redis.Options{ Addr: "localhost:6379", Password: "", // no password set DB: 0, // use default DB }) ctx := context.Background() // HDEL operation cmd := rdb.HDel(ctx, "user:1000", "password") if err := cmd.Err(); err != nil { panic(err) } println("Fields deleted: ", cmd.Val()) }

In this code example, we connect to our local Redis and execute an HDEL operation on the hash "user:1000" to delete field "password". If the operation is successful, it will print the number of fields that were deleted.

Best Practices

  1. It's important to handle errors for each Redis operation to ensure your application behaves correctly even when something goes wrong.
  2. You should always use context for cancellation and timeouts, not only for Redis operations but for all database operations in general in Golang.

Common Mistakes

  1. Not checking whether the specified field exists before executing HDEL. Always ensure the field exists before attempting to delete it.
  2. Ignoring the returned value from HDEL. The return value indicates the number of fields that were actually deleted, which can be useful for debugging or error checking.


  1. What happens if the specified hash key does not exist?

    • If the key does not exist, Redis will consider it as an empty hash and returns 0.
  2. What if the fields provided do not exist in the hash?

    • If the provided field(s) do not exist or the key itself does not exist, HDEL returns 0.

Was this content helpful?

Start building today

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