1
0
mirror of https://github.com/redis/go-redis.git synced 2025-11-24 18:41:04 +03:00

feat(vectorset): add vrange command (#3543)

This commit is contained in:
cxljs
2025-11-12 19:55:23 +08:00
committed by GitHub
parent 5fdc947723
commit 9c425cb9ba
2 changed files with 29 additions and 0 deletions

View File

@@ -26,6 +26,7 @@ type VectorSetCmdable interface {
VSimWithScores(ctx context.Context, key string, val Vector) *VectorScoreSliceCmd
VSimWithArgs(ctx context.Context, key string, val Vector, args *VSimArgs) *StringSliceCmd
VSimWithArgsWithScores(ctx context.Context, key string, val Vector, args *VSimArgs) *VectorScoreSliceCmd
VRange(ctx context.Context, key, start, end string, count int64) *StringSliceCmd
}
type Vector interface {
@@ -345,3 +346,13 @@ func (c cmdable) VSimWithArgsWithScores(ctx context.Context, key string, val Vec
_ = c(ctx, cmd)
return cmd
}
// `VRANGE key start end count`
// a negative count means to return all the elements in the vector set.
// note: the API is experimental and may be subject to change.
func (c cmdable) VRange(ctx context.Context, key, start, end string, count int64) *StringSliceCmd {
args := []any{"vrange", key, start, end, count}
cmd := NewStringSliceCmd(ctx, args...)
_ = c(ctx, cmd)
return cmd
}

View File

@@ -260,6 +260,24 @@ var _ = Describe("Redis VectorSet commands", Label("vectorset"), func() {
expectNil(err)
expectEqual(len(res), len(vals))
if RedisVersion >= 8.4 {
res, err = client.VRange(ctx, vecName, "[k1", "[k2", -1).Result()
expectNil(err)
expectEqual(len(res), 2)
res, err = client.VRange(ctx, vecName, "-", "[k2", -1).Result()
expectNil(err)
expectEqual(len(res), 3)
res, err = client.VRange(ctx, vecName, "(k1", "+", -1).Result()
expectNil(err)
expectEqual(len(res), 3)
res, err = client.VRange(ctx, vecName, "[k1", "+", 2).Result()
expectNil(err)
expectEqual(len(res), 2)
}
// test equality
sim, err := client.VSimWithArgs(ctx, vecName, &vals[0].v, &redis.VSimArgs{
Filter: `.age == 25`,