Merge pull request #144 from go-redis/fix/document-expiration

Document zero expiration. Fixes #143.
This commit is contained in:
Vladimir Mihailenco 2015-08-08 13:28:31 +03:00
commit a4b3e099fc
3 changed files with 25 additions and 1 deletions

View File

@ -11,7 +11,7 @@ testdeps: .test/redis/src/redis-server
.test/redis: .test/redis:
mkdir -p $@ mkdir -p $@
wget -qO- https://github.com/antirez/redis/archive/3.0.tar.gz | tar xvz --strip-components=1 -C $@ wget -qO- https://github.com/antirez/redis/archive/3.0.3.tar.gz | tar xvz --strip-components=1 -C $@
.test/redis/src/redis-server: .test/redis .test/redis/src/redis-server: .test/redis
cd $< && make all cd $< && make all

View File

@ -526,6 +526,9 @@ func (c *commandable) MSetNX(pairs ...string) *BoolCmd {
return cmd return cmd
} }
// Redis `SET key value [expiration]` command.
//
// Zero expiration means the key has no expiration time.
func (c *commandable) Set(key string, value interface{}, expiration time.Duration) *StatusCmd { func (c *commandable) Set(key string, value interface{}, expiration time.Duration) *StatusCmd {
args := make([]interface{}, 3, 5) args := make([]interface{}, 3, 5)
args[0] = "SET" args[0] = "SET"
@ -554,6 +557,9 @@ func (c *commandable) SetBit(key string, offset int64, value int) *IntCmd {
return cmd return cmd
} }
// Redis `SET key value [expiration] NX` command.
//
// Zero expiration means the key has no expiration time.
func (c *commandable) SetNX(key string, value interface{}, expiration time.Duration) *BoolCmd { func (c *commandable) SetNX(key string, value interface{}, expiration time.Duration) *BoolCmd {
var cmd *BoolCmd var cmd *BoolCmd
if expiration == 0 { if expiration == 0 {
@ -570,6 +576,9 @@ func (c *commandable) SetNX(key string, value interface{}, expiration time.Durat
return cmd return cmd
} }
// Redis `SET key value [expiration] XX` command.
//
// Zero expiration means the key has no expiration time.
func (c *Client) SetXX(key string, value interface{}, expiration time.Duration) *BoolCmd { func (c *Client) SetXX(key string, value interface{}, expiration time.Duration) *BoolCmd {
var cmd *BoolCmd var cmd *BoolCmd
if usePrecise(expiration) { if usePrecise(expiration) {

View File

@ -84,6 +84,21 @@ func ExampleClient() {
// key2 does not exists // key2 does not exists
} }
func ExampleClient_Set() {
// Last argument is expiration. Zero means the key has no
// expiration time.
err := client.Set("key", "value", 0).Err()
if err != nil {
panic(err)
}
// key2 will expire in an hour.
err = client.Set("key2", "value", time.Hour).Err()
if err != nil {
panic(err)
}
}
func ExampleClient_Incr() { func ExampleClient_Incr() {
if err := client.Incr("counter").Err(); err != nil { if err := client.Incr("counter").Err(); err != nil {
panic(err) panic(err)