diff --git a/commands.go b/commands.go index 887fd73..7691330 100644 --- a/commands.go +++ b/commands.go @@ -944,12 +944,20 @@ func (c *commandable) SPop(key string) *StringCmd { return cmd } +// Redis `SRANDMEMBER key` command. func (c *commandable) SRandMember(key string) *StringCmd { cmd := NewStringCmd("SRANDMEMBER", key) c.Process(cmd) return cmd } +// Redis `SRANDMEMBER key count` command. +func (c *commandable) SRandMemberN(key string, count int64) *StringSliceCmd { + cmd := NewStringSliceCmd("SRANDMEMBER", key, formatInt(count)) + c.Process(cmd) + return cmd +} + func (c *commandable) SRem(key string, members ...string) *IntCmd { args := make([]interface{}, 2+len(members)) args[0] = "SREM" diff --git a/commands_test.go b/commands_test.go index 6cd9fc0..5fb5290 100644 --- a/commands_test.go +++ b/commands_test.go @@ -1733,21 +1733,25 @@ var _ = Describe("Commands", func() { Expect(sMembers.Val()).To(HaveLen(2)) }) - It("should SRandMember", func() { - sAdd := client.SAdd("set", "one") - Expect(sAdd.Err()).NotTo(HaveOccurred()) - sAdd = client.SAdd("set", "two") - Expect(sAdd.Err()).NotTo(HaveOccurred()) - sAdd = client.SAdd("set", "three") - Expect(sAdd.Err()).NotTo(HaveOccurred()) + It("should SRandMember and SRandMemberN", func() { + err := client.SAdd("set", "one").Err() + Expect(err).NotTo(HaveOccurred()) + err = client.SAdd("set", "two").Err() + Expect(err).NotTo(HaveOccurred()) + err = client.SAdd("set", "three").Err() + Expect(err).NotTo(HaveOccurred()) - sRandMember := client.SRandMember("set") - Expect(sRandMember.Err()).NotTo(HaveOccurred()) - Expect(sRandMember.Val()).NotTo(Equal("")) + members, err := client.SMembers("set").Result() + Expect(err).NotTo(HaveOccurred()) + Expect(members).To(HaveLen(3)) - sMembers := client.SMembers("set") - Expect(sMembers.Err()).NotTo(HaveOccurred()) - Expect(sMembers.Val()).To(HaveLen(3)) + member, err := client.SRandMember("set").Result() + Expect(err).NotTo(HaveOccurred()) + Expect(member).NotTo(Equal("")) + + members, err = client.SRandMemberN("set", 2).Result() + Expect(err).NotTo(HaveOccurred()) + Expect(members).To(HaveLen(2)) }) It("should SRem", func() {