• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

go随聊-redis 操作Set

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

go-redis/redis

地址:https://github.com/go-redis/redis

Supports:

  • Redis 3 commands except QUIT, MONITOR, SLOWLOG and SYNC.
  • Automatic connection pooling with circuit breaker support.
  • Pub/Sub.
  • Transactions.
  • Pipeline and TxPipeline.
  • Scripting.
  • Timeouts.
  • Redis Sentinel.
  • Redis Cluster.
  • Cluster of Redis Servers without using cluster mode and Redis Sentinel.
  • Ring.
  • Instrumentation.
  • Cache friendly.
  • Rate limiting.
  • Distributed Locks.

安装

go get -u github.com/go-redis/redis

创建客户端

import "github.com/go-redis/redis"

func RedisInit(addr string) (*redis.Client,error) {
	redisdb := redis.NewClient(&redis.Options{
		Addr:     	addr,
		Password: 	"",
		DB:       	0,
		PoolSize:	10,
	})
	_,err := redisdb.Ping().Result()
	if err!=nil {
		return nil,err
	}else{
		return redisdb,nil
	}
}
redisdb,err:=RedisInit("192.168.10.25:6379")

RedisInit函数正确返回*redis.Client(redisdb),后续所有操作都使用这个redisdb

Set操作

sadd(key, member)

将一个或多个 member 元素加入到集合 key 当中,已经存在于集合的 member 元素将被忽略。

假如 key 不存在,则创建一个只包含 member 元素作成员的集合。

当 key 不是集合类型时,返回一个错误。

func SetTest(redisdb *redis.Client) {
	ret,err:=redisdb.SAdd("k1","a","b","c","d").Result()
	if err!=nil {
		fmt.Println(err)
		return
	}
	fmt.Println(ret)
}
-------------------------------------------------------------
4    //返回插入成功的数目

srem(key, member)

移除集合 key 中的一个或多个 member 元素,不存在的 member 元素会被忽略。

当 key 不是集合类型,返回一个错误。

func SetTest(redisdb *redis.Client) {
	ret,err:=redisdb.SRem("k1","c","d").Result()
	if err!=nil {
		fmt.Println(err)
		return
	}
	fmt.Println(ret)
}

spop(key) :随机返回并删除名称为key的set中一个元素。

func SetTest(redisdb *redis.Client) {
	ret,err:=redisdb.SPop("k1").Result()
	if err!=nil {
		fmt.Println(err)
		return
	}
	fmt.Println(ret)
}

smove(srckey, dstkey, member)

将 member 元素从 source 集合移动到 destination 集合。

SMOVE 是原子性操作。

如果 source 集合不存在或不包含指定的 member 元素,则 SMOVE 命令不执行任何操作,仅返回 0 。否则, member 元素从 source 集合中被移除,并添加到 destination 集合中去。

当 destination 集合已经包含 member 元素时, SMOVE 命令只是简单地将 source 集合中的 member 元素删除。

当 source 或 destination 不是集合类型时,返回一个错误。

func SetTest(redisdb *redis.Client) {
	ret,err:=redisdb.SMove("k1","k2","1").Result()
	if err!=nil {
		fmt.Println(err)
		return
	}
	fmt.Println(ret)
}
------------------------------------------------------
k1原来是1,2,3
k2原来是4,5,6
执行后:
k1是2,3
k2是1,4,5,6

scard(key) :返回集合 key 的基数(集合中元素的数量)。

func SetTest(redisdb *redis.Client) {
	ret,err:=redisdb.SCard("k1").Result()
	if err!=nil {
		fmt.Println(err)
		return
	}
	fmt.Println(ret)
}

sismember(key, member) :member是否是名称为key的set的元素。

func SetTest(redisdb *redis.Client) {
	ret,err:=redisdb.SIsMember("k1",2).Result()
	if err!=nil {
		fmt.Println(err)
		return
	}
	fmt.Println(ret)
}
-----------------------------------------------------
true
判断2是不是k1的元素,返回true

sinter(key1, key2,…key N) :求交集。

func SetTest(redisdb *redis.Client) {
	ret,err:=redisdb.SInter("k1","k2").Result()
	if err!=nil {
		fmt.Println(err)
		return
	}
	fmt.Println(ret)
}
----------------------------------------------------
k1是1,2,3,6
k2是1,4,5,6
执行结果为:
1,6

sunion(key1, (keys)) :求并集。

func SetTest(redisdb *redis.Client) {
	ret,err:=redisdb.SUnion("k1","k2").Result()
	if err!=nil {
		fmt.Println(err)
		return
	}
	fmt.Println(ret)
}
----------------------------------------------------
k1是1,2,3,6
k2是1,4,5,6
执行结果为:
1,2,3,4,5,6

sdiff(key1, (keys)) :求差集。

func SetTest(redisdb *redis.Client) {
	ret,err:=redisdb.SDiff("k1","k2").Result()
	if err!=nil {
		fmt.Println(err)
		return
	}
	fmt.Println(ret)
}
----------------------------------------------------
k1是1,2,3,6
k2是1,4,5,6
执行结果为:
2,3

smembers(key) :返回名称为key的set的所有元素。

func SetTest(redisdb *redis.Client) {
	ret,err:=redisdb.SMembers("k1").Result()
	if err!=nil {
		fmt.Println(err)
		return
	}
	fmt.Println(ret)
}

srandmember(key) :随机返回名称为key的set的一个元素。

func SetTest(redisdb *redis.Client) {
	ret,err:=redisdb.SRandMember("k1").Result()
	if err!=nil {
		fmt.Println(err)
		return
	}
	fmt.Println(ret)
}

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
go局部变量的存储空间是堆还是栈?发布时间:2022-07-10
下一篇:
是谁在Go标准库的源码中植入了色情网站?发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap