Introducing Dragonfly Cloud! Learn More

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

Use Case(s)

The XADD command in Redis is used when working with streams. It appends a new entry to a stream. Common use cases include:

  1. Event logging: Each event is a new entry in the stream.
  2. Real-time data processing: Data can be added to the stream and processed by different consumers simultaneously.

Code Examples

Let's consider a scenario where we are using Redis for logging user activities. In this case, each activity will be a new entry in the stream.

We will use the go-redis package for our examples.

package main import ( "fmt" "" "context" ) func main() { rdb := redis.NewClient(&redis.Options{ Addr: "localhost:6379", Password: "", DB: 0, }) ctx := context.Background() err := rdb.XAdd(ctx, &redis.XAddArgs{ Stream: "userActivity", Values: map[string]interface{}{"user": "john", "activity": "login"}, }).Err() if err != nil { panic(err) } fmt.Println("User activity added") }

This simple program connects to Redis and adds an activity record to the 'userActivity' stream.

Best Practices

  1. Use meaningful and descriptive names for your streams. This makes it easier to identify their contents.

  2. When adding a large number of entries to a stream, you may want to limit its length to prevent it from consuming too much memory. You can do this using the MAXLEN argument in the XADD command.

Common Mistakes

  1. Not handling potential errors when interacting with Redis can lead to silent failures. Always check for an error after calling the XAdd function.

  2. While adding entries to a stream, make sure the fields and values correctly match up in your data structure. Mismatched or missing field-value pairs may cause issues.


Q: What data structure does Redis XADD use? A: It uses the Stream data structure.

Q: Is there a limit on the number of entries in a stream? A: By default, there isn't. However, you can set one using the MAXLEN argument in XADD.

Was this content helpful?

Start building today 

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