|
1 | | -## [8.11.5](https://github.com/go-redis/redis/compare/v8.11.4...v8.11.5) (2022-03-17) |
| 1 | +## v9 UNRELEASED |
2 | 2 |
|
3 | | - |
4 | | -### Bug Fixes |
5 | | - |
6 | | -* add missing Expire methods to Cmdable ([17e3b43](https://github.com/go-redis/redis/commit/17e3b43879d516437ada71cf9c0deac6a382ed9a)) |
7 | | -* add whitespace for avoid unlikely colisions ([7f7c181](https://github.com/go-redis/redis/commit/7f7c1817617cfec909efb13d14ad22ef05a6ad4c)) |
8 | | -* example/otel compile error ([#2028](https://github.com/go-redis/redis/issues/2028)) ([187c07c](https://github.com/go-redis/redis/commit/187c07c41bf68dc3ab280bc3a925e960bbef6475)) |
9 | | -* **extra/redisotel:** set span.kind attribute to client ([065b200](https://github.com/go-redis/redis/commit/065b200070b41e6e949710b4f9e01b50ccc60ab2)) |
10 | | -* format ([96f53a0](https://github.com/go-redis/redis/commit/96f53a0159a28affa94beec1543a62234e7f8b32)) |
11 | | -* invalid type assert in stringArg ([de6c131](https://github.com/go-redis/redis/commit/de6c131865b8263400c8491777b295035f2408e4)) |
12 | | -* rename Golang to Go ([#2030](https://github.com/go-redis/redis/issues/2030)) ([b82a2d9](https://github.com/go-redis/redis/commit/b82a2d9d4d2de7b7cbe8fcd4895be62dbcacacbc)) |
13 | | -* set timeout for WAIT command. Fixes [#1963](https://github.com/go-redis/redis/issues/1963) ([333fee1](https://github.com/go-redis/redis/commit/333fee1a8fd98a2fbff1ab187c1b03246a7eb01f)) |
14 | | -* update some argument counts in pre-allocs ([f6974eb](https://github.com/go-redis/redis/commit/f6974ebb5c40a8adf90d2cacab6dc297f4eba4c2)) |
15 | | - |
16 | | - |
17 | | -### Features |
18 | | - |
19 | | -* Add redis v7's NX, XX, GT, LT expire variants ([e19bbb2](https://github.com/go-redis/redis/commit/e19bbb26e2e395c6e077b48d80d79e99f729a8b8)) |
20 | | -* add support for acl sentinel auth in universal client ([ab0ccc4](https://github.com/go-redis/redis/commit/ab0ccc47413f9b2a6eabc852fed5005a3ee1af6e)) |
21 | | -* add support for COPY command ([#2016](https://github.com/go-redis/redis/issues/2016)) ([730afbc](https://github.com/go-redis/redis/commit/730afbcffb93760e8a36cc06cfe55ab102b693a7)) |
22 | | -* add support for passing extra attributes added to spans ([39faaa1](https://github.com/go-redis/redis/commit/39faaa171523834ba527c9789710c4fde87f5a2e)) |
23 | | -* add support for time.Duration write and scan ([2f1b74e](https://github.com/go-redis/redis/commit/2f1b74e20cdd7719b2aecf0768d3e3ae7c3e781b)) |
24 | | -* **redisotel:** ability to override TracerProvider ([#1998](https://github.com/go-redis/redis/issues/1998)) ([bf8d4aa](https://github.com/go-redis/redis/commit/bf8d4aa60c00366cda2e98c3ddddc8cf68507417)) |
25 | | -* set net.peer.name and net.peer.port in otel example ([69bf454](https://github.com/go-redis/redis/commit/69bf454f706204211cd34835f76b2e8192d3766d)) |
26 | | - |
27 | | - |
28 | | - |
29 | | -## [8.11.4](https://github.com/go-redis/redis/compare/v8.11.3...v8.11.4) (2021-10-04) |
30 | | - |
31 | | - |
32 | | -### Features |
33 | | - |
34 | | -* add acl auth support for sentinels ([f66582f](https://github.com/go-redis/redis/commit/f66582f44f3dc3a4705a5260f982043fde4aa634)) |
35 | | -* add Cmd.{String,Int,Float,Bool}Slice helpers and an example ([5d3d293](https://github.com/go-redis/redis/commit/5d3d293cc9c60b90871e2420602001463708ce24)) |
36 | | -* add SetVal method for each command ([168981d](https://github.com/go-redis/redis/commit/168981da2d84ee9e07d15d3e74d738c162e264c4)) |
37 | | - |
38 | | - |
39 | | - |
40 | | -## v8.11 |
41 | | - |
42 | | -- Remove OpenTelemetry metrics. |
43 | | -- Supports more redis commands and options. |
44 | | - |
45 | | -## v8.10 |
46 | | - |
47 | | -- Removed extra OpenTelemetry spans from go-redis core. Now go-redis instrumentation only adds a |
48 | | - single span with a Redis command (instead of 4 spans). There are multiple reasons behind this |
49 | | - decision: |
50 | | - |
51 | | - - Traces become smaller and less noisy. |
52 | | - - It may be costly to process those 3 extra spans for each query. |
53 | | - - go-redis no longer depends on OpenTelemetry. |
54 | | - |
55 | | - Eventually we hope to replace the information that we no longer collect with OpenTelemetry |
56 | | - Metrics. |
57 | | - |
58 | | -## v8.9 |
59 | | - |
60 | | -- Changed `PubSub.Channel` to only rely on `Ping` result. You can now use `WithChannelSize`, |
61 | | - `WithChannelHealthCheckInterval`, and `WithChannelSendTimeout` to override default settings. |
62 | | - |
63 | | -## v8.8 |
64 | | - |
65 | | -- To make updating easier, extra modules now have the same version as go-redis does. That means that |
66 | | - you need to update your imports: |
67 | | - |
68 | | -``` |
69 | | -github.com/go-redis/redis/extra/redisotel -> github.com/go-redis/redis/extra/redisotel/v8 |
70 | | -github.com/go-redis/redis/extra/rediscensus -> github.com/go-redis/redis/extra/rediscensus/v8 |
71 | | -``` |
72 | | - |
73 | | -## v8.5 |
74 | | - |
75 | | -- [knadh](https://github.com/knadh) contributed long-awaited ability to scan Redis Hash into a |
76 | | - struct: |
77 | | - |
78 | | -```go |
79 | | -err := rdb.HGetAll(ctx, "hash").Scan(&data) |
80 | | - |
81 | | -err := rdb.MGet(ctx, "key1", "key2").Scan(&data) |
82 | | -``` |
83 | | - |
84 | | -- Please check [redismock](https://github.com/go-redis/redismock) by |
85 | | - [monkey92t](https://github.com/monkey92t) if you are looking for mocking Redis Client. |
86 | | - |
87 | | -## v8 |
88 | | - |
89 | | -- All commands require `context.Context` as a first argument, e.g. `rdb.Ping(ctx)`. If you are not |
90 | | - using `context.Context` yet, the simplest option is to define global package variable |
91 | | - `var ctx = context.TODO()` and use it when `ctx` is required. |
92 | | - |
93 | | -- Full support for `context.Context` canceling. |
94 | | - |
95 | | -- Added `redis.NewFailoverClusterClient` that supports routing read-only commands to a slave node. |
96 | | - |
97 | | -- Added `redisext.OpenTemetryHook` that adds |
98 | | - [Redis OpenTelemetry instrumentation](https://redis.uptrace.dev/tracing/). |
99 | | - |
100 | | -- Redis slow log support. |
101 | | - |
102 | | -- Ring uses Rendezvous Hashing by default which provides better distribution. You need to move |
103 | | - existing keys to a new location or keys will be inaccessible / lost. To use old hashing scheme: |
104 | | - |
105 | | -```go |
106 | | -import "github.com/golang/groupcache/consistenthash" |
107 | | - |
108 | | -ring := redis.NewRing(&redis.RingOptions{ |
109 | | - NewConsistentHash: func() { |
110 | | - return consistenthash.New(100, crc32.ChecksumIEEE) |
111 | | - }, |
112 | | -}) |
113 | | -``` |
114 | | - |
115 | | -- `ClusterOptions.MaxRedirects` default value is changed from 8 to 3. |
116 | | -- `Options.MaxRetries` default value is changed from 0 to 3. |
117 | | - |
118 | | -- `Cluster.ForEachNode` is renamed to `ForEachShard` for consistency with `Ring`. |
119 | | - |
120 | | -## v7.3 |
121 | | - |
122 | | -- New option `Options.Username` which causes client to use `AuthACL`. Be aware if your connection |
123 | | - URL contains username. |
124 | | - |
125 | | -## v7.2 |
126 | | - |
127 | | -- Existing `HMSet` is renamed to `HSet` and old deprecated `HMSet` is restored for Redis 3 users. |
128 | | - |
129 | | -## v7.1 |
130 | | - |
131 | | -- Existing `Cmd.String` is renamed to `Cmd.Text`. New `Cmd.String` implements `fmt.Stringer` |
132 | | - interface. |
133 | | - |
134 | | -## v7 |
135 | | - |
136 | | -- _Important_. Tx.Pipeline now returns a non-transactional pipeline. Use Tx.TxPipeline for a |
137 | | - transactional pipeline. |
138 | | -- WrapProcess is replaced with more convenient AddHook that has access to context.Context. |
139 | | -- WithContext now can not be used to create a shallow copy of the client. |
140 | | -- New methods ProcessContext, DoContext, and ExecContext. |
141 | | -- Client respects Context.Deadline when setting net.Conn deadline. |
142 | | -- Client listens on Context.Done while waiting for a connection from the pool and returns an error |
143 | | - when context context is cancelled. |
144 | | -- Add PubSub.ChannelWithSubscriptions that sends `*Subscription` in addition to `*Message` to allow |
145 | | - detecting reconnections. |
146 | | -- `time.Time` is now marshalled in RFC3339 format. `rdb.Get("foo").Time()` helper is added to parse |
147 | | - the time. |
148 | | -- `SetLimiter` is removed and added `Options.Limiter` instead. |
149 | | -- `HMSet` is deprecated as of Redis v4. |
150 | | - |
151 | | -## v6.15 |
152 | | - |
153 | | -- Cluster and Ring pipelines process commands for each node in its own goroutine. |
154 | | - |
155 | | -## 6.14 |
156 | | - |
157 | | -- Added Options.MinIdleConns. |
158 | | -- Added Options.MaxConnAge. |
159 | | -- PoolStats.FreeConns is renamed to PoolStats.IdleConns. |
160 | | -- Add Client.Do to simplify creating custom commands. |
161 | | -- Add Cmd.String, Cmd.Int, Cmd.Int64, Cmd.Uint64, Cmd.Float64, and Cmd.Bool helpers. |
162 | | -- Lower memory usage. |
163 | | - |
164 | | -## v6.13 |
165 | | - |
166 | | -- Ring got new options called `HashReplicas` and `Hash`. It is recommended to set |
167 | | - `HashReplicas = 1000` for better keys distribution between shards. |
168 | | -- Cluster client was optimized to use much less memory when reloading cluster state. |
169 | | -- PubSub.ReceiveMessage is re-worked to not use ReceiveTimeout so it does not lose data when timeout |
170 | | - occurres. In most cases it is recommended to use PubSub.Channel instead. |
171 | | -- Dialer.KeepAlive is set to 5 minutes by default. |
172 | | - |
173 | | -## v6.12 |
174 | | - |
175 | | -- ClusterClient got new option called `ClusterSlots` which allows to build cluster of normal Redis |
176 | | - Servers that don't have cluster mode enabled. See |
177 | | - https://godoc.org/github.com/go-redis/redis#example-NewClusterClient--ManualSetup |
| 3 | +- Added support for [RESP3](https://github.com/antirez/RESP3/blob/master/spec.md) protocol. |
| 4 | +- Removed `Pipeline.Close` since there is no real need to explicitly manage pipeline resources. |
| 5 | + `Pipeline.Discard` is still available if you want to reset commands for some reason. |
| 6 | +- Replaced `*redis.Z` with `redis.Z` since it is small enough to be passed as value. |
0 commit comments