golang之redis入門: hash表

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

/*  
    hash的一些基本操作: 
    hset hash field value 將哈希表hash中域 field 的值設置為 value
    如果哈希表不存在, 那么將創建并寫入, 如果存在則更新hash表中的數據
    eg:
        127.0.0.1:6379> hset website google www.g.cn
        (integer) 1
        127.0.0.1:6379> hget website google
        "www.g.cn"

    hsetnx hash field value  當且僅當域field不存在于哈希表中的時候,將值設置為value
    如果表不存在 則創建并執行寫入field value
    eg:
        127.0.0.1:6379> hsetnx database nosql redis
        (integer) 1
        127.0.0.1:6379> hsetnx database nosql mongo
        (integer) 0
        127.0.0.1:6379> hget database nosql
        "redis"
    hget hash field  返回哈希表中給定的域值
    eg:
        127.0.0.1:6379> hget database nosql
        "redis"
        127.0.0.1:6379> hget data redis
        (nil)

    hexists hash field 檢查field是否在hash表中
    eg:
        127.0.0.1:6379> hexists database nosql
        (integer) 1
        127.0.0.1:6379> hexists database redis
        (integer) 0

    hdel hash field ... 刪除哈希表hash中的一個或多個指定區域,不存在的域將被忽略。
    eg:
        127.0.0.1:6379> hset database sql  mysql
        (integer) 1
        127.0.0.1:6379> hdel database sql
        (integer) 1
        127.0.0.1:6379> hdel database sql nosql
        (integer) 1
    hlen key 返回哈希表key中域的數量
    eg:
        127.0.0.1:6379> hlen database
        (integer) 0

    hstrlen key field  返回哈希表key中制定field的字符串長度
    eg:
        127.0.0.1:6379> hset database sql mysql
        (integer) 1
        127.0.0.1:6379> hstrlen database sql
        (integer) 5

    hincrby key field increment  為哈希表 key 中的域 field 的值加上增量 increment
    不能對字符串域field執行hincrby命令
    eg:
        127.0.0.1:6379> hset add one 1
        (integer) 1
        127.0.0.1:6379> hincrby add one 1000
        (integer) 1001

    hincrbyfloat key field increment 為哈希表key中的域field加上浮點數增量increment
    eg:
        127.0.0.1:6379> hincrby add one 1000
        (integer) 1001
        127.0.0.1:6379> hincrbyfloat add one 99.555555
        "1100.55555500000000002"

    hmset  key field value [field value …] 同時將多個field-value(域-值)對設置到哈希表 key 中。
    eg:
        127.0.0.1:6379> hmset fruit key1 apple  key2 banana key3 orange
        OK

    hmget key field [field …] 返回哈希表 key 中,一個或多個給定域的值。
    eg:
        127.0.0.1:6379> hmget fruit key1 key2 key3
        1) "apple"
        2) "banana"
        3) "orange"
    hkeys key   返回哈希表 key 中的所有域。
    eg:
        127.0.0.1:6379> hkeys fruit
        1) "key1"
        2) "key2"
        3) "key3"

    hvals key  返回哈希表key中所有域的值
    eg:
        127.0.0.1:6379> hvals fruit
        1) "apple"
        2) "banana"
        3) "orange"
    hgetall key 返回哈希表 key 中,所有的域和值。
    eg:
        127.0.0.1:6379> hgetall fruit
        1) "key1"
        2) "apple"
        3) "key2"
        4) "banana"
        5) "key3"
        6) "orange"
*/

func main() {
    conn, err := redis.Dial("tcp", "127.0.0.1:6379")
    if err != nil {
        fmt.Println("conn error: ", err)
    }

    defer conn.Close()

    // hset
    _, err = conn.Do("hset", "website", "google", "www.google.com")
    if err != nil {
        fmt.Println("hset error : ", err)
    }
    // hmset
    _, err = conn.Do("hmset", "website", "baidu", "www.baidu.com", "qq", "www.qq.com")
    if err != nil {
        fmt.Println("hmset error:", err)
    }

    // hgetall
    res, err := redis.StringMap(conn.Do("hgetall", "website"))
    if err == nil {
        fmt.Println(res)
    }else {
        fmt.Println("hgetall error: ", err)
    }

    // hvals
    rs, err := redis.Strings(conn.Do("hvals", "website"))
    if err == nil {
        fmt.Println(rs)
    }else {
        fmt.Println(err)
    }

    // hkeys
    rk, err := redis.Strings(conn.Do("hkeys", "website"))
    if err == nil {
        fmt.Println(rk)
    }else {
        fmt.Println(err)
    }

    // hstrlen
    l, err := redis.Int(conn.Do("hstrlen", "website", "google"))
    if err == nil {
        fmt.Println(l)
    }else {
        fmt.Println(err)
    }
    // hlen
    l, err = redis.Int(conn.Do("hlen", "website"))
    if err == nil {
        fmt.Println(l)
    }else {
        fmt.Println(err)
    }
}
  
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容