Major integrations and fixes: - Added BACKBEAT SDK integration for P2P operation timing - Implemented beat-aware status tracking for distributed operations - Added Docker secrets support for secure license management - Resolved KACHING license validation via HTTPS/TLS - Updated docker-compose configuration for clean stack deployment - Disabled rollback policies to prevent deployment failures - Added license credential storage (CHORUS-DEV-MULTI-001) Technical improvements: - BACKBEAT P2P operation tracking with phase management - Enhanced configuration system with file-based secrets - Improved error handling for license validation - Clean separation of KACHING and CHORUS deployment stacks 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
7.9 KiB
8.11.5 (2022-03-17)
Bug Fixes
- add missing Expire methods to Cmdable (17e3b43)
- add whitespace for avoid unlikely colisions (7f7c181)
- example/otel compile error (#2028) (187c07c)
- extra/redisotel: set span.kind attribute to client (065b200)
- format (96f53a0)
- invalid type assert in stringArg (de6c131)
- rename Golang to Go (#2030) (b82a2d9)
- set timeout for WAIT command. Fixes #1963 (333fee1)
- update some argument counts in pre-allocs (f6974eb)
Features
- Add redis v7's NX, XX, GT, LT expire variants (e19bbb2)
- add support for acl sentinel auth in universal client (ab0ccc4)
- add support for COPY command (#2016) (730afbc)
- add support for passing extra attributes added to spans (39faaa1)
- add support for time.Duration write and scan (2f1b74e)
- redisotel: ability to override TracerProvider (#1998) (bf8d4aa)
- set net.peer.name and net.peer.port in otel example (69bf454)
8.11.4 (2021-10-04)
Features
- add acl auth support for sentinels (f66582f)
- add Cmd.{String,Int,Float,Bool}Slice helpers and an example (5d3d293)
- add SetVal method for each command (168981d)
v8.11
- Remove OpenTelemetry metrics.
- Supports more redis commands and options.
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