|
2 | 2 |
|
3 | 3 | > :heart: [**Uptrace.dev** - distributed traces, logs, and errors in one place](https://uptrace.dev)
|
4 | 4 |
|
5 |
| -## v8 |
6 |
| - |
7 |
| -- Documentation at https://redis.uptrace.dev/ |
8 |
| - |
9 |
| -- All commands require `context.Context` as a first argument, e.g. `rdb.Ping(ctx)`. If you are not |
10 |
| - using `context.Context` yet, the simplest option is to define global package variable |
11 |
| - `var ctx = context.TODO()` and use it when `ctx` is required. |
12 |
| - |
13 |
| -- Full support for `context.Context` canceling. |
14 |
| - |
15 |
| -- Added `redis.NewFailoverClusterClient` that supports routing read-only commands to a slave node. |
16 |
| - |
17 |
| -- Added `redisext.OpenTemetryHook` that adds |
18 |
| - [Redis OpenTelemetry instrumentation](https://redis.uptrace.dev/tracing/). |
19 |
| - |
20 |
| -- Redis slow log support. |
21 |
| - |
22 |
| -- Ring uses Rendezvous Hashing by default which provides better distribution. You need to move |
23 |
| - existing keys to a new location or keys will be inaccessible / lost. To use old hashing scheme: |
24 |
| - |
25 |
| -```go |
26 |
| -import "github.com/golang/groupcache/consistenthash" |
27 |
| - |
28 |
| -ring := redis.NewRing(&redis.RingOptions{ |
29 |
| - NewConsistentHash: func() { |
30 |
| - return consistenthash.New(100, crc32.ChecksumIEEE) |
31 |
| - }, |
32 |
| -}) |
33 |
| -``` |
34 |
| - |
35 |
| -- `ClusterOptions.MaxRedirects` default value is changed from 8 to 3. |
36 |
| -- `Options.MaxRetries` default value is changed from 0 to 3. |
37 |
| - |
38 |
| -- `Cluster.ForEachNode` is renamed to `ForEachShard` for consistency with `Ring`. |
39 |
| - |
40 |
| -## v7.3 |
41 |
| - |
42 |
| -- New option `Options.Username` which causes client to use `AuthACL`. Be aware if your connection |
43 |
| - URL contains username. |
44 |
| - |
45 |
| -## v7.2 |
46 |
| - |
47 |
| -- Existing `HMSet` is renamed to `HSet` and old deprecated `HMSet` is restored for Redis 3 users. |
48 |
| - |
49 |
| -## v7.1 |
50 |
| - |
51 |
| -- Existing `Cmd.String` is renamed to `Cmd.Text`. New `Cmd.String` implements `fmt.Stringer` |
52 |
| - interface. |
53 |
| - |
54 |
| -## v7 |
55 |
| - |
56 |
| -- _Important_. Tx.Pipeline now returns a non-transactional pipeline. Use Tx.TxPipeline for a |
57 |
| - transactional pipeline. |
58 |
| -- WrapProcess is replaced with more convenient AddHook that has access to context.Context. |
59 |
| -- WithContext now can not be used to create a shallow copy of the client. |
60 |
| -- New methods ProcessContext, DoContext, and ExecContext. |
61 |
| -- Client respects Context.Deadline when setting net.Conn deadline. |
62 |
| -- Client listens on Context.Done while waiting for a connection from the pool and returns an error |
63 |
| - when context context is cancelled. |
64 |
| -- Add PubSub.ChannelWithSubscriptions that sends `*Subscription` in addition to `*Message` to allow |
65 |
| - detecting reconnections. |
66 |
| -- `time.Time` is now marshalled in RFC3339 format. `rdb.Get("foo").Time()` helper is added to parse |
67 |
| - the time. |
68 |
| -- `SetLimiter` is removed and added `Options.Limiter` instead. |
69 |
| -- `HMSet` is deprecated as of Redis v4. |
70 |
| - |
71 |
| -## v6.15 |
72 |
| - |
73 |
| -- Cluster and Ring pipelines process commands for each node in its own goroutine. |
74 |
| - |
75 |
| -## 6.14 |
76 |
| - |
77 |
| -- Added Options.MinIdleConns. |
78 |
| -- Added Options.MaxConnAge. |
79 |
| -- PoolStats.FreeConns is renamed to PoolStats.IdleConns. |
80 |
| -- Add Client.Do to simplify creating custom commands. |
81 |
| -- Add Cmd.String, Cmd.Int, Cmd.Int64, Cmd.Uint64, Cmd.Float64, and Cmd.Bool helpers. |
82 |
| -- Lower memory usage. |
83 |
| - |
84 |
| -## v6.13 |
85 |
| - |
86 |
| -- Ring got new options called `HashReplicas` and `Hash`. It is recommended to set |
87 |
| - `HashReplicas = 1000` for better keys distribution between shards. |
88 |
| -- Cluster client was optimized to use much less memory when reloading cluster state. |
89 |
| -- PubSub.ReceiveMessage is re-worked to not use ReceiveTimeout so it does not lose data when timeout |
90 |
| - occurres. In most cases it is recommended to use PubSub.Channel instead. |
91 |
| -- Dialer.KeepAlive is set to 5 minutes by default. |
92 |
| - |
93 |
| -## v6.12 |
94 |
| - |
95 |
| -- ClusterClient got new option called `ClusterSlots` which allows to build cluster of normal Redis |
96 |
| - Servers that don't have cluster mode enabled. See |
97 |
| - https://godoc.org/github.com/go-redis/redis#example-NewClusterClient--ManualSetup |
| 5 | +See https://redis.uptrace.dev/changelog/ |
0 commit comments