Skip to content

Connection Setup

  • go-redis offers multiple client types and configuration options for different connection scenarios
  • Glide uses a single configuration object that comes pre-configured with best practices

Glide typically requires minimal configuration changes for:

  • Timeout settings
  • TLS configuration
  • Read from replica settings
  • User authentication (username & password)

For advanced configurations, refer to the Golang Glide Guides.

go-redis

import (
"context"
"github.com/redis/go-redis/v9"
)
var ctx = context.Background()
// Simple connection
rdb := redis.NewClient(&redis.Options{
Addr: "localhost:6379",
})
// With options
rdbWithOptions := redis.NewClient(&redis.Options{
Addr: "localhost:6379",
Username: "user",
Password: "password",
})

Glide

import (
"context"
"github.com/valkey-io/valkey-glide/go/v2"
"github.com/valkey-io/valkey-glide/go/v2/config"
)
var ctx = context.Background()
// Simple connection
client, err := glide.NewClient(&config.ClientConfiguration{
Addresses: []config.NodeAddress{
{Host: "localhost", Port: 6379},
},
})
// With options
clientWithOptions, err := glide.NewClient(&config.ClientConfiguration{
Addresses: []config.NodeAddress{
{Host: "localhost", Port: 6379},
},
UseTLS: true,
Credentials: &config.ServerCredentials{
Username: "user",
Password: "password",
},
ReadFrom: config.ReadFromAZAffinity,
RequestTimeout: 2000 * time.Millisecond,
ConnectionBackoff: &config.ConnectionBackoffStrategy{
NumberOfRetries: 5,
Factor: 2,
ExponentBase: 2,
JitterPercent: 10,
},
AdvancedConfiguration: &config.AdvancedClientConfiguration{
ConnectionTimeout: 5000 * time.Millisecond,
TLSAdvancedConfiguration: &config.TLSAdvancedConfiguration{
UseInsecureTLS: false,
},
},
DatabaseId: 0,
})

go-redis

import (
"github.com/redis/go-redis/v9"
)
cluster := redis.NewClusterClient(&redis.ClusterOptions{
Addrs: []string{"127.0.0.1:6379", "127.0.0.1:6380"},
})
// With options
clusterWithOptions := redis.NewClusterClient(&redis.ClusterOptions{
Addrs: []string{"127.0.0.1:6379", "127.0.0.1:6380"},
Username: "user",
Password: "password",
})

Glide

import (
"github.com/valkey-io/valkey-glide/go/v2"
"github.com/valkey-io/valkey-glide/go/v2/config"
)
client, err := glide.NewClusterClient(&config.ClusterClientConfiguration{
Addresses: []config.NodeAddress{
{Host: "127.0.0.1", Port: 6379},
{Host: "127.0.0.1", Port: 6380},
},
})
// With options
clientWithOptions, err := glide.NewClusterClient(&config.ClusterClientConfiguration{
Addresses: []config.NodeAddress{
{Host: "127.0.0.1", Port: 6379},
{Host: "127.0.0.1", Port: 6380},
},
UseTLS: true,
Credentials: &config.ServerCredentials{
Username: "user",
Password: "password",
},
ReadFrom: config.ReadFromAZAffinity,
RequestTimeout: 2000 * time.Millisecond,
ConnectionBackoff: &config.ConnectionBackoffStrategy{
NumberOfRetries: 5,
Factor: 2,
ExponentBase: 2,
JitterPercent: 10,
},
AdvancedConfiguration: &config.AdvancedClusterClientConfiguration{
ConnectionTimeout: 5000 * time.Millisecond,
TLSAdvancedConfiguration: &config.TLSAdvancedConfiguration{
UseInsecureTLS: false,
},
},
})

The table below compares go-redis options with Glide configuration parameters:

go-redis ParameterEquivalent Glide Configuration
Addr: stringAddresses: []config.NodeAddress{{Host: string, Port: int}}
Username: stringCredentials: &config.ServerCredentials{Username: string}
Password: stringCredentials: &config.ServerCredentials{Password: string}
DB: intDatabaseId: int
TLSConfig: *tls.ConfigUseTLS: true
DialTimeout: time.DurationRequestTimeout: time.Duration
ReadTimeout: time.DurationRequestTimeout: time.Duration
WriteTimeout: time.DurationRequestTimeout: time.Duration
MaxRetries: intConnectionBackoff: &config.ConnectionBackoffStrategy{NumberOfRetries: int}
MinRetryBackoff: time.DurationConnectionBackoff: &config.ConnectionBackoffStrategy{Factor: int, ExponentBase: int}
MaxRetryBackoff: time.DurationConnectionBackoff: &config.ConnectionBackoffStrategy{Factor: int, ExponentBase: int}
ClientName: stringClientName: string
ReadFrom: ReadFromReadFrom: config.ReadFrom.Replica / config.ReadFrom.PreferReplica / config.ReadFrom.AZAffinity / config.ReadFrom.AZAffinityReplicasAndPrimary Read about AZ affinity
LazyConnect: boolLazyConnect: bool

Advanced configuration

Both Standalone and Cluster modes support advanced configuration options:

// Standalone mode
client, err := glide.NewClient(&config.ClientConfiguration{
Addresses: []config.NodeAddress{{Host: "localhost", Port: 6379}},
RequestTimeout: 500 * time.Millisecond,
UseTLS: true,
ClientName: "my-client",
})
// Cluster mode
clusterClient, err := glide.NewClusterClient(&config.ClusterClientConfiguration{
Addresses: []config.NodeAddress{{Host: "localhost", Port: 6379}},
RequestTimeout: 500 * time.Millisecond,
UseTLS: true,
ClientName: "my-cluster-client",
})