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
|
||||
|
||||
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
|
||||
ZAddXX(ctx context.Context, key string, members ...Z) *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.
|
||||
func (c cmdable) ZAddNX(ctx context.Context, key string, members ...Z) *IntCmd {
|
||||
return c.ZAddArgs(ctx, key, ZAddArgs{
|
||||
|
|
|
@ -3407,6 +3407,76 @@ var _ = Describe("Commands", func() {
|
|||
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() {
|
||||
added, err := client.ZAddNX(ctx, "zset", redis.Z{
|
||||
Score: 1,
|
||||
|
|
Loading…
Reference in New Issue