golang操作redis

1:安裝redigo

go get github.com/garyburd/redigo/redis

2:連接redis

import"github.com/garyburd/redigo/redis"
)
c, err := redis.Dial("tcp", "192.168.2.225:6379")
if err != nil {
    fmt.Println("connect to redis err", err.Error())
    return
}
defer c.Close()

3:命令執行

n,err := c.Do("sadd","key","value")  //寫
result,err := redis.Values(c.Do("smembers","key"))//讀

4:set類型常見操作

sadd(key, member):向名稱爲key的set中添加元素member
srem(key, member) :刪除名稱爲key的set中的元素member
spop(key) :隨機返回並刪除名稱爲key的set中一個元素
smove(srckey, dstkey, member) :移到集合元素
scard(key) :返回名稱爲key的set的基數
sismember(key, member) :member是否是名稱爲key的set的元素
sinter(key1, key2,…key N) :求交集
sinterstore(dstkey, (keys)) :求交集並將交集保存到dstkey的集合
sunion(key1, (keys)) :求並集
sunionstore(dstkey, (keys)) :求並集並將並集保存到dstkey的集合
sdiff(key1, (keys)) :求差集
sdiffstore(dstkey, (keys)) :求差集並將差集保存到dstkey的集合
smembers(key) :返回名稱爲key的set的所有元素
srandmember(key) :隨機返回名稱爲key的set的一個元素

5:示例

5.1:sadd/smembers示例

_, err = c.Do("sadd", "myset", "mobike", "foo", "ofo", "bluegogo")
if err != nil {
    fmt.Println("set add failed", err.Error())
}
value, err := redis.Values(c.Do("smembers", "myset"))
if err != nil {
    fmt.Println("set get members failed", err.Error())
} else {
    fmt.Printf("myset members :")
    for _, v := range value {
        fmt.Printf("%s ", v.([]byte))
    }
    fmt.Printf("\n")
}

5.2:srandmember示例

ret, err := c.Do("srandmember", "myset")
if err != nil {
    fmt.Println("srandmember get failed")
} else {
    fmt.Printf("srandmember get value is:%s\n", ret)
}

5.3:srem示例

_, err = c.Do("srem", "myset", "bluegogo")
if err != nil {
    fmt.Println("srem myset error", err.Error())
} else {
    value, err = redis.Values(c.Do("smembers", "myset"))
    if err != nil {
        fmt.Println("set get members failed", err.Error())
    } else {
        fmt.Printf("myset members :")
        for _, v := range value {
            fmt.Printf("%s ", v.([]byte))
        }
        fmt.Printf("\n")
    }
}

5.4:smove示例

_, err = c.Do("smove", "myset", "dbset", "mobike")
if err != nil {
    fmt.Println("smove failed", err.Error())
} else {
    value, err = redis.Values(c.Do("smembers", "dbset"))
    if err != nil {
        fmt.Println("get new dbset members failed", err.Error())
    } else {
        fmt.Printf("get new dbset members :")
        for _, v := range value {
            fmt.Printf("%s ", v.([]byte))
        }
        fmt.Printf("\n")
    }
}

5.5:scard示例

num, err := c.Do("scard", "myset")
if err != nil {
    fmt.Println("scard error", err.Error())
} else {
    fmt.Println("scard get num :", num)
}

5.6:sismember

isMember, err := c.Do("sismember", "myset", "foo")
if err != nil {
    fmt.Println("sismember get failed", err.Error())
} else {
    fmt.Println("foo is or not myset's member", isMember)
}

5.7:sinter示例

_, err = c.Do("sadd", "dbset", "foo", "ofo", "xiaolan")
if err != nil {
    fmt.Println("set add failed", err.Error())
}
inner, err := redis.Values(c.Do("sinter", "myset", "dbset"))
if err != nil {
    fmt.Println("sinter error", err.Error())
} else {
    fmt.Printf("two set inter is:")
    for _, v := range inner {
        fmt.Printf(" %s ", v.([]byte))
    }
    fmt.Printf("\n")
}

5.8:sinterstore

_, err = c.Do("sinterstore", "newset", "dbset", "myset")
if err != nil {
    fmt.Println("sinterstore between myset and dbset error", err.Error())
} else {
    value, err := redis.Values(c.Do("smembers", "newset"))
    if err != nil {
        fmt.Println("set get members failed", err.Error())
    } else {
        fmt.Printf("newset members :")
        for _, v := range value {
            fmt.Printf("%s ", v.([]byte))
        }
        fmt.Printf("\n")
    }
}

5.9:sunion

unino, err := redis.Values(c.Do("sunion", "myset", "dbset"))
if err != nil {
    fmt.Println("sunion err", err.Error())
} else {
    fmt.Printf("two set union is:")
    for _, v := range unino {
        fmt.Printf(" %s ", v.([]byte))
    }
    fmt.Printf("\n")
}

5.10:sunionstore

_, err = c.Do("sunionstore", "unewset", "myset", "dbset")
if err != nil {
    fmt.Println("sunionstore failed", err.Error())
} else {
    value, err := redis.Values(c.Do("smembers", "unewset"))
    if err != nil {
        fmt.Println("set get members failed", err.Error())
    } else {
        fmt.Printf("unewset members :")
        for _, v := range value {
            fmt.Printf("%s ", v.([]byte))
        }
        fmt.Printf("\n")
    }
}

5.11:sdiff

diff, err := redis.Values(c.Do("sdiff", "dbset", "myset"))
if err != nil {
    fmt.Println("sdiff err", err.Error())
} else {
    fmt.Printf("two set diff is:")
    for _, v := range diff {
        fmt.Printf(" %s ", v.([]byte))
    }
    fmt.Printf("\n")
}

5.12:sdiffstore

_, err = c.Do("sdiffstore", "dnewset", "dbset", "myset")
if err != nil {
    fmt.Println("sdiffstore failed", err.Error())
} else {
    value, err := redis.Values(c.Do("smembers", "dnewset"))
    if err != nil {
        fmt.Println("set get members failed", err.Error())
    } else {
        fmt.Printf("dnewset members :")
        for _, v := range value {
            fmt.Printf("%s ", v.([]byte))
        }
        fmt.Printf("\n")
    }
}

5.13:spop

res, err := c.Do("spop", "myset")
if err != nil {
    fmt.Println("spop failed", err.Error())
} else {
    fmt.Printf("spop element is:%s\n", res)
}
value, err = redis.Values(c.Do("smembers", "myset"))
if err != nil {
    fmt.Println("after spop  get members failed", err.Error())
} else {
    fmt.Printf("after spop myset members :")
    for _, v := range value {
        fmt.Printf("%s ", v.([]byte))
    }
    fmt.Printf("\n")
}
發佈了533 篇原創文章 · 獲贊 108 · 訪問量 47萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章