* fix(vset): vlinks return type
* fix(vset): fix test
* fix(vset): fix test
* fix(vset): remove last layer check from tests
* fix(vset): fix lint & issue
* fix(vset): fix n -> innerLen check
* test(vset): add mocked-response parser tests for VLINKS
Cover StringSliceSliceCmd.readReply (VLINKS) and
VectorScoreSliceSliceCmd.readReply (VLINKS WITHSCORES) with both
RESP2 and RESP3 wire fixtures, including empty layers, nil
elements, odd-length-array errors, and malformed input.
Also switch NewStringSliceSliceCmd to args ...any to match the
sibling NewVectorScoreSliceSliceCmd signature.
Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
---------
Co-authored-by: Nedyalko Dyakov <[email protected]>
Co-authored-by: Claude Opus 4.7 (1M context) <[email protected]>
Co-authored-by: Nedyalko Dyakov <[email protected]>
* feat: impl array data structure
* add integration tests for array commands
Co-Authored-By: Claude Opus 4.7 <[email protected]>
* fix: move CmdTypeUint and CmdTypeUintSlice to end of iota sequence
Co-Authored-By: Claude Opus 4.7 <[email protected]>
* test: add boundary tests for large uint64 index values
Covers ARSet, ARGet, ARGetRange, ARMSet, ARMGet, ARDel,
ARDelRange, ARScan, ARSeek, ARNext, and AROp.
Co-Authored-By: Claude Opus 4.7 <[email protected]>
* refactor: replace generic AROp with typed methods and improve test coverage
- Split AROp into specific methods: AROpSum, AROpMin, AROpMax, AROpAnd,
AROpOr, AROpXor, AROpMatch, AROpUsed with proper return types
- Pre-allocate slices in ARScan, ARGrep, ARGrepWithValues, ARLastItems
- Add tests: ARInfoFull, negative AND/OR/XOR results, ARGrep nil args
Co-Authored-By: Claude Opus 4.7 <[email protected]>
* mark ArrayCmdable API as experimental
Co-Authored-By: Claude Opus 4.7 <[email protected]>
* Use `any` instead of `interface{}` and document index range constraint on ArrayCmdable interface.
Co-Authored-By: Claude Opus 4.7 <[email protected]>
---------
Co-authored-by: Claude Opus 4.7 <[email protected]>
* feat(command): add increx
* add one additional test
* update increx
* use custom 8.8 image with new increx
* address pr comments
* always use by in float
* reading xautoclaim's 3rd return value as list of deletedIDs
* adding test for xautoclaim that returns deletedIDs
* updating expected comments. running doctests make test locally works fine ?
* Adding missing clone deletedIDs
* switch to creating a new command instead
* output needed updating
* forgot to add the XAutoClaimWithDelete command to StreamCmdable
* Fix naming inconsistency in XAutoClaimWithDeleted
* trigger CI
* trigger CI
* trigger CI
* trigger CI
---------
Co-authored-by: Benoit Verreault <[email protected]>
Co-authored-by: Nedyalko Dyakov <[email protected]>
- pubsub.go: use clear() to empty maps
- search_commands.go: use slices.Clone() and maps.Clone()
- command.go: use maps.Clone() in XMessageSliceCmd.Clone()
- options.go: use maps.Keys() + slices.Collect() + slices.Sort()
- osscluster.go: use slices.SortFunc() instead of custom sort type
- proxy_fault_injector_server.go: remove custom min() function
* Add DoRaw and DoRawWriteTo for raw RESP protocol access
* fix augment comments
* Pipeline retry fix
* Fix Missing NoRetry check in cluster and ring retry loops
* Add support for Redis HOTKEYS commands
* Skip hotkeys tests for redis version lower than 8.6
* chore(image): use proper ci image for 8.6
* feat(command): hotkeys wip
* fix(tests): cluster hotkeys
* chore(lint): fmt
* Ensure HOTKEYS commands are only available on standalone Client and NOT on ClusterClient, Ring, or pooled clients
* fix(hotkeys): address pr comments
* chore(ci): use latest build
* fix(hotkeys): fix typo in response
---------
Co-authored-by: Nedyalko Dyakov <[email protected]>
Co-authored-by: Nedyalko Dyakov <[email protected]>
Co-authored-by: Elena Kolevska <[email protected]>
* chore(ci): use 8.6-pre
* chore(ci): add 8.6 in ci matrix
* fix(xinfostream): added new fields in the response
* fix(doctests): fix expected output for XInfoStream
* fix(xinfostreamfull): same as xinfostream
* fix(doctests): fix expected output for XInfoStream
* Support hybrid search params vectors
* Support xinfo stream change in tests
* Revert "Support xinfo stream change in tests"
This reverts commit fde9315b50dd495f96bdaac5300c9828ecdee90b.
* Support xinfo stream change in tests
* Fix stream doctest to support the changes in 8.6
---------
Co-authored-by: ofekshenawa <[email protected]>
Co-authored-by: ofekshenawa <[email protected]>
Update module path from github.com/redis/go-redis/v9 to
github.com/hanzoai/kv-go/v9 for use as the Hanzo KV Go SDK.
- Update go.mod module declaration
- Update all Go imports across 260 files
- Update all submodule go.mod files (extra/*, example/*, internal/customvet)
* 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
* Add support for new bitop operations
* chore(ci): Add 8.2 pre build for CI
* feat(info): add new client info keys
* fixed tests
* added godocs for bitop commands
---------
Co-authored-by: Nedyalko Dyakov <[email protected]>
Co-authored-by: Nedyalko Dyakov <[email protected]>
* fix(txpipeline): keyless commands should take the slot of the keyed commands
* fix(txpipeline): extract only keyed cmds from all cmds
* chore(test): Add tests for keyless cmds and txpipeline
* fix(cmdSlot): Add preferred random slot
* fix(cmdSlot): Add shortlist of keyless cmds
* chore(test): Fix ring test
* fix(keylessCommands): Add list of keyless commands
Add list of keyless Commands based on the Commands output
for redis 8
* chore(txPipeline): refactor slottedCommands impl
* fix(osscluster): typo
* feat: support vectorset
* fix: char encoding error
* use `any` instread of `interface{}`
* update vectorset API
Signed-off-by: fukua95 <[email protected]>
* refact: MapStringFloat64Cmd -> VectorInfoSliceCmd
Signed-off-by: fukua95 <[email protected]>
* update:
* the type of vector attribute: string -> VectorAttributeMarshaller
* Add a new API VRemAttr
* mark the APIs are experimental
Signed-off-by: fukua95 <[email protected]>
* trigger CI again
Signed-off-by: fukua95 <[email protected]>
* rename a API: VRemAttr -> VClearAttributes
Signed-off-by: fukua95 <[email protected]>
* add test
Signed-off-by: fukua95 <[email protected]>
* feat(vectorset): improve VSetAttr API and add comprehensive test suite
- Simplify VSetAttr to accept interface{} with automatic JSON marshalling
- Remove VectorAttributeMarshaller interface for simpler API
- Add comprehensive unit tests for all vectorset commands
---------
Signed-off-by: fukua95 <[email protected]>
Co-authored-by: Nedyalko Dyakov <[email protected]>
* xinfo-groups: support nil lag in XINFO GROUPS
* Add test
* docs: clarify XInfoGroup.Lag field behavior with Nil values
* docs: clarify XInfoGroup.Lag field behavior
* 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
* Add tests for unified config in Redis 8
* WIP: fix reading FT.CONFIG with RESP3
* add more tests
* use search-timeout
* move deprecated warnings on the bottom
* Add 8.0m3 image in docker compose
* Add new key `io-thread` in client info
Redis 8.0 introduces new key `io-thread` in the response
for client info. The key needs to be parsed. If an unknown key
is observed, the client will return an error.
* improve readibility
* Revert "Add 8.0m3 image in docker compose"
This reverts commit 787c41f42917fb7d3ca3471d9941304695a9b3c8.
* add dockers directory to gitignore
* Fix monitor on go 1.19
* Remove exmaple tests when go 1.19
* Fix typo
* Fix typo
* Skip exmaple test
* Skip exmaple test
* Guard Peek call with mutex for thread safety
* add helpers to set library name and library info without risk of panic if we try to set both
* refactor code to use helpers
* add example
* refactor tests
* fix testable example
* simplify example
* rename exampl
* fix ring.go
* update example
---------
Co-authored-by: ofekshenawa <[email protected]>
Add an extended version of Info() to parse the results from a call to redis.Info so that it’s simpler to operate on any given item in the result.
Signed-off-by: Nic Gibson <[email protected]>
* run go fix ./...
Signed-off-by: Tiago Peczenyj <[email protected]>
* run make fmt
Signed-off-by: Tiago Peczenyj <[email protected]>
* fix go vet ./... issues
* Update README.md
Reorder imports with the rules defined in the Makefile
as if we run `make fmt`
* run gofumpt -w .
* update Makefile to use gofumpt instead gofmt
* increment makefile
* format test
* format tests
Signed-off-by: Tiago Peczenyj <[email protected]>
---------
Signed-off-by: Tiago Peczenyj <[email protected]>
Co-authored-by: ofekshenawa <[email protected]>
* feat: merge master
* feat: revert ring.go
* feat: add ClientSetInfo command
* fix: test and cmd:
* fix: test and cmd
* fix: test and cmd
* fix: test and cmd
* feat: redesigning the API
* fix: panic test
* fix: panic test
---------
Co-authored-by: Anuragkillswitch <[email protected]>
Co-authored-by: ofekshenawa <[email protected]>