add new command Touch and SwapDB

This commit is contained in:
Huan Du 2018-02-14 12:42:19 +08:00 committed by Vladimir Mihailenco
parent 32f020f1fa
commit daab7c60d0
2 changed files with 43 additions and 0 deletions

View File

@ -73,6 +73,7 @@ type Cmdable interface {
Sort(key string, sort *Sort) *StringSliceCmd Sort(key string, sort *Sort) *StringSliceCmd
SortStore(key, store string, sort *Sort) *IntCmd SortStore(key, store string, sort *Sort) *IntCmd
SortInterfaces(key string, sort *Sort) *SliceCmd SortInterfaces(key string, sort *Sort) *SliceCmd
Touch(keys ...string) *IntCmd
TTL(key string) *DurationCmd TTL(key string) *DurationCmd
Type(key string) *StatusCmd Type(key string) *StatusCmd
Scan(cursor uint64, match string, count int64) *ScanCmd Scan(cursor uint64, match string, count int64) *ScanCmd
@ -253,6 +254,7 @@ type StatefulCmdable interface {
Cmdable Cmdable
Auth(password string) *StatusCmd Auth(password string) *StatusCmd
Select(index int) *StatusCmd Select(index int) *StatusCmd
SwapDB(index1, index2 int) *StatusCmd
ClientSetName(name string) *BoolCmd ClientSetName(name string) *BoolCmd
ReadOnly() *StatusCmd ReadOnly() *StatusCmd
ReadWrite() *StatusCmd ReadWrite() *StatusCmd
@ -317,6 +319,12 @@ func (c *statefulCmdable) Select(index int) *StatusCmd {
return cmd return cmd
} }
func (c *statefulCmdable) SwapDB(index1, index2 int) *StatusCmd {
cmd := NewStatusCmd("swapdb", index1, index2)
c.process(cmd)
return cmd
}
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
func (c *cmdable) Del(keys ...string) *IntCmd { func (c *cmdable) Del(keys ...string) *IntCmd {
@ -533,6 +541,17 @@ func (c *cmdable) SortInterfaces(key string, sort *Sort) *SliceCmd {
return cmd return cmd
} }
func (c *cmdable) Touch(keys ...string) *IntCmd {
args := make([]interface{}, len(keys)+1)
args[0] = "touch"
for i, key := range keys {
args[i+1] = key
}
cmd := NewIntCmd(args...)
c.process(cmd)
return cmd
}
func (c *cmdable) TTL(key string) *DurationCmd { func (c *cmdable) TTL(key string) *DurationCmd {
cmd := NewDurationCmd(time.Second, "ttl", key) cmd := NewDurationCmd(time.Second, "ttl", key)
c.process(cmd) c.process(cmd)

View File

@ -79,6 +79,16 @@ var _ = Describe("Commands", func() {
Expect(sel.Val()).To(Equal("OK")) Expect(sel.Val()).To(Equal("OK"))
}) })
It("should SwapDB", func() {
pipe := client.Pipeline()
sel := pipe.SwapDB(1, 2)
_, err := pipe.Exec()
Expect(err).NotTo(HaveOccurred())
Expect(sel.Err()).NotTo(HaveOccurred())
Expect(sel.Val()).To(Equal("OK"))
})
It("should BgRewriteAOF", func() { It("should BgRewriteAOF", func() {
Skip("flaky test") Skip("flaky test")
@ -650,6 +660,20 @@ var _ = Describe("Commands", func() {
Expect(els).To(Equal([]string{"1", "2"})) Expect(els).To(Equal([]string{"1", "2"}))
}) })
It("should Touch", func() {
set1 := client.Set("touch1", "hello", 0)
Expect(set1.Err()).NotTo(HaveOccurred())
Expect(set1.Val()).To(Equal("OK"))
set2 := client.Set("touch2", "hello", 0)
Expect(set2.Err()).NotTo(HaveOccurred())
Expect(set2.Val()).To(Equal("OK"))
touch := client.Touch("touch1", "touch2", "touch3")
Expect(touch.Err()).NotTo(HaveOccurred())
Expect(touch.Val()).To(Equal(int64(2)))
})
It("should TTL", func() { It("should TTL", func() {
ttl := client.TTL("key") ttl := client.TTL("key")
Expect(ttl.Err()).NotTo(HaveOccurred()) Expect(ttl.Err()).NotTo(HaveOccurred())