Skip to content

Commit c6b800e

Browse files
authored
Merge pull request #1039 from go-redis/fix/ttl-1
Handle -1 in DurationCmd
2 parents b902746 + c208a17 commit c6b800e

File tree

3 files changed

+14
-3
lines changed

3 files changed

+14
-3
lines changed

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
all: testdeps
22
go test ./...
33
go test ./... -short -race
4-
go test ./... -run=NONE -bench=.
4+
go test ./... -run=NONE -bench=. -benchmem
55
env GOOS=linux GOARCH=386 go test ./...
66
go vet
77
go get github.com/gordonklaus/ineffassign

command.go

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -439,7 +439,14 @@ func (cmd *DurationCmd) readReply(rd *proto.Reader) error {
439439
if cmd.err != nil {
440440
return cmd.err
441441
}
442-
cmd.val = time.Duration(n) * cmd.precision
442+
switch n {
443+
// -2 if the key does not exist
444+
// -1 if the key exists but has no associated expire
445+
case -2, -1:
446+
cmd.val = time.Duration(n)
447+
default:
448+
cmd.val = time.Duration(n) * cmd.precision
449+
}
443450
return nil
444451
}
445452

commands_test.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -374,7 +374,11 @@ var _ = Describe("Commands", func() {
374374

375375
ttl = client.TTL("key")
376376
Expect(ttl.Err()).NotTo(HaveOccurred())
377-
Expect(ttl.Val() < 0).To(Equal(true))
377+
Expect(ttl.Val()).To(Equal(time.Duration(-1)))
378+
379+
ttl = client.TTL("nonexistent_key")
380+
Expect(ttl.Err()).NotTo(HaveOccurred())
381+
Expect(ttl.Val()).To(Equal(time.Duration(-2)))
378382
})
379383

380384
It("should ExpireAt", func() {

0 commit comments

Comments
 (0)