mirror of
https://github.com/redis/go-redis.git
synced 2025-07-28 06:42:00 +03:00
Adding support for ZMPOP command (#2408)
* feat: add ZMPOP command * fix: reply reading string * fix: evaluating a test tweak * fix: test fix * fix: reverting to debug * fix: test fix * fix: remove old implementation * feat: adding ZMPOP and tests * feat: modifying ZMpopCmd * fix: fix test * fix: test removal check * fix: fix testS * Adding more tests * fix: using redis.Nil instead of string * fix: renaming command to ZArrayWithKeyCmd to match the standard * feat: updated ZArrayWithKeyCmd to ZSliceWithKeyCmd * feat: adding help strings --------- Co-authored-by: Anuragkillswitch <70265851+Anuragkillswitch@users.noreply.github.com> Co-authored-by: Chayim <chayim@users.noreply.github.com>
This commit is contained in:
committed by
GitHub
parent
f95bdb8a8b
commit
621c02c583
@ -3752,6 +3752,85 @@ var _ = Describe("Commands", func() {
|
||||
}}))
|
||||
})
|
||||
|
||||
It("should ZMPop", func() {
|
||||
|
||||
err := client.ZAdd(ctx, "zset", redis.Z{Score: 1, Member: "one"}).Err()
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
err = client.ZAdd(ctx, "zset", redis.Z{Score: 2, Member: "two"}).Err()
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
err = client.ZAdd(ctx, "zset", redis.Z{Score: 3, Member: "three"}).Err()
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
|
||||
err = client.ZAdd(ctx, "zset2", redis.Z{Score: 1, Member: "one"}).Err()
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
err = client.ZAdd(ctx, "zset2", redis.Z{Score: 2, Member: "two"}).Err()
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
err = client.ZAdd(ctx, "zset2", redis.Z{Score: 3, Member: "three"}).Err()
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
|
||||
key, elems, err := client.ZMPop(ctx, "min", 1, "zset").Result()
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
Expect(key).To(Equal("zset"))
|
||||
Expect(elems).To(Equal([]redis.Z{{
|
||||
Score: 1,
|
||||
Member: "one",
|
||||
}}))
|
||||
|
||||
_, _, err = client.ZMPop(ctx, "min", 1, "nosuchkey").Result()
|
||||
Expect(err).To(Equal(redis.Nil))
|
||||
|
||||
err = client.ZAdd(ctx, "myzset", redis.Z{Score: 1, Member: "one"}).Err()
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
err = client.ZAdd(ctx, "myzset", redis.Z{Score: 2, Member: "two"}).Err()
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
err = client.ZAdd(ctx, "myzset", redis.Z{Score: 3, Member: "three"}).Err()
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
|
||||
key, elems, err = client.ZMPop(ctx, "min", 1, "myzset").Result()
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
Expect(key).To(Equal("myzset"))
|
||||
Expect(elems).To(Equal([]redis.Z{{
|
||||
Score:1,
|
||||
Member:"one",
|
||||
}}))
|
||||
|
||||
key, elems, err = client.ZMPop(ctx, "max", 10, "myzset").Result()
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
Expect(key).To(Equal("myzset"))
|
||||
Expect(elems).To(Equal([]redis.Z{{
|
||||
Score:3,
|
||||
Member:"three",
|
||||
},{
|
||||
Score: 2,
|
||||
Member: "two",
|
||||
}}))
|
||||
|
||||
|
||||
err = client.ZAdd(ctx, "myzset2", redis.Z{Score: 4, Member: "four"}).Err()
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
err = client.ZAdd(ctx, "myzset2", redis.Z{Score: 5, Member: "five"}).Err()
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
err = client.ZAdd(ctx, "myzset2", redis.Z{Score: 6, Member: "six"}).Err()
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
|
||||
key, elems, err = client.ZMPop(ctx, "min", 10, "myzset","myzset2").Result()
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
Expect(key).To(Equal("myzset2"))
|
||||
Expect(elems).To(Equal([]redis.Z{{
|
||||
Score:4,
|
||||
Member:"four",
|
||||
},{
|
||||
Score: 5,
|
||||
Member: "five",
|
||||
},{
|
||||
Score:6,
|
||||
Member: "six",
|
||||
}}))
|
||||
|
||||
|
||||
|
||||
})
|
||||
|
||||
It("should ZMScore", func() {
|
||||
zmScore := client.ZMScore(ctx, "zset", "one", "three")
|
||||
Expect(zmScore.Err()).NotTo(HaveOccurred())
|
||||
|
Reference in New Issue
Block a user