Skip to content

feat(vectorset): add VISMEMBER & WITHATTRIBS#3753

Merged
ndyakov merged 16 commits intoredis:masterfrom
romanpovol:feature/missing_vset_features
Apr 9, 2026
Merged

feat(vectorset): add VISMEMBER & WITHATTRIBS#3753
ndyakov merged 16 commits intoredis:masterfrom
romanpovol:feature/missing_vset_features

Conversation

@romanpovol
Copy link
Copy Markdown
Contributor

@romanpovol romanpovol commented Mar 25, 2026


Note

Medium Risk
Adds new vectorset commands and new reply-parsing paths (RESP2/RESP3, nullable attribute strings), which could cause mis-parsing or backward-compat issues if Redis returns unexpected shapes; changes are otherwise localized to vectorset APIs and tests.

Overview
Extends vectorset API surface by adding VISMEMBER plus new VSIM variants that request element attributes via WITHATTRIBS (optionally combined with WITHSCORES).

Introduces new command result types/parsers (VectorAttribSliceCmd, VectorScoreAttribSliceCmd and VectorAttrib/VectorScoreAttrib) that handle both RESP2 flat arrays and RESP3 maps, including nil attribute payloads.

Also fixes the VSIM argument key for Epsilon to emit lowercase epsilon, and updates unit/integration tests and doctest examples to cover the new commands and reply formats.

Reviewed by Cursor Bugbot for commit 1cb643a. Bugbot is set up for automated code reviews on this repo. Configure here.

@jit-ci
Copy link
Copy Markdown

jit-ci Bot commented Mar 25, 2026

Hi, I’m Jit, a friendly security platform designed to help developers build secure applications from day zero with an MVS (Minimal viable security) mindset.

In case there are security findings, they will be communicated to you as a comment inside the PR.

Hope you’ll enjoy using Jit.

Questions? Comments? Want to learn more? Get in touch with us.

Copy link
Copy Markdown

@cursor cursor Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

Comment thread vectorset_commands.go
ndyakov
ndyakov previously approved these changes Apr 7, 2026
Copy link
Copy Markdown
Member

@ndyakov ndyakov left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overall looks good, nothing blocking, but would like to see the comments resolved before merging. Thank you @romanpovol!

Comment thread vectorset_commands.go
Comment thread vectorset_commands_integration_test.go Outdated
Comment thread vectorset_commands_integration_test.go Outdated
Comment thread command.go Outdated
Comment thread command.go
romanpovol and others added 5 commits April 9, 2026 02:10
Signed-off-by: Xiaolong Chen <fukua95@gmail.com>
…instead of custom functions (redis#3758)

* Optimize: Use modern Go standard library (maps.Keys, slices.Collect, slices.Contains) instead of custom functions

* format
Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 5 to 6.
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)
- [Commits](codecov/codecov-action@v5...v6)

---
updated-dependencies:
- dependency-name: codecov/codecov-action
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…redis#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
ndyakov
ndyakov previously approved these changes Apr 9, 2026
Copy link
Copy Markdown
Member

@ndyakov ndyakov left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good, thank you @romanpovol

@ndyakov ndyakov added the feature label Apr 9, 2026
@ndyakov ndyakov merged commit b4613b3 into redis:master Apr 9, 2026
32 of 33 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

missing Vector Sets features (WITHATTRIBS, VISMEMBER)

4 participants