Merge pull request #491 from eyalpost/MultiExec

Support for multi keys in Exists
This commit is contained in:
Vladimir Mihailenco 2017-02-11 13:18:35 +02:00 committed by GitHub
commit 0cd35295e6
2 changed files with 21 additions and 0 deletions

View File

@ -50,6 +50,8 @@ type Cmdable interface {
Unlink(keys ...string) *IntCmd Unlink(keys ...string) *IntCmd
Dump(key string) *StringCmd Dump(key string) *StringCmd
Exists(key string) *BoolCmd Exists(key string) *BoolCmd
// TODO: merge with Exists in v6
ExistsMulti(keys ...string) *IntCmd
Expire(key string, expiration time.Duration) *BoolCmd Expire(key string, expiration time.Duration) *BoolCmd
ExpireAt(key string, tm time.Time) *BoolCmd ExpireAt(key string, tm time.Time) *BoolCmd
Keys(pattern string) *StringSliceCmd Keys(pattern string) *StringSliceCmd
@ -317,6 +319,17 @@ func (c *cmdable) Exists(key string) *BoolCmd {
return cmd return cmd
} }
func (c *cmdable) ExistsMulti(keys ...string) *IntCmd {
args := make([]interface{}, 1+len(keys))
args[0] = "exists"
for i, key := range keys {
args[1+i] = key
}
cmd := NewIntCmd(args...)
c.process(cmd)
return cmd
}
func (c *cmdable) Expire(key string, expiration time.Duration) *BoolCmd { func (c *cmdable) Expire(key string, expiration time.Duration) *BoolCmd {
cmd := NewBoolCmd("expire", key, formatSec(expiration)) cmd := NewBoolCmd("expire", key, formatSec(expiration))
c.process(cmd) c.process(cmd)

View File

@ -242,6 +242,14 @@ var _ = Describe("Commands", func() {
exists = client.Exists("key2") exists = client.Exists("key2")
Expect(exists.Err()).NotTo(HaveOccurred()) Expect(exists.Err()).NotTo(HaveOccurred())
Expect(exists.Val()).To(Equal(false)) Expect(exists.Val()).To(Equal(false))
existsMul := client.ExistsMulti("key1", "key2")
Expect(existsMul.Err()).NotTo(HaveOccurred())
Expect(existsMul.Val()).To(Equal(int64(1)))
existsMul = client.ExistsMulti("key1", "key1")
Expect(existsMul.Err()).NotTo(HaveOccurred())
Expect(existsMul.Val()).To(Equal(int64(2)))
}) })
It("should Expire", func() { It("should Expire", func() {