Skip to content

Commit

Permalink
Example #7: set expiration time
Browse files Browse the repository at this point in the history
  • Loading branch information
tisnik committed Jun 29, 2020
1 parent 209b44d commit 7e6dc6b
Show file tree
Hide file tree
Showing 2 changed files with 69 additions and 0 deletions.
64 changes: 64 additions & 0 deletions lesson7/redis/07_set_expiration/07_set_expiration.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
package main

import (
"fmt"
"time"

"github.com/go-redis/redis/v8"
)

// adresa určující službu Redisu, která se má použít
const redisAddress = "localhost:6379"

func main() {
// vytvoření nového klienta s předáním konfiguračních parametrů
client := redis.NewClient(&redis.Options{
Addr: redisAddress,
Password: "", // no password set
DB: 0, // use default DB
})

// neměli bychom zapomenout na ukončení práce s klientem
defer func() {
err := client.Close()
if err != nil {
panic(err)
}
}()

// získáme kontext
context := client.Context()

// specifikace doby platnosti hodnoty uložené do Redisu
expiration, err := time.ParseDuration("10s")
if err != nil {
panic(err)
}

// zápis hodnoty do databáze Redisu
err = client.Set(context,
"Seriál o jazyku Go",
"https://www.root.cz/serialy/programovaci-jazyk-go/",
expiration).Err()
if err != nil {
panic(err)
}

for {
// přečtení hodnoty z databáze Redisu
address, err := client.Get(context, "Seriál o jazyku Go").Result()

// vyhodnocení předchozí operace
switch {
case err == redis.Nil:
fmt.Println("no value found")
return
case err != nil:
panic(err)
default:
fmt.Println("Adresa:", address)
}

time.Sleep(1 * time.Second)
}
}
5 changes: 5 additions & 0 deletions lesson7/redis/07_set_expiration/go.mod
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
module redis1

go 1.13

require github.com/go-redis/redis/v8 v8.0.0-beta.5

0 comments on commit 7e6dc6b

Please sign in to comment.