In-transit encryption client library code sample

This code sample shows a go-redis client library configuration for connecting to a Memorystore for Redis instance that has in-transit encryption enabled.

Connect to an instance

The following sample provides an example of how to instantiate a client, load an in-transit encryption Certificate Authority, and how to set up a connection pool.

Go

import(
"context"
"crypto/tls"
"crypto/x509"
"errors"
"fmt"
"io"
"time"
memorystore"cloud.google.com/go/redis/apiv1"
redispb"cloud.google.com/go/redis/apiv1/redispb"
"github.com/go-redis/redis/v8"
)
// ConnectToDatabase demonstrates how to use go-redis library to connect to a
// Memorystore Redis instance.
funcConnectToDatabase(wio.Writer,projectID,location,instanceIDstring)error{
// Instantiate a Redis administrative client
ctx:=context.Background()
adminClient,err:=memorystore.NewCloudRedisClient(ctx)
iferr!=nil{
returnerr
}
deferadminClient.Close ()
req:=&redispb.GetInstanceRequest{
Name:fmt.Sprintf("projects/%s/locations/%s/instances/%s",projectID,location,instanceID),
}
instance,err:=adminClient.GetInstance(ctx,req)
iferr!=nil{
returnerr
}
fmt.Fprintln(w,instance)
// Load CA cert
caCerts:=instance.GetServerCaCerts()
iflen(caCerts)==0{
returnerrors.New("memorystore: no server CA certs for instance")
}
caCertPool:=x509.NewCertPool()
caCertPool.AppendCertsFromPEM([]byte(caCerts[0].Cert))
// Setup Redis Connection pool
client:=redis.NewClient(&redis.Options{
Addr:fmt.Sprintf("%s:%d",instance.Host,instance.Port),
Password:"PASSWORD",
PoolSize:1,
MinIdleConns:1,
PoolTimeout:0,
IdleTimeout:20*time.Second,
DialTimeout:2*time.Second,
TLSConfig:&tls.Config{
RootCAs:caCertPool,
},
})
p,err:=client.Ping(ctx).Result()
iferr!=nil{
returnerr
}
fmt.Fprintf(w,"Response:\n%s",p)
returnnil
}

What's next

Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.

Last updated 2025年10月13日 UTC.