* update github.com/PuerkitoBio/goquery * update github.com/alecthomas/chroma * update github.com/blevesearch/bleve/v2 * update github.com/caddyserver/certmagic * update github.com/go-enry/go-enry/v2 * update github.com/go-git/go-billy/v5 * update github.com/go-git/go-git/v5 * update github.com/go-redis/redis/v8 * update github.com/go-testfixtures/testfixtures/v3 * update github.com/jaytaylor/html2text * update github.com/json-iterator/go * update github.com/klauspost/compress * update github.com/markbates/goth * update github.com/mattn/go-isatty * update github.com/mholt/archiver/v3 * update github.com/microcosm-cc/bluemonday * update github.com/minio/minio-go/v7 * update github.com/prometheus/client_golang * update github.com/unrolled/render * update github.com/xanzy/go-gitlab * update github.com/yuin/goldmark * update github.com/yuin/goldmark-highlighting Co-authored-by: techknowlogick <techknowlogick@gitea.io>
4.9 KiB
Vendored
Changelog
❤️ Uptrace.dev - All-in-one tool to optimize performance and monitor errors & logs
v8.10
-
Removed extra OpenTelemetry spans from go-redis core. Now go-redis instrumentation only adds a single span with a Redis command (instead of 4 spans). There are multiple reasons behind this decision:
- Traces become smaller and less noisy.
- It may be costly to process those 3 extra spans for each query.
- go-redis no longer depends on OpenTelemetry.
Eventually we hope to replace the information that we no longer collect with OpenTelemetry Metrics.
v8.9
- Changed
PubSub.Channelto only rely onPingresult. You can now useWithChannelSize,WithChannelHealthCheckInterval, andWithChannelSendTimeoutto override default settings.
v8.8
- To make updating easier, extra modules now have the same version as go-redis does. That means that you need to update your imports:
github.com/go-redis/redis/extra/redisotel -> github.com/go-redis/redis/extra/redisotel/v8
github.com/go-redis/redis/extra/rediscensus -> github.com/go-redis/redis/extra/rediscensus/v8
v8.5
- knadh contributed long-awaited ability to scan Redis Hash into a struct:
err := rdb.HGetAll(ctx, "hash").Scan(&data)
err := rdb.MGet(ctx, "key1", "key2").Scan(&data)
v8
-
All commands require
context.Contextas a first argument, e.g.rdb.Ping(ctx). If you are not usingcontext.Contextyet, the simplest option is to define global package variablevar ctx = context.TODO()and use it whenctxis required. -
Full support for
context.Contextcanceling. -
Added
redis.NewFailoverClusterClientthat supports routing read-only commands to a slave node. -
Added
redisext.OpenTemetryHookthat adds Redis OpenTelemetry instrumentation. -
Redis slow log support.
-
Ring uses Rendezvous Hashing by default which provides better distribution. You need to move existing keys to a new location or keys will be inaccessible / lost. To use old hashing scheme:
import "github.com/golang/groupcache/consistenthash"
ring := redis.NewRing(&redis.RingOptions{
NewConsistentHash: func() {
return consistenthash.New(100, crc32.ChecksumIEEE)
},
})
-
ClusterOptions.MaxRedirectsdefault value is changed from 8 to 3. -
Options.MaxRetriesdefault value is changed from 0 to 3. -
Cluster.ForEachNodeis renamed toForEachShardfor consistency withRing.
v7.3
- New option
Options.Usernamewhich causes client to useAuthACL. Be aware if your connection URL contains username.
v7.2
- Existing
HMSetis renamed toHSetand old deprecatedHMSetis restored for Redis 3 users.
v7.1
- Existing
Cmd.Stringis renamed toCmd.Text. NewCmd.Stringimplementsfmt.Stringerinterface.
v7
- Important. Tx.Pipeline now returns a non-transactional pipeline. Use Tx.TxPipeline for a transactional pipeline.
- WrapProcess is replaced with more convenient AddHook that has access to context.Context.
- WithContext now can not be used to create a shallow copy of the client.
- New methods ProcessContext, DoContext, and ExecContext.
- Client respects Context.Deadline when setting net.Conn deadline.
- Client listens on Context.Done while waiting for a connection from the pool and returns an error when context context is cancelled.
- Add PubSub.ChannelWithSubscriptions that sends
*Subscriptionin addition to*Messageto allow detecting reconnections. time.Timeis now marshalled in RFC3339 format.rdb.Get("foo").Time()helper is added to parse the time.SetLimiteris removed and addedOptions.Limiterinstead.HMSetis deprecated as of Redis v4.
v6.15
- Cluster and Ring pipelines process commands for each node in its own goroutine.
6.14
- Added Options.MinIdleConns.
- Added Options.MaxConnAge.
- PoolStats.FreeConns is renamed to PoolStats.IdleConns.
- Add Client.Do to simplify creating custom commands.
- Add Cmd.String, Cmd.Int, Cmd.Int64, Cmd.Uint64, Cmd.Float64, and Cmd.Bool helpers.
- Lower memory usage.
v6.13
- Ring got new options called
HashReplicasandHash. It is recommended to setHashReplicas = 1000for better keys distribution between shards. - Cluster client was optimized to use much less memory when reloading cluster state.
- PubSub.ReceiveMessage is re-worked to not use ReceiveTimeout so it does not lose data when timeout occurres. In most cases it is recommended to use PubSub.Channel instead.
- Dialer.KeepAlive is set to 5 minutes by default.
v6.12
- ClusterClient got new option called
ClusterSlotswhich allows to build cluster of normal Redis Servers that don't have cluster mode enabled. See https://godoc.org/github.com/go-redis/redis#example-NewClusterClient--ManualSetup