Connection Setup
Connection Setup
Section titled “Connection Setup”Constructor Differences
Section titled “Constructor Differences”- 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.
Standalone Mode
Section titled “Standalone Mode”go-redis
import ( "context" "github.com/redis/go-redis/v9")
var ctx = context.Background()
// Simple connectionrdb := redis.NewClient(&redis.Options{ Addr: "localhost:6379",})
// With optionsrdbWithOptions := 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 connectionclient, err := glide.NewClient(&config.ClientConfiguration{ Addresses: []config.NodeAddress{ {Host: "localhost", Port: 6379}, },})
// With optionsclientWithOptions, 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,})Cluster Mode
Section titled “Cluster Mode”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 optionsclusterWithOptions := 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 optionsclientWithOptions, 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, }, },})Constructor Parameters Comparison
Section titled “Constructor Parameters Comparison”The table below compares go-redis options with Glide configuration parameters:
| go-redis Parameter | Equivalent Glide Configuration |
|---|---|
Addr: string | Addresses: []config.NodeAddress{{Host: string, Port: int}} |
Username: string | Credentials: &config.ServerCredentials{Username: string} |
Password: string | Credentials: &config.ServerCredentials{Password: string} |
DB: int | DatabaseId: int |
TLSConfig: *tls.Config | UseTLS: true |
DialTimeout: time.Duration | RequestTimeout: time.Duration |
ReadTimeout: time.Duration | RequestTimeout: time.Duration |
WriteTimeout: time.Duration | RequestTimeout: time.Duration |
MaxRetries: int | ConnectionBackoff: &config.ConnectionBackoffStrategy{NumberOfRetries: int} |
MinRetryBackoff: time.Duration | ConnectionBackoff: &config.ConnectionBackoffStrategy{Factor: int, ExponentBase: int} |
MaxRetryBackoff: time.Duration | ConnectionBackoff: &config.ConnectionBackoffStrategy{Factor: int, ExponentBase: int} |
ClientName: string | ClientName: string |
ReadFrom: ReadFrom | ReadFrom: config.ReadFrom.Replica / config.ReadFrom.PreferReplica / config.ReadFrom.AZAffinity / config.ReadFrom.AZAffinityReplicasAndPrimary Read about AZ affinity |
LazyConnect: bool | LazyConnect: bool |
Advanced configuration
Both Standalone and Cluster modes support advanced configuration options:
// Standalone modeclient, err := glide.NewClient(&config.ClientConfiguration{ Addresses: []config.NodeAddress{{Host: "localhost", Port: 6379}}, RequestTimeout: 500 * time.Millisecond, UseTLS: true, ClientName: "my-client",})
// Cluster modeclusterClient, err := glide.NewClusterClient(&config.ClusterClientConfiguration{ Addresses: []config.NodeAddress{{Host: "localhost", Port: 6379}}, RequestTimeout: 500 * time.Millisecond, UseTLS: true, ClientName: "my-cluster-client",})