redisclient

package
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 15, 2025 License: Apache-2.0 Imports: 8 Imported by: 0

README

redisclient

Go Reference

Cliente Redis extensível para Go, baseado em go-redis, com suporte a conexões Standalone, Cluster e Sentinel, interface simples e integração fácil com middlewares e cache.

Instalação

go get gitlab.globoi.com/globoplay/go-prime/clients/redisclient

Visão Geral

  • Suporte a Redis Standalone, Cluster e Sentinel
  • Interface simples: Get, Set
  • Ideal para cache, filas, locks e integrações
  • Pronto para uso em middlewares HTTP

Modos de Conexão

Standalone

Conexão simples com um único nó Redis:

import "gitlab.globoi.com/globoplay/go-prime/clients/redisclient"

client := redisclient.NewRedisClientFromURL("redis://localhost:6379")
Cluster

Conexão com Redis Cluster:

client := redisclient.NewRedisClientFromURL("redis+cluster://host1:6379,host2:6379,host3:6379")
Sentinel

Conexão com Redis Sentinel:

client := redisclient.NewRedisClientFromURL("redis+sentinel://sentinel1:26379,sentinel2:26379/service_name:mymaster")

Interface e Métodos

type IRedisClient interface {
    Get(ctx context.Context, key string) (string, error)
    Set(ctx context.Context, key string, value any, expiration time.Duration) error
}
  • Get: Busca o valor de uma chave
  • Set: Define o valor de uma chave, com expiração opcional

Exemplos de Uso

import (
    "context"
    "log"
    "time"
    "gitlab.globoi.com/globoplay/go-prime/clients/redisclient"
)

func main() {
    client, err := redisclient.NewRedisClientFromURL("redis://localhost:6379")
    if err != nil {
        log.Fatal(err)
    }
    ctx := context.Background()

    // SET com expiração de 1 hora
    err = client.Set(ctx, "key", "value", time.Hour)
    if err != nil {
        log.Fatalf("Erro ao definir valor: %v", err)
    }

    // GET
    val, err := client.Get(ctx, "key")
    if err != nil {
        log.Fatalf("Erro ao obter valor: %v", err)
    }
    log.Printf("Valor obtido: %s", val)
}

Dicas e Integração

  • Use a interface IRedisClient para facilitar testes e mocks.
  • Integre facilmente com middlewares de cache HTTP.
  • Suporta múltiplos modos de conexão sem alterar código de uso.
  • Para ambientes com autenticação, inclua usuário/senha na URL: redis://:senha@host:6379.

API

Veja a documentação completa em pkg.go.dev.

Contribuindo

Contribuições são bem-vindas! Abra issues ou pull requests.

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type IRedisClient

type IRedisClient interface {
	Get(ctx context.Context, key string) (string, error)
	Set(ctx context.Context, key string, value any, expiration time.Duration) error
}

func NewRedisClientFromURL

func NewRedisClientFromURL(rawURL string) (IRedisClient, error)

type RedisClient

type RedisClient struct {
	// contains filtered or unexported fields
}

func (*RedisClient) Get

func (r *RedisClient) Get(ctx context.Context, key string) (string, error)

func (*RedisClient) Set

func (r *RedisClient) Set(ctx context.Context, key string, value any, expiration time.Duration) error

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL