Redis is often used to store key-value pairs where keys may have a common prefix that denotes some logical grouping. For instance, you might store user-related data with keys like user:1:name
, user:1:email
, user:2:name
, etc.
Sometimes you need to retrieve all keys starting with a specific prefix, such as user:1
in this case, to perform operations on related data.
Golang's go-redis
client provides powerful commands to interact with Redis. The Keys
command gets all keys matching a pattern.
package main import ( "github.com/go-redis/redis/v8" "context" ) func main() { rdb := redis.NewClient(&redis.Options{ Addr: "localhost:6379", Password: "", // no password set DB: 0, // use default DB }) ctx := context.Background() // Get all keys starting with 'user:1' result, err := rdb.Keys(ctx, "user:1*").Result() if err != nil { panic(err) } for _, key := range result { fmt.Println(key) } }
This code connects to a local Redis instance, and retrieves all keys starting with user:1
. Please replace "user:1" with the actual prefix you are using.
Keys
command in production environments for large databases because it may degrade performance. Use Scan
instead.Keys
command in production which could lead to performance issues.Q: Can I use this method to get keys using other patterns, not just prefixes?
A: Yes, the pattern argument in the Keys
can be any glob-style pattern supported by Redis.
Dragonfly is fully compatible with the Redis ecosystem and requires no code changes to implement.