1
0
mirror of https://github.com/redis/go-redis.git synced 2025-04-17 20:17:02 +03:00
darkyzhou ea806acb7e
make error message for unreachable sentinels more clear
The original text `all sentinels are unreachable` can sometimes be misleading, making some users think that all of their redis sentinels are down.

But it might not be the reality especially when using kubernetes and specify `c.sentinelAddrs` as the Service's domain. In this case, when the sentinel to which the domain is redirected runs into some errors despite other sentinels running healthily, the original text given by redis client will be confusing and delivering false message!

Just got out of a similar dilemma after checking the source code, feel free to correct me if I am wrong :)
2020-12-15 19:25:31 +08:00
2017-05-26 14:33:34 +03:00
2020-11-17 23:08:15 +09:00
2020-06-09 17:59:23 +03:00
2020-11-17 23:08:15 +09:00
2020-09-11 16:06:08 +03:00
2020-11-06 16:54:46 +02:00
2020-05-19 08:52:38 +03:00
2020-09-11 14:17:23 +03:00
2020-09-17 14:32:08 +01:00
2020-09-17 12:36:10 +03:00
2020-09-24 09:06:17 +03:00
2020-11-17 08:48:46 +02:00
2020-11-17 08:48:46 +02:00
2014-10-07 09:27:55 +03:00
2020-12-06 11:14:07 +02:00
2020-10-22 14:38:36 -04:00
2020-12-11 06:42:54 +00:00
2020-12-11 06:42:54 +00:00
2020-05-21 10:03:09 +03:00
2020-07-16 09:52:07 +03:00
2020-08-07 08:05:47 +02:00
2016-09-12 12:00:28 +00:00
2020-12-06 11:14:07 +02:00
2020-11-21 10:18:39 +02:00
2020-09-28 15:29:35 +03:00
2020-05-19 08:52:38 +03:00
2020-08-15 15:45:15 +03:00
2020-09-17 12:54:48 +03:00
2020-12-06 11:14:07 +02:00
2020-12-10 09:19:39 +02:00
2020-10-17 15:21:09 +03:00
2020-12-06 17:09:22 +02:00
2020-09-09 06:29:38 +00:00
2020-07-16 10:01:27 +03:00
2020-10-22 09:40:20 +03:00
2020-07-16 09:52:07 +03:00
2020-09-11 16:56:02 +03:00
2020-08-15 15:45:15 +03:00
2020-08-15 15:45:15 +03:00

Redis client for Golang

Build Status PkgGoDev Documentation Chat

❤️ Uptrace.dev - distributed traces, logs, and errors in one place

Ecosystem

Features

Installation

go-redis supports 2 last Go versions and requires a Go version with modules support. So make sure to initialize a Go module:

go mod init github.com/my/repo

And then install go-redis/v8 (note v8 in the import; omitting it is a popular mistake):

go get github.com/go-redis/redis/v8

Quickstart

import (
    "context"
    "github.com/go-redis/redis/v8"
)

var ctx = context.Background()

func ExampleClient() {
    rdb := redis.NewClient(&redis.Options{
        Addr:     "localhost:6379",
        Password: "", // no password set
        DB:       0,  // use default DB
    })

    err := rdb.Set(ctx, "key", "value", 0).Err()
    if err != nil {
        panic(err)
    }

    val, err := rdb.Get(ctx, "key").Result()
    if err != nil {
        panic(err)
    }
    fmt.Println("key", val)

    val2, err := rdb.Get(ctx, "key2").Result()
    if err == redis.Nil {
        fmt.Println("key2 does not exist")
    } else if err != nil {
        panic(err)
    } else {
        fmt.Println("key2", val2)
    }
    // Output: key value
    // key2 does not exist
}

Look and feel

Some corner cases:

// SET key value EX 10 NX
set, err := rdb.SetNX(ctx, "key", "value", 10*time.Second).Result()

// SET key value keepttl NX
set, err := rdb.SetNX(ctx, "key", "value", redis.KeepTTL).Result()

// SORT list LIMIT 0 2 ASC
vals, err := rdb.Sort(ctx, "list", &redis.Sort{Offset: 0, Count: 2, Order: "ASC"}).Result()

// ZRANGEBYSCORE zset -inf +inf WITHSCORES LIMIT 0 2
vals, err := rdb.ZRangeByScoreWithScores(ctx, "zset", &redis.ZRangeBy{
    Min: "-inf",
    Max: "+inf",
    Offset: 0,
    Count: 2,
}).Result()

// ZINTERSTORE out 2 zset1 zset2 WEIGHTS 2 3 AGGREGATE SUM
vals, err := rdb.ZInterStore(ctx, "out", &redis.ZStore{
    Keys: []string{"zset1", "zset2"},
    Weights: []int64{2, 3}
}).Result()

// EVAL "return {KEYS[1],ARGV[1]}" 1 "key" "hello"
vals, err := rdb.Eval(ctx, "return {KEYS[1],ARGV[1]}", []string{"key"}, "hello").Result()

// custom command
res, err := rdb.Do(ctx, "set", "key", "value").Result()

See also

Description
Клиент Redis Go
Readme BSD-2-Clause 28 MiB
Languages
Go 99.8%
Shell 0.1%