Commit Graph
150 Commits
Author SHA1 Message Date
BigskandGitHub cd984fae99 chore(ring): inline rendezvous hashing and remove external dependency (#3762)
* ring: remove external rendezvous dependency by inlining implementation

Replace usage of github.com/dgryski/go-rendezvous with an internal
implementation to eliminate the external dependency and avoid licence
propagation concerns.

The implementation preserves the exact hashing algorithm and behaviour:
- same hash combination: khash ^ nhash
- same mixing function (xorshift* variant)
- same node ordering semantics

No functional changes intended.

* Refactor TestRendezvous to remove randomString function

Replaced function with inline string generation for test cases.

* test: refactor RendezvousHash tests to use Ginkgo and Gomega

* test: improve RendezvousHash test for per-instance determinism and distribution balance

* test: enhance distribution verification in RendezvousHash tests
2026-04-07 10:26:18 +03:00
f37dbd0bc1 Fix ZRangeArgs Rev+ByScore/ByLex incorrectly swapping Start/Stop (#3751)
* Initial plan

* Fix ZRangeArgs Rev+ByScore/ByLex incorrect Start/Stop swap

Co-authored-by: ndyakov <[email protected]>
Agent-Logs-Url: https://github.com/redis/go-redis/sessions/18989cb1-ea6a-4fb9-b701-03db3d3fc5ec

---------

Co-authored-by: copilot-swe-agent[bot] <[email protected]>
Co-authored-by: ndyakov <[email protected]>
2026-03-26 00:53:33 +02:00
dependabot[bot]andGitHub 535035aa32 chore(deps): bump google.golang.org/grpc in /example/otel-metrics (#3744) 2026-03-22 15:43:00 +02:00
Nedyalko DyakovandGitHub dcf53a6190 chore(example): remove throughput binary (#3733) 2026-03-11 13:20:27 +02:00
8eca179665 feat(command): Implement ReplicaOf method to replace deprecated SlaveOf (#3720)
* Initial plan

* Implement ReplicaOf method and update test usages

Co-authored-by: ndyakov <[email protected]>

* Run go fmt on modified files

Co-authored-by: ndyakov <[email protected]>

* Final review completed

Co-authored-by: ndyakov <[email protected]>

---------

Co-authored-by: copilot-swe-agent[bot] <[email protected]>
Co-authored-by: ndyakov <[email protected]>
Co-authored-by: ofekshenawa <[email protected]>
2026-03-09 13:35:16 +02:00
Nedyalko DyakovandGitHub 3b155e9443 chore(go): update go version to 1.24 (#3714)
* chore(go): update go version to 1.24

* update readmes and ci workflows

* update dockerfile for proxy-fi-server

* address changed test behaviour

* address changed test behaviour
2026-02-20 10:00:33 +02:00
Nedyalko DyakovandGitHub 90faf06923 chore(release): update versions in deps (#3712) 2026-02-16 16:41:48 +02:00
Nedyalko DyakovandGitHub bf8e8e3b16 chore(release): v9.18.0 (#3711)
* chore(release): add release notes

* chore(release): update version
2026-02-16 16:19:35 +02:00
a881cd4280 fix(clone): nil pointer dereference in PubSub after WithTimeout() (#3710)
* Initial plan

* Fix pubSubPool nil pointer in clone() method

Co-authored-by: ndyakov <[email protected]>

* Final: Fix complete and verified

Co-authored-by: ndyakov <[email protected]>

---------

Co-authored-by: copilot-swe-agent[bot] <[email protected]>
Co-authored-by: ndyakov <[email protected]>
2026-02-16 10:44:37 +02:00
ee6e9dbf09 feat(otel): Add OpenTelemetry Native Metrics Support (#3637)
* First draft. One metric - command duration.

Signed-off-by: Elena Kolevska <[email protected]>

* Adds connection state metrics

Signed-off-by: Elena Kolevska <[email protected]>

* wip

Signed-off-by: Elena Kolevska <[email protected]>

* Add phase 1 metrics

* Add client api configurations

* remove redundent code

* refactor: move otel-metrics example to separate module

* refactor: move otel-metrics example to separate module

* remove internal test

* Resolve merge conflicts with upstream/master

* Fix linting issues

* Fix pool idle connection counter bug

* Add OTel performance benchmarking suite

* Improve perf compatison script

* Add phase 2,3 metrics

* Remove local benchmark tests

* Add new fields to tests

* Change db.client.connection.count and db.client.connection.pending_request metric type from UpAndDownCounter to Async gauge.

* fix golangci lint

* Add piplined commands metrics support

* Redesign otel init method

* Address comments

* Fix golangci-lint errors

* Fix passing nil pointer

* Add metric prefix to callbacks and atomic batch registration

* Add unique name for pool.name attr

* Fix unique pool name for pubsub

* Refactor all hardcoded OTel attribute strings to use constants

* Refactor all hardcoded OTel attribute strings to use constants

* extract metric names and pool names as constants, improve error handling

---------

Signed-off-by: Elena Kolevska <[email protected]>
Co-authored-by: Elena Kolevska <[email protected]>
2026-02-13 18:08:10 +02:00
f25343d281 chore(tests): Add comprehensive TLS tests and example (#3681)
* chore(tests): add tls tests

* fix: Use ShardPicker for keyless commands instead of random slot

- cmdSlot now returns -1 for keyless commands instead of RandomSlot()
- This allows cmdNodeWithShardPicker to use the configured ShardPicker
  (default: RoundRobinPicker) for keyless command routing
- Updated mapCmdsByNode to handle slot == -1 by using ShardPicker
- Updated test to verify round robin distribution works correctly

* chore(image): update clients-test-lib image

* chore(tests): enable tls user auth test

* chore(docker): use proper envs for test image

* chore(image): use latest build

* chore(image): use latest build

* fix(tests): use the correct root cert

* feat(tls): add example app

* chore(docker): address pr comments

* chore(tests): address pr comments

* chore(doc): add README.md in the example app

* fix(tests): do not skip tests

* fix(tests): skip only because of redis version

* Extracts default image name in a var (including osscluster-tls)

Signed-off-by: Elena Kolevska <[email protected]>

* fix(tlstests): remove redundent test

---------

Signed-off-by: Elena Kolevska <[email protected]>
Co-authored-by: Elena Kolevska <[email protected]>
2026-02-12 15:26:00 +02:00
ofekshenawaandGitHub 41dcf382c6 Add digest helper functions for client-side xxh3 hashing (#3679)
* add digest helper functions for client-side xxh3 hashing

* Fix golangci-lint errors
2026-01-19 15:56:10 +02:00
2b8d05ed37 chore(fmt): proper formatting (#3670)
* all: proper formatting

* .golangci.yml: add linter for format check

* ran `golangci-lint fmt`

---------

Co-authored-by: Nedyalko Dyakov <[email protected]>
2026-01-13 14:48:02 +02:00
Nedyalko DyakovandGitHub e4965ea90b chore(release) v9.18.0-beta.2 (#3644)
* add release notes

* update version number

* update date
2025-12-09 15:50:10 +02:00
674c7b8695 chore(go): update go version to 1.21 (#3640)
* chore(go): update go version to 1.21

* chore(aggregators): make aggregators work with 1.21

* fix doctests

* address copilot comments

* use atomic bool for logic and/or aggregators

* Update .github/workflows/build.yml

Co-authored-by: ccoVeille <[email protected]>

* use stable/oldstable, 1.23 and 1.21

* fix versions in README

* add oldstable in wordlist

---------

Co-authored-by: ccoVeille <[email protected]>
2025-12-05 12:27:55 +02:00
ofekshenawaandGitHub 7a345ab467 Revert PR #3634 (Observability metrics phase1) (#3635) 2025-12-03 10:24:05 +02:00
Elena Kolevskaandofekshenawa d588c3ca71 First draft. One metric - command duration.
Signed-off-by: Elena Kolevska <[email protected]>
2025-12-03 10:00:09 +02:00
Nedyalko DyakovandGitHub 981f5db9a2 chore(release): 9.18.0-beta.1 (#3628)
* bump version to 9.18.0-beta.1

* add release notes
2025-12-02 15:08:54 +02:00
f711eb0f62 feat(cluster): Implement Request and Response Policy Based Routing in Cluster Mode (#3422)
* Add search module builders and tests (#1)

* Add search module builders and tests

* Add tests

* Use builders and Actions in more clean way

* Update search_builders.go

Co-authored-by: Nedyalko Dyakov <[email protected]>

* Update search_builders.go

Co-authored-by: Nedyalko Dyakov <[email protected]>

* Apply suggestions from code review

Co-authored-by: Nedyalko Dyakov <[email protected]>

* feat(routing): add internal request/response policy enums

* feat: load the policy table in cluster client (#4)

* feat: load the policy table in cluster client

* Remove comments

* modify Tips and command pplicy in commandInfo (#5)

* centralize cluster command routing in osscluster_router.go and refactor osscluster.go (#6)

* centralize cluster command routing in osscluster_router.go and refactor osscluster.go

* enalbe ci on all branches

* Add debug prints

* Add debug prints

* FIX: deal with nil policy

* FIX: fixing clusterClient process

* chore(osscluster): simplify switch case

* wip(command): ai generated clone method for commands

* feat: implement response aggregator for Redis cluster commands

* feat: implement response aggregator for Redis cluster commands

* fix: solve concurrency errors

* fix: solve concurrency errors

* return MaxRedirects settings

* remove locks from getCommandPolicy

* Handle MOVED errors more robustly, remove cluster reloading at exectutions, ennsure better routing

* Fix: supports Process hook test

* Fix: remove response aggregation for single shard commands

* Add more preformant type conversion for Cmd type

* Add router logic into processPipeline

---------

Co-authored-by: Nedyalko Dyakov <[email protected]>

* remove thread debugging code

* remove thread debugging code && reject commands with policy that cannot be used in pipeline

* refactor processPipline and cmdType enum

* remove FDescribe from cluster tests

* Add tests

* fix aggregation test

* fix mget test

* fix mget test

* remove aggregateKeyedResponses

* added scaffolding for the req-resp manager

* added default policies for the search commands

* split command map into module->command

* cleanup, added logic to refresh the cache

* added reactive cache refresh

* revert cluster refresh

* fixed lint

* addresed first batch of comments

* rewrote aggregator implementations with atomic for native or nearnative primitives

* addressed more comments, fixed lint

* added batch aggregator operations

* fixed lint

* updated batch aggregator, fixed extractcommandvalue

* fixed lint

* added batching to aggregateResponses

* fixed deadlocks

* changed aggregator logic, added error params

* added preemptive return to the aggregators

* more work on the aggregators

* updated and and or aggregators

* fixed lint

* added configurable policy resolvers

* slight refactor

* removed the interface, slight refactor

* change func signature from cmdName to cmder

* added nil safety assertions

* few small refactors

* added read only policies

* removed leftover prints

* Rebased to master, resolved comnflicts

* fixed lint

* updated gha

* fixed tests, minor consistency refactor

* preallocated simple errors

* changed numeric aggregators to use float64

* speculative test fix

* Update command.go

Co-authored-by: Nedyalko Dyakov <[email protected]>

* Update main_test.go

Co-authored-by: Nedyalko Dyakov <[email protected]>

* Add static shard picker

* Fix nil value handling in command aggregation

* Modify the Clone method to return a shallow copy

* Add clone method to digest command

* Optimize keyless command routing to respect ShardPicker policy

* Remove MGET references

* Fix MGET aggregation to map individual values to keys across shards

* Add clone method to hybrid search commands

* Undo changes in route keyless test

* remove comments

* Add test for DisableRoutingPolicies option

* Add Routing Policies Comprehensive Test Suite and Fix multi keyed aggregation for different step

---------

Co-authored-by: Nedyalko Dyakov <[email protected]>
Co-authored-by: Nedyalko Dyakov <[email protected]>
Co-authored-by: Hristo Temelski <[email protected]>
2025-11-28 11:46:23 +02:00
Nedyalko DyakovandGitHub 68d8c59557 chore(release): v9.17.1 (#3617)
* add release notes

* update version to 9.17.1
2025-11-26 12:20:20 +02:00
Nedyalko DyakovandGitHub 5b0b228a37 chore(release): v9.17.0 (#3604)
* update release notes

* update readme

* update version number

* cleanup release notes

* fix checkMinIdle
2025-11-19 19:53:02 +02:00
042610b79d fix(conn): conn to have state machine (#3559)
* wip

* wip, used and unusable states

* polish state machine

* correct handling OnPut

* better errors for tests, hook should work now

* fix linter

* improve reauth state management. fix tests

* Update internal/pool/conn.go

Co-authored-by: Copilot <[email protected]>

* Update internal/pool/conn.go

Co-authored-by: Copilot <[email protected]>

* better timeouts

* empty endpoint handoff case

* fix handoff state when queued for handoff

* try to detect the deadlock

* try to detect the deadlock x2

* delete should be called

* improve tests

* fix mark on uninitialized connection

* Update internal/pool/conn_state_test.go

Co-authored-by: Copilot <[email protected]>

* Update internal/pool/conn_state_test.go

Co-authored-by: Copilot <[email protected]>

* Update internal/pool/pool.go

Co-authored-by: Copilot <[email protected]>

* Update internal/pool/conn_state.go

Co-authored-by: Copilot <[email protected]>

* Update internal/pool/conn.go

Co-authored-by: Copilot <[email protected]>

* fix error from copilot

* address copilot comment

* fix(pool): pool performance  (#3565)

* perf(pool): replace hookManager RWMutex with atomic.Pointer and add predefined state slices

- Replace hookManager RWMutex with atomic.Pointer for lock-free reads in hot paths
- Add predefined state slices to avoid allocations (validFromInUse, validFromCreatedOrIdle, etc.)
- Add Clone() method to PoolHookManager for atomic updates
- Update AddPoolHook/RemovePoolHook to use copy-on-write pattern
- Update all hookManager access points to use atomic Load()

Performance improvements:
- Eliminates RWMutex contention in Get/Put/Remove hot paths
- Reduces allocations by reusing predefined state slices
- Lock-free reads allow better CPU cache utilization

* perf(pool): eliminate mutex overhead in state machine hot path

The state machine was calling notifyWaiters() on EVERY Get/Put operation,
which acquired a mutex even when no waiters were present (the common case).

Fix: Use atomic waiterCount to check for waiters BEFORE acquiring mutex.
This eliminates mutex contention in the hot path (Get/Put operations).

Implementation:
- Added atomic.Int32 waiterCount field to ConnStateMachine
- Increment when adding waiter, decrement when removing
- Check waiterCount atomically before acquiring mutex in notifyWaiters()

Performance impact:
- Before: mutex lock/unlock on every Get/Put (even with no waiters)
- After: lock-free atomic check, only acquire mutex if waiters exist
- Expected improvement: ~30-50% for Get/Put operations

* perf(pool): use predefined state slices to eliminate allocations in hot path

The pool was creating new slice literals on EVERY Get/Put operation:
- popIdle(): []ConnState{StateCreated, StateIdle}
- putConn(): []ConnState{StateInUse}
- CompareAndSwapUsed(): []ConnState{StateIdle} and []ConnState{StateInUse}
- MarkUnusableForHandoff(): []ConnState{StateInUse, StateIdle, StateCreated}

These allocations were happening millions of times per second in the hot path.

Fix: Use predefined global slices defined in conn_state.go:
- validFromInUse
- validFromCreatedOrIdle
- validFromCreatedInUseOrIdle

Performance impact:
- Before: 4 slice allocations per Get/Put cycle
- After: 0 allocations (use predefined slices)
- Expected improvement: ~30-40% reduction in allocations and GC pressure

* perf(pool): optimize TryTransition to reduce atomic operations

Further optimize the hot path by:
1. Remove redundant GetState() call in the loop
2. Only check waiterCount after successful CAS (not before loop)
3. Inline the waiterCount check to avoid notifyWaiters() call overhead

This reduces atomic operations from 4-5 per Get/Put to 2-3:
- Before: GetState() + CAS + waiterCount.Load() + notifyWaiters mutex check
- After: CAS + waiterCount.Load() (only if CAS succeeds)

Performance impact:
- Eliminates 1-2 atomic operations per Get/Put
- Expected improvement: ~10-15% for Get/Put operations

* perf(pool): add fast path for Get/Put to match master performance

Introduced TryTransitionFast() for the hot path (Get/Put operations):
- Single CAS operation (same as master's atomic bool)
- No waiter notification overhead
- No loop through valid states
- No error allocation

Hot path flow:
1. popIdle(): Try IDLE → IN_USE (fast), fallback to CREATED → IN_USE
2. putConn(): Try IN_USE → IDLE (fast)

This matches master's performance while preserving state machine for:
- Background operations (handoff/reauth use UNUSABLE state)
- State validation (TryTransition still available)
- Waiter notification (AwaitAndTransition for blocking)

Performance comparison per Get/Put cycle:
- Master: 2 atomic CAS operations
- State machine (before): 5 atomic operations (2.5x slower)
- State machine (after): 2 atomic CAS operations (same as master!)

Expected improvement: Restore to baseline ~11,373 ops/sec

* combine cas

* fix linter

* try faster approach

* fast semaphore

* better inlining for hot path

* fix linter issues

* use new semaphore in auth as well

* linter should be happy now

* add comments

* Update internal/pool/conn_state.go

Co-authored-by: Copilot <[email protected]>

* address comment

* slight reordering

* try to cache time if for non-critical calculation

* fix wrong benchmark

* add concurrent test

* fix benchmark report

* add additional expect to check output

* comment and variable rename

---------

Co-authored-by: Copilot <[email protected]>

* initConn sets IDLE state

- Handle unexpected conn state changes

* fix precision of time cache and usedAt

* allow e2e tests to run longer

* Fix broken initialization of idle connections

* optimize push notif

* 100ms -> 50ms

* use correct timer for last health check

* verify pass auth on conn creation

* fix assertion

* fix unsafe test

* fix benchmark test

* improve remove conn

* re doesn't support requirepass

* wait more in e2e test

* flaky test

* add missed method in interface

* fix test assertions

* silence logs and faster hooks manager

* address linter comment

* fix flaky test

* use read instad of control

* use pool size for semsize

* CAS instead of reading the state

* preallocate errors and states

* preallocate state slices

* fix flaky test

* fix fast semaphore that could have been starved

* try to fix the semaphore

* should properly notify the waiters

- this way a waiter that timesout at the same time
a releaser is releasing, won't throw token. the releaser
will fail to notify and will pick another waiter.

this hybrid approach should be faster than channels and maintains FIFO

* waiter may double-release (if closed/times out)

* priority of operations

* use simple approach of fifo waiters

* use simple channel based semaphores

* address linter and tests

* remove unused benchs

* change log message

* address pr comments

* address pr comments

* fix data race

---------

Co-authored-by: Copilot <[email protected]>
2025-11-11 17:38:29 +02:00
Nedyalko DyakovandGitHub 5069fd6fa9 feat(cmd): Add CAS/CAD commands (#3583)
* add cas/cad commands

* feat(command): Add SetIFDEQ, SetIFDNE and *Get cmds

Decided to move the *Get argument as a separate methods, since the
response will be always the previous value, but in the case where
the previous value is `OK` there result may be ambiguous.

* fix tests

* matchValue to be interface{}

* Only Args approach for DelEx

* use uint64 for digest, add example

* test only for 8.4
2025-11-07 13:31:00 +02:00
Nedyalko DyakovandGitHub 5771fa474a chore(ci): Add redis 8.4-RC1-pre & examples (#3572)
* add disable maintnotifications example

* add 8.4-RC1-pre

* println -> printf for linter

* address jit comment
2025-10-28 15:47:39 +02:00
Nedyalko DyakovandGitHub f1956565ee chore(release): 9.16.0 (#3557)
* notes

* bump version
2025-10-23 18:08:39 +03:00
7aa4a60667 update gomods to align them with the latest beta (#3539)
Co-authored-by: Nedyalko Dyakov <[email protected]>
2025-10-21 11:28:04 +03:00
Hristo TemelskiandGitHub a44df88257 version 9.15.1, used to retract itself and 9.15.0 (#3537)
* version 9.15.1, used to retract itself and 9.15.0

* added retract to the submodules

* revert submodules retracts as they are not needed
2025-09-27 23:33:54 +03:00
Hristo TemelskiandGitHub 819f01b489 retract wrongly released version (#3533) 2025-09-27 15:38:46 +01:00
Hristo TemelskiandGitHub 7405cff430 depreciate 9.15.0 (#3532) 2025-09-27 02:17:21 +03:00
Hristo TemelskiandGitHub 8b38e27f97 release: 9.15.0-beta.2 (#3531) 2025-09-26 19:40:07 +03:00
75ddeb3d5a feat(e2e-testing): maintnotifications e2e and refactor (#3526)
* e2e wip

* cleanup

* remove unused fault injector mock

* errChan in test

* remove log messages tests

* cleanup log messages

* s/hitless/maintnotifications/

* fix moving when none

* better logs

* test with second client after action has started

* Fixes

Signed-off-by: Elena Kolevska <[email protected]>

* Test fix

Signed-off-by: Elena Kolevska <[email protected]>

* feat(e2e-test): Extended e2e tests

* imroved e2e test resiliency

---------

Signed-off-by: Elena Kolevska <[email protected]>
Co-authored-by: Elena Kolevska <[email protected]>
Co-authored-by: Elena Kolevska <[email protected]>
Co-authored-by: Hristo Temelski <[email protected]>
2025-09-26 19:17:09 +03:00
Nedyalko DyakovandGitHub 0dcfeefea7 chore(release): 9.15.0-beta.1 (#3514) 2025-09-10 23:02:16 +03:00
0ef6d0727d feat: RESP3 notifications support & Hitless notifications handling [CAE-1088] & [CAE-1072] (#3418)
- Adds support for handling push notifications with RESP3. 
- Using this support adds handlers for hitless upgrades.

---------

Co-authored-by: Copilot <[email protected]>
Co-authored-by: Hristo Temelski <[email protected]>
2025-09-10 22:18:01 +03:00
Hristo TemelskiandGitHub 2da6ca07c0 chore(release): Update the rest of the versions (#3513)
* chore(release): Update the rest of the versions

* improved tag script
2025-09-10 15:01:18 +03:00
Hristo TemelskiandGitHub c11a704481 chore(release): v9.14.0 (#3512) 2025-09-10 14:33:08 +03:00
Nedyalko DyakovandGitHub 52bda7a35a chore(release): 9.13.0 (#3500) 2025-09-03 14:52:32 +03:00
Nedyalko DyakovandGitHub 7b4a537aef chore(release): 9.12.1, failover client buffer size fixes (#3469) 2025-08-11 18:58:21 +03:00
Vladimir MihailencoandGitHub 2c29dedc2d chore(otel): upgrade otel example to Uptrace v2 (#3466)
Uptrace v2 comes with a new config file and new defaults.
Also updated dependencies to the latest versions.
2025-08-11 12:33:09 +03:00
Nedyalko DyakovandGitHub b7838dc4e7 chore(release): 9.12.0 / redis 8.2 (#3464) 2025-08-05 16:50:25 +03:00
Nedyalko DyakovandGitHub f006e941d9 chore(release): 9.12.0-beta.1 (#3460) 2025-08-04 15:00:37 +03:00
Nedyalko DyakovandGitHub 0decfdc6ed chore(release): v9.11.0 (#3416)
* chore(release): update version to 9.11.0

* chore(release): Add Release Notes for v9.11.0
2025-06-24 14:05:24 +03:00
Nedyalko DyakovandGitHub 75e8370a6f chore(release): Update release notes and versions for v9.10.0 (#3395) 2025-06-06 18:30:30 +03:00
Nedyalko DyakovandGitHub c935f96148 release(go-redis): v9.9.0 (#3390)
* release(go-redis): v9.9.0

- Add release notes
- Update dependencies and version.go

* chore(release-notes) Update release notes
2025-05-27 19:00:07 +03:00
+6 c0be87ec5b chore(release): sync master after releasing V9.8.0 (#3365)
* Bump version to 9.8.0-beta1

Update README.md

* Feature more prominently how to enable OpenTelemetry instrumentation (#3316)

* Sync master with v9.8.0-beta.1 (#3322)

* DOC-4464 examples for llen, lpop, lpush, lrange, rpop, and rpush (#3234)

* DOC-4464 examples for llen, lpop, lpush, lrange, rpop, and rpush

* DOC-4464 improved variable names

---------

Co-authored-by: Vladyslav Vildanov <[email protected]>
Co-authored-by: Nedyalko Dyakov <[email protected]>

* update pubsub.go (#3329)

* use 8.0-RC1 (#3330)

* drop ft.profile that was never enabled (#3323)

* chore(deps): bump rojopolis/spellcheck-github-actions (#3336)

Bumps [rojopolis/spellcheck-github-actions](https://github.com/rojopolis/spellcheck-github-actions) from 0.47.0 to 0.48.0.
- [Release notes](https://github.com/rojopolis/spellcheck-github-actions/releases)
- [Changelog](https://github.com/rojopolis/spellcheck-github-actions/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rojopolis/spellcheck-github-actions/compare/0.47.0...0.48.0)

---
updated-dependencies:
- dependency-name: rojopolis/spellcheck-github-actions
  dependency-version: 0.48.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Fix FT.Search Limit argument and add CountOnly argument for limit 0 0 (#3338)

* Fix Limit argument and add CountOnly argument

* Add test and Documentation

* Update search_commands.go

---------

Co-authored-by: Nedyalko Dyakov <[email protected]>

* fix add missing command in interface (#3344)

* Use DB option in NewFailoverClusterClient (#3342)

* DOC-5102 added CountOnly search example for docs (#3345)

* Add  integration tests for Redis 8 behavior changes in Redis Search (#3337)

* Add  integration tests for Redis 8 behavior changes in Redis Search

* Undo changes in ft.search limit

* Fix BM25 as the default scorer test

* Add more tests and comments on deprecated params

* Update search_commands.go

* Remove deprication comment for nostopwords

---------

Co-authored-by: Nedyalko Dyakov <[email protected]>

* Use correct slot for COUNTKEYSINSLOT command (#3327)

* Ensure context isn't exhausted via concurrent query as opposed to sentinel query (#3334)

* fix: better error handling when fetching the master node from the sentinels (#3349)

* Better error handling when fetching the master node from the sentinels

* fix error message generation

* close the errCh to not block

* use len over errCh

* docs: fix documentation comments (#3351)

* DOC-5111 added hash search examples (#3357)

* fix: Fix panic caused when arg is nil (#3353)

* Update README.md, use redis discord guild (#3331)

* use redis discord guild

* add line in CONTRIBUTING.md

* update with badges similar to rest of the libraries. update url

* updated with direct invite link

* fix discord link in CONTRIBUTING.md

* fix stackoverflow tag

---------

Co-authored-by: Elena Kolevska <[email protected]>

* update HExpire command documentation (#3355)

* update HExpire command documentation

* Apply suggestions from code review

Format the links in the documentation. Add missing documentation.

---------

Co-authored-by: Nedyalko Dyakov <[email protected]>

* feat: func isEmptyValue support time.Time (#3273)

* fix:func isEmptyValue support time.Time

* fix: Improve HSet unit tests

* feat: Improve HSet unit tests

* fix: isEmptyValue Struct only support time.Time

* test(hset): add empty custom struct test

---------

Co-authored-by: Guo Hui <[email protected]>
Co-authored-by: Nedyalko Dyakov <[email protected]>

* fix: `PubSub` isn't concurrency-safe (#3360)

* migrate golangci-lint config to v2 format (#3354)

* migrate golangci-lint config to v2 format

* chore: skip CI on migration [skip ci]

* Bump golangci version

* Address several golangci-lint/staticcheck warnings

* change staticchecks settings

* chore(ci): Use redis 8 rc2 image. (#3361)

* chore(ci): Use redis 8 rc2 image

* test(timeseries): fix duplicatePolicy check

* feat(options): panic when options are nil (#3363)

Client creation should panic when options are nil.

* chore(release): Update version to v9.8.0

- update version in relevant places
- add RELEASE-NOTES.md to keep track of release notes

---------

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: Nikolay Dubina <[email protected]>
Co-authored-by: andy-stark-redis <[email protected]>
Co-authored-by: Vladyslav Vildanov <[email protected]>
Co-authored-by: Liu Shuang <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: ofekshenawa <[email protected]>
Co-authored-by: Bulat Khasanov <[email protected]>
Co-authored-by: Naveen Prashanth <[email protected]>
Co-authored-by: Glenn <[email protected]>
Co-authored-by: frankj <[email protected]>
Co-authored-by: Elena Kolevska <[email protected]>
Co-authored-by: Hui <[email protected]>
Co-authored-by: Guo Hui <[email protected]>
Co-authored-by: fukua95 <[email protected]>
2025-05-07 14:40:49 +03:00
Nedyalko DyakovandGitHub cb3aa19618 Sync master with v9.8.0-beta.1 (#3322) 2025-03-25 12:25:35 +02:00
ofekshenawaandGitHub 15059395a1 Support new hash commands: HGETDEL, HGETEX, HSETEX (#3305) 2025-03-24 14:03:26 +02:00
Nedyalko DyakovandGitHub 34222bffeb release 9.7.3, retract 9.7.2 (#3314) (#3315) 2025-03-21 13:13:14 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
11efd6a01e chore(deps): bump golang.org/x/net in /example/otel (#3308)
Bumps [golang.org/x/net](https://github.com/golang/net) from 0.33.0 to 0.36.0.
- [Commits](https://github.com/golang/net/compare/v0.33.0...v0.36.0)

---
updated-dependencies:
- dependency-name: golang.org/x/net
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-19 21:11:14 +02:00
ebe11d06ca feat: Enable CI for Redis CE 8.0 (#3274)
* chore: extract benchmark tests

* wip

* enable pubsub tests

* enable ring tests

* stop tests with build redis from source

* start all tests

* mix of makefile and action

* add sentinel configs

* fix example test

* stop debug on re

* wip

* enable gears for redis 7.2

* wip

* enable sentinel, they are expected to fail

* fix: linter configuration

* chore: update re versions

* return older redis enterprise version

* add basic codeql

* wip: increase timeout, focus only sentinel tests

* sentinels with docker network host

* enable all tests

* fix flanky test

* enable example tests

* tidy docker compose

* add debug output

* stop shutingdown masters

* don't test sentinel for re

* skip unsuported addscores

* Update README

bump go version in CI

* Update README.md

Co-authored-by: Copilot <[email protected]>

* Update CONTRIBUTING.md

add information about new test setup

---------

Co-authored-by: Copilot <[email protected]>
2025-02-28 12:49:00 +02:00
Nedyalko DyakovandGitHub aa7019d718 V9.7.1 -> master (#3287) 2025-02-24 12:45:08 +02:00