mirror of https://github.com/go-redis/redis.git
feat(zadd): add ZAddLT and ZAddGT (#2429)
Co-authored-by: Vladimir Mihailenco <vladimir.webdev@gmail.com>
This commit is contained in:
parent
73d939e7bf
commit
9664fd2359
18
commands.go
18
commands.go
|
@ -302,6 +302,8 @@ type Cmdable interface {
|
||||||
BZMPop(ctx context.Context, timeout time.Duration, order string, count int64, keys ...string) *ZSliceWithKeyCmd
|
BZMPop(ctx context.Context, timeout time.Duration, order string, count int64, keys ...string) *ZSliceWithKeyCmd
|
||||||
|
|
||||||
ZAdd(ctx context.Context, key string, members ...Z) *IntCmd
|
ZAdd(ctx context.Context, key string, members ...Z) *IntCmd
|
||||||
|
ZAddLT(ctx context.Context, key string, members ...Z) *IntCmd
|
||||||
|
ZAddGT(ctx context.Context, key string, members ...Z) *IntCmd
|
||||||
ZAddNX(ctx context.Context, key string, members ...Z) *IntCmd
|
ZAddNX(ctx context.Context, key string, members ...Z) *IntCmd
|
||||||
ZAddXX(ctx context.Context, key string, members ...Z) *IntCmd
|
ZAddXX(ctx context.Context, key string, members ...Z) *IntCmd
|
||||||
ZAddArgs(ctx context.Context, key string, args ZAddArgs) *IntCmd
|
ZAddArgs(ctx context.Context, key string, args ZAddArgs) *IntCmd
|
||||||
|
@ -2408,6 +2410,22 @@ func (c cmdable) ZAdd(ctx context.Context, key string, members ...Z) *IntCmd {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ZAddLT Redis `ZADD key LT score member [score member ...]` command.
|
||||||
|
func (c cmdable) ZAddLT(ctx context.Context, key string, members ...Z) *IntCmd {
|
||||||
|
return c.ZAddArgs(ctx, key, ZAddArgs{
|
||||||
|
LT: true,
|
||||||
|
Members: members,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// ZAddGT Redis `ZADD key GT score member [score member ...]` command.
|
||||||
|
func (c cmdable) ZAddGT(ctx context.Context, key string, members ...Z) *IntCmd {
|
||||||
|
return c.ZAddArgs(ctx, key, ZAddArgs{
|
||||||
|
GT: true,
|
||||||
|
Members: members,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
// ZAddNX Redis `ZADD key NX score member [score member ...]` command.
|
// ZAddNX Redis `ZADD key NX score member [score member ...]` command.
|
||||||
func (c cmdable) ZAddNX(ctx context.Context, key string, members ...Z) *IntCmd {
|
func (c cmdable) ZAddNX(ctx context.Context, key string, members ...Z) *IntCmd {
|
||||||
return c.ZAddArgs(ctx, key, ZAddArgs{
|
return c.ZAddArgs(ctx, key, ZAddArgs{
|
||||||
|
|
|
@ -3407,6 +3407,76 @@ var _ = Describe("Commands", func() {
|
||||||
Expect(vals).To(Equal([]redis.Z{{Score: 1, Member: "one"}}))
|
Expect(vals).To(Equal([]redis.Z{{Score: 1, Member: "one"}}))
|
||||||
})
|
})
|
||||||
|
|
||||||
|
It("should ZAddArgsLT", func() {
|
||||||
|
added, err := client.ZAddLT(ctx, "zset", redis.Z{
|
||||||
|
Score: 2,
|
||||||
|
Member: "one",
|
||||||
|
}).Result()
|
||||||
|
Expect(err).NotTo(HaveOccurred())
|
||||||
|
Expect(added).To(Equal(int64(1)))
|
||||||
|
|
||||||
|
vals, err := client.ZRangeWithScores(ctx, "zset", 0, -1).Result()
|
||||||
|
Expect(err).NotTo(HaveOccurred())
|
||||||
|
Expect(vals).To(Equal([]redis.Z{{Score: 2, Member: "one"}}))
|
||||||
|
|
||||||
|
added, err = client.ZAddLT(ctx, "zset", redis.Z{
|
||||||
|
Score: 3,
|
||||||
|
Member: "one",
|
||||||
|
}).Result()
|
||||||
|
Expect(err).NotTo(HaveOccurred())
|
||||||
|
Expect(added).To(Equal(int64(0)))
|
||||||
|
|
||||||
|
vals, err = client.ZRangeWithScores(ctx, "zset", 0, -1).Result()
|
||||||
|
Expect(err).NotTo(HaveOccurred())
|
||||||
|
Expect(vals).To(Equal([]redis.Z{{Score: 2, Member: "one"}}))
|
||||||
|
|
||||||
|
added, err = client.ZAddLT(ctx, "zset", redis.Z{
|
||||||
|
Score: 1,
|
||||||
|
Member: "one",
|
||||||
|
}).Result()
|
||||||
|
Expect(err).NotTo(HaveOccurred())
|
||||||
|
Expect(added).To(Equal(int64(0)))
|
||||||
|
|
||||||
|
vals, err = client.ZRangeWithScores(ctx, "zset", 0, -1).Result()
|
||||||
|
Expect(err).NotTo(HaveOccurred())
|
||||||
|
Expect(vals).To(Equal([]redis.Z{{Score: 1, Member: "one"}}))
|
||||||
|
})
|
||||||
|
|
||||||
|
It("should ZAddArgsGT", func() {
|
||||||
|
added, err := client.ZAddGT(ctx, "zset", redis.Z{
|
||||||
|
Score: 2,
|
||||||
|
Member: "one",
|
||||||
|
}).Result()
|
||||||
|
Expect(err).NotTo(HaveOccurred())
|
||||||
|
Expect(added).To(Equal(int64(1)))
|
||||||
|
|
||||||
|
vals, err := client.ZRangeWithScores(ctx, "zset", 0, -1).Result()
|
||||||
|
Expect(err).NotTo(HaveOccurred())
|
||||||
|
Expect(vals).To(Equal([]redis.Z{{Score: 2, Member: "one"}}))
|
||||||
|
|
||||||
|
added, err = client.ZAddGT(ctx, "zset", redis.Z{
|
||||||
|
Score: 3,
|
||||||
|
Member: "one",
|
||||||
|
}).Result()
|
||||||
|
Expect(err).NotTo(HaveOccurred())
|
||||||
|
Expect(added).To(Equal(int64(0)))
|
||||||
|
|
||||||
|
vals, err = client.ZRangeWithScores(ctx, "zset", 0, -1).Result()
|
||||||
|
Expect(err).NotTo(HaveOccurred())
|
||||||
|
Expect(vals).To(Equal([]redis.Z{{Score: 3, Member: "one"}}))
|
||||||
|
|
||||||
|
added, err = client.ZAddGT(ctx, "zset", redis.Z{
|
||||||
|
Score: 1,
|
||||||
|
Member: "one",
|
||||||
|
}).Result()
|
||||||
|
Expect(err).NotTo(HaveOccurred())
|
||||||
|
Expect(added).To(Equal(int64(0)))
|
||||||
|
|
||||||
|
vals, err = client.ZRangeWithScores(ctx, "zset", 0, -1).Result()
|
||||||
|
Expect(err).NotTo(HaveOccurred())
|
||||||
|
Expect(vals).To(Equal([]redis.Z{{Score: 3, Member: "one"}}))
|
||||||
|
})
|
||||||
|
|
||||||
It("should ZAddArgsNX", func() {
|
It("should ZAddArgsNX", func() {
|
||||||
added, err := client.ZAddNX(ctx, "zset", redis.Z{
|
added, err := client.ZAddNX(ctx, "zset", redis.Z{
|
||||||
Score: 1,
|
Score: 1,
|
||||||
|
|
Loading…
Reference in New Issue