golangのredis入門:string

4477 ワード

package main

import (
    "fmt"
    "github.com/garyburd/redigo/redis"
)

/*
    redis    string
    exists         key
    set key value  ex  time              
    eg:
        127.0.0.1:6379> set a 444 ex 10

    setnx  key  value     key       , key     value
    eg:
        127.0.0.1:6379> setnx a 333
        (integer) 1
        127.0.0.1:6379> get a
        "333"
    setex key seconds value  key     value   key        seconds   key     
    eg:
        127.0.0.1:6379> setex a 3 bb
        OK
    ttl   key     
    127.0.0.1:6379> ttl a
    (integer) -2

    psetex key milliseconds value  setex  ,        。
    eg:
        127.0.0.1:6379> psetex a 10000 ccccccc
        OK
        127.0.0.1:6379> ttl a
        (integer) 8
        127.0.0.1:6379> ttl a
        (integer) 7

    getset key value   key   value   vkey        

    strlen key    key         

    append key value   key      key       value
    eg:
        127.0.0.1:6379> strlen a
        (integer) 3
        127.0.0.1:6379> append a bbbb
        (integer) 7
    setrange key offset value     , offset    ,         value
          O(M) M  value   
    eg:
        127.0.0.1:6379> get a
        "eeebbbb"
        127.0.0.1:6379> setrange a 3 fff
        (integer) 7
        127.0.0.1:6379> get a
        "eeefffb"
        127.0.0.1:6379> setrange a 77 kkk
        (integer) 80
        127.0.0.1:6379> get a
        "eeefffb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00kkk"

    getrange key start end   key           ,          start   end         (   start   end   )。
                      , -1         , -2          ,     
          O(n)    N            。
          ,    start       

    incr key   key            
    eg:
        127.0.0.1:6379> set c 10
        OK
        127.0.0.1:6379> incr c
        (integer) 11

    incrby key increment              increment
    eg:
        127.0.0.1:6379> set c 10
        OK
        127.0.0.1:6379> incr c
        (integer) 11
        127.0.0.1:6379> incrby c 10
        (integer) 21

    incrbyfloat key increment
                        INCRBYFLOAT                     。
    eg:
        127.0.0.1:6379> set f 64.5
        OK
        127.0.0.1:6379> incrbyfloat f 22.1
        "86.6"

    decr key  key      1   key   ,    key         0     decr  
    eg:
        127.0.0.1:6379> decr c
        (integer) 20

    mset key value key value       key value
    msetnx key value key value                 ,          
                 , MSETNX                  。
    msetnx         ,              ,         ,           
    mget     key           ,              。

*/

func main() {
    conn, err := redis.Dial("tcp", "127.0.0.1:6379")
    if err != nil {
        fmt.Println("connect redis error: ", err)
        return
    }
    defer conn.Close()
    // set
    _, err = conn.Do("SET", "language", "goalng")
    if err != nil {
        fmt.Println("set error: ", err)
    }

    // get
    r, err := redis.String(conn.Do("GET", "language"))
    if err == nil {
        fmt.Println(r)
    }

    // mset
    _, err = conn.Do("MSET", "name", "zhangsan", "age", 22)
    if err != nil {
        fmt.Println("mset error: ", err)
    }

    // mget
    mr, err := redis.Strings(conn.Do("MGET", "name", "age"))
    fmt.Println(mr[0])

    hr, err := redis.StringMap(conn.Do("MGET", "name", "age"))
    fmt.Println(hr)

    // incr
    conn.Do("incr", "age")
    age, err := redis.String(conn.Do("GET", "age"))
    if err == nil {
        fmt.Println(age)
    }

    // getrange
    rg, err :=  redis.String(conn.Do("getrange", "name", 1, 3))
    if err == nil {
        fmt.Println("name getrange 1-3: ", rg)
    }
    conn.Do("msetnx", "name", "zhang", "age", 18)

    ch, err := redis.StringMap(conn.Do("mget", "name", "age"))
    fmt.Println("msetnx     key           ")
    fmt.Println(ch)
}