golang-redis之set类型简单操作

来源:互联网 发布:淘宝洗照片为什么便宜 编辑:程序博客网 时间:2024/05/29 08:35

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):向名称为keyset中添加元素membersrem(key, member) :删除名称为keyset中的元素memberspop(key) :随机返回并删除名称为keyset中一个元素smove(srckey, dstkey, member) :移到集合元素scard(key) :返回名称为keyset的基数sismember(key, member) :member是否是名称为keyset的元素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) :返回名称为keyset的所有元素srandmember(key) :随机返回名称为keyset的一个元素

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")}

6:运行结果
这里写图片描述

完整代码路径

原创粉丝点击