add support for SPOP with a count argument (available in REDIS 3.2)

This commit is contained in:
Mattias Lundell 2016-06-09 17:39:51 +02:00
parent 5183f8dcde
commit f3663987c0
2 changed files with 36 additions and 0 deletions

View File

@ -959,12 +959,20 @@ func (c *commandable) SMove(source, destination string, member interface{}) *Boo
return cmd return cmd
} }
// Redis `SPOP key` command.
func (c *commandable) SPop(key string) *StringCmd { func (c *commandable) SPop(key string) *StringCmd {
cmd := NewStringCmd("SPOP", key) cmd := NewStringCmd("SPOP", key)
c.Process(cmd) c.Process(cmd)
return cmd return cmd
} }
// Redis `SPOP key count` command.
func (c *commandable) SPopN(key string, count int64) *StringSliceCmd {
cmd := NewStringSliceCmd("SPOP", key, count)
c.Process(cmd)
return cmd
}
// Redis `SRANDMEMBER key` command. // Redis `SRANDMEMBER key` command.
func (c *commandable) SRandMember(key string) *StringCmd { func (c *commandable) SRandMember(key string) *StringCmd {
cmd := NewStringCmd("SRANDMEMBER", key) cmd := NewStringCmd("SRANDMEMBER", key)

View File

@ -1819,6 +1819,34 @@ var _ = Describe("Commands", func() {
sMembers := client.SMembers("set") sMembers := client.SMembers("set")
Expect(sMembers.Err()).NotTo(HaveOccurred()) Expect(sMembers.Err()).NotTo(HaveOccurred())
Expect(sMembers.Val()).To(HaveLen(2)) Expect(sMembers.Val()).To(HaveLen(2))
})
It("should SPopN", 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())
sAdd = client.SAdd("set", "four")
Expect(sAdd.Err()).NotTo(HaveOccurred())
sPopN := client.SPopN("set", 1)
Expect(sPopN.Err()).NotTo(HaveOccurred())
Expect(sPopN.Val()).NotTo(Equal([]string{""}))
sMembers := client.SMembers("set")
Expect(sMembers.Err()).NotTo(HaveOccurred())
Expect(sMembers.Val()).To(HaveLen(3))
sPopN = client.SPopN("set", 4)
Expect(sPopN.Err()).NotTo(HaveOccurred())
Expect(sPopN.Val()).To(HaveLen(3))
sMembers = client.SMembers("set")
Expect(sMembers.Err()).NotTo(HaveOccurred())
Expect(sMembers.Val()).To(HaveLen(0))
}) })
It("should SRandMember and SRandMemberN", func() { It("should SRandMember and SRandMemberN", func() {