golang-redis之set类型简单操作
2017-11-25 20:39
357 查看
1:安装redigo
2:连接redis
3:命令执行
4:set类型常见操作
5:示例
5.1:sadd/smembers示例
5.2:srandmember示例
5.3:srem示例
5.4:smove示例
5.5:scard示例
5.6:sismember
5.7:sinter示例
5.8:sinterstore
5.9:sunion
5.10:sunionstore
5.11:sdiff
5.12:sdiffstore
5.13:spop
6:运行结果
完整代码路径
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") }
6:运行结果
完整代码路径
相关文章推荐
- golang-redis之sorted set类型简单操作
- golang-redis之string类型简单操作
- golang-redis之hash类型简单操作
- golang-redis之list类型简单操作
- Redis (REmote DIctionary Server):初步学习(3)-- 前台与后台打开Redis/简单操作(set/get)
- redis学习篇(五)-----set类型和sorted set类型及相关操作
- redis----set 类型数据操作指令简介
- redis-list类型简单操作
- 跟我学Redis(8)—sorted set类型及操作
- NoSQL之Redis对set(集合)数据类型的操作之一
- 【Redis缓存机制】6.Set集合类型操作使用
- Jedis对Redis五大类型操作简单介绍
- redis 哈希数据类型简单操作(实现购物车案例)
- Redis----sorted set数据类型操作
- redis对set类型的操作
- Redis数据类型操作(四) —— Set
- redis: sorted set数据类型与操作
- 5.Redis学习-set数据类型操作
- Redis---set数据类型操作
- redis-zset类型简单操作