github.com/cellofellow/gopkg@v0.0.0-20140722061823-eec0544a62ad/database/redis/example.go (about) 1 // Copyright 2014 <chaishushan{AT}gmail.com>. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 // +build ingore 6 7 package main 8 9 import ( 10 "fmt" 11 "os" 12 "time" 13 14 "chai2010.gopkg/datebase/redis" 15 ) 16 17 func errHndlr(err error) { 18 if err != nil { 19 fmt.Println("error:", err) 20 os.Exit(1) 21 } 22 } 23 24 func main() { 25 c, err := redis.DialTimeout("tcp", "127.0.0.1:6379", time.Duration(10)*time.Second) 26 errHndlr(err) 27 defer c.Close() 28 29 // select database 30 r := c.Cmd("select", 8) 31 errHndlr(r.Err) 32 33 r = c.Cmd("flushdb") 34 errHndlr(r.Err) 35 36 r = c.Cmd("echo", "Hello world!") 37 errHndlr(r.Err) 38 39 s, err := r.Str() 40 errHndlr(err) 41 fmt.Println("echo:", s) 42 43 //* Strings 44 r = c.Cmd("set", "mykey0", "myval0") 45 errHndlr(r.Err) 46 47 s, err = c.Cmd("get", "mykey0").Str() 48 errHndlr(err) 49 fmt.Println("mykey0:", s) 50 51 myhash := map[string]string{ 52 "mykey1": "myval1", 53 "mykey2": "myval2", 54 "mykey3": "myval3", 55 } 56 57 // Alternatively: 58 // c.Cmd("mset", "mykey1", "myval1", "mykey2", "myval2", "mykey3", "myval3") 59 r = c.Cmd("mset", myhash) 60 errHndlr(r.Err) 61 62 ls, err := c.Cmd("mget", "mykey1", "mykey2", "mykey3").List() 63 errHndlr(err) 64 fmt.Println("mykeys values:", ls) 65 66 //* List handling 67 mylist := []string{"foo", "bar", "qux"} 68 69 // Alternativaly: 70 // c.Cmd("rpush", "mylist", "foo", "bar", "qux") 71 r = c.Cmd("rpush", "mylist", mylist) 72 errHndlr(r.Err) 73 74 mylist, err = c.Cmd("lrange", "mylist", 0, -1).List() 75 errHndlr(err) 76 77 fmt.Println("mylist:", mylist) 78 79 //* Hash handling 80 81 // Alternatively: 82 // c.Cmd("hmset", "myhash", ""mykey1", "myval1", "mykey2", "myval2", "mykey3", "myval3") 83 r = c.Cmd("hmset", "myhash", myhash) 84 errHndlr(r.Err) 85 86 myhash, err = c.Cmd("hgetall", "myhash").Hash() 87 errHndlr(err) 88 89 fmt.Println("myhash:", myhash) 90 91 //* Pipelining 92 c.Append("set", "multikey", "multival") 93 c.Append("get", "multikey") 94 95 c.GetReply() // set 96 r = c.GetReply() // get 97 errHndlr(r.Err) 98 99 s, err = r.Str() 100 errHndlr(err) 101 fmt.Println("multikey:", s) 102 }