Redis无序集合数据类型操作命令

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介:

Set是集合,它是string类型的无序集合。set是通过hash table实现的,添加删除和查找的负责度都是0(1)。对集合我们可以取并集,交集、差集。通过这些操作我们可以实现QQ和微博中的好友推荐和blog的tag功能。


sadd:向名称为key的set中添加元素

1
2
3
4
5
6
127.0.0.1:6379> sadd myset1 one
(integer) 1
127.0.0.1:6379> sadd myset1 two
(integer) 1
127.0.0.1:6379> sadd myset1 two
(integer) 0


smembers: 查看集合中的所有元素

1
2
3
127.0.0.1:6379> smembers myset1
1)  "two"
2)  "one"


srem:删除集合中的元素

1
2
3
4
5
6
7
8
127.0.0.1:6379> sadd myset2  "one"
(integer) 1
127.0.0.1:6379> sadd myset2  "two"
(integer) 1
127.0.0.1:6379> srem myset2  "one"
(integer) 1
127.0.0.1:6379> smembers myset2
1)  "two"


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

1
2
3
4
5
6
7
8
9
127.0.0.1:6379> smembers myset2
1)  "two"
2)  "three"
3)  "one"
127.0.0.1:6379> spop myset2
"two"
127.0.0.1:6379> smembers myset2
1)  "three"
2)  "one"


sdiff:返回所有给定key与第一个key的差集

1
2
3
4
5
6
7
8
9
10
11
12
13
127.0.0.1:6379> smembers myset3
1)  "two"
2)  "four"
3)  "three"
4)  "one"
127.0.0.1:6379> smembers myset2
1)  "three"
2)  "one"
127.0.0.1:6379>  sdiff  myset3 myset2
1)  "two"
2)  "four"
127.0.0.1:6379>  sdiff  myset2 myset3
(empty list or  set )

注意sdiff myset2 myset3 与 sdiff myset3 myset2的区别


sdiffstore:返回所有给定key与第一个key的差集,并将结果存为另一个key

1
2
3
4
5
6
7
8
127.0.0.1:6379>  sdiff  myset3 myset2
1)  "two"
2)  "four"
127.0.0.1:6379> sdiffstore myset4 myset3 myset2
(integer) 2
127.0.0.1:6379> smembers myset4
1)  "two"
2)  "four"


sinter:返回所有给定key的交集

1
2
3
4
5
6
7
8
9
10
11
127.0.0.1:6379> smembers myset2
1)  "three"
2)  "one"
127.0.0.1:6379> smembers myset3
1)  "two"
2)  "four"
3)  "three"
4)  "one"
127.0.0.1:6379> sinter myset2 myset3
1)  "three"
2)  "one"


sinterstore:返回所有给定key的交集,并将结果存为另一个key

1
2
3
4
5
6
7
8
9
10
11
12
13
127.0.0.1:6379> smembers myset3
1)  "two"
2)  "four"
3)  "three"
4)  "one"
127.0.0.1:6379> sinter myset2 myset3
1)  "three"
2)  "one"
127.0.0.1:6379> sinterstore myset5 myset2 myset3
(integer) 2
127.0.0.1:6379> smembers myset5
1)  "three"
2)  "one"


sunion:返回所有给定key的并集

1
2
3
4
5
6
7
8
9
10
11
12
13
127.0.0.1:6379> smembers myset2
1)  "three"
2)  "one"
127.0.0.1:6379> smembers myset3
1)  "two"
2)  "four"
3)  "three"
4)  "one"
127.0.0.1:6379> sunion myset2 myset3
1)  "four"
2)  "three"
3)  "one"
4)  "two"


suionstore:返回所有给定key的并集,并将结果存为另一个key

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
127.0.0.1:6379> smembers myset2
1)  "three"
2)  "one"
127.0.0.1:6379> smembers myset3
1)  "two"
2)  "four"
3)  "three"
4)  "one"
127.0.0.1:6379> sunionstore myset6 myset2 myset3
(integer) 4
127.0.0.1:6379> smembers myset6 
1)  "four"
2)  "three"
3)  "one"
4)  "two"


smove:从第一个key对应的set中移除member并添加到第二个对应的set中

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
127.0.0.1:6379> smembers myset3
1)  "two"
2)  "four"
3)  "three"
4)  "one"
127.0.0.1:6379> smembers myset2
1)  "three"
2)  "one"
127.0.0.1:6379> smove myset3 myset2 two
(integer) 1
127.0.0.1:6379> smembers myset2
1)  "two"
2)  "three"
3)  "one"
127.0.0.1:6379> smembers myset3
1)  "four"
2)  "three"
3)  "one"


scard:返回名称为key的集合的元素个数

1
2
3
4
5
6
127.0.0.1:6379> smembers myset3
1)  "four"
2)  "three"
3)  "one"
127.0.0.1:6379> scard myset3
(integer) 3


sismember:测试member是否是名称为key的set的元素,如果是则返回1,否则返回0

1
2
3
4
5
6
7
8
127.0.0.1:6379> smembers myset3
1)  "four"
2)  "three"
3)  "one"
127.0.0.1:6379> sismember myset3 one
(integer) 1
127.0.0.1:6379> sismember myset3 two
(integer) 0


srandmember:随机返回名称为key的set的一个元素,但不删除元素

1
srandmember key [count]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
127.0.0.1:6379> smembers myset3
1)  "four"
2)  "three"
3)  "one"
127.0.0.1:6379> srandmember myset3 
"one"
127.0.0.1:6379> srandmember myset3 
"four"
127.0.0.1:6379> srandmember myset3 
"three"
127.0.0.1:6379> srandmember myset3 
"one"
127.0.0.1:6379> srandmember myset3 
"three"

还可以传递count参数来一次随机获得多个元素。根据count值不同,意义也不相同

1、count为正数时,会随机从集合中获得count个不重复元素,如果count值大于集合元素的个数,则返回集合中所有元素

2、count为负数时,srandmember会随机从集合中返回|count|个元素,这些元素可能会重复

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
127.0.0.1:6379> smembers myset3 
1)  "four"
2)  "three"
3)  "one"
127.0.0.1:6379> srandmember myset3 5
1)  "three"
2)  "four"
3)  "one"
127.0.0.1:6379> srandmember myset3 2
1)  "four"
2)  "one"
127.0.0.1:6379> srandmember myset3 -2
1)  "four"
2)  "one"
127.0.0.1:6379> srandmember myset3 -2
1)  "one"
2)  "four"
127.0.0.1:6379> srandmember myset3 -2
1)  "one"
2)  "one"










本文转自 曾哥最爱 51CTO博客,原文链接:http://blog.51cto.com/zengestudy/1859705,如需转载请自行联系原作者

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
9天前
|
NoSQL Redis 数据库
Redis的全局命令及相关误区
Redis的全局命令及相关误区
21 0
|
16天前
|
存储 消息中间件 NoSQL
Redis数据类型详解:选择合适的数据结构优化你的应用
Redis数据类型详解:选择合适的数据结构优化你的应用
|
18天前
|
NoSQL Redis 数据库
Redis中的常用命令有哪些?
Redis常用命令包括:PING测试连接,ECHO回显,SELECT切换数据库,QUIT关闭连接;KEYS查找key,EXISTS检查存在,DEL删除key,EXPIRE设置过期时间,TTL查看剩余生存时间,TYPE检测数据类型;STRING操作如SET/GET/MSET/MGET,INCR/DECR增减计数;HASH命令如HSET/HGET/HMSET/HMGET/HGETALL管理字段;LIST操作如LPUSH/RPUSH/LPOP/RPOP/LRANGE;
9 0
|
23天前
|
NoSQL Redis
Redis集群(六):集群常用命令及说明
Redis集群(六):集群常用命令及说明
16 0
|
1月前
|
缓存 NoSQL Java
【Redis】5、Redis 的分布式锁、Lua 脚本保证 Redis 命令的原子性
【Redis】5、Redis 的分布式锁、Lua 脚本保证 Redis 命令的原子性
57 0
|
12天前
|
NoSQL Redis 数据库
通过migrate命令实现两个redis实例之间的数据迁移
通过migrate命令实现两个redis实例之间的数据迁移
|
18天前
|
存储 XML NoSQL
Redis支持哪些数据类型?
Redis提供五种数据类型:String(支持JSON、XML等序列化,最大512MB),Hash(键值对,适合存储对象),List(有序列表,可在两端添加元素),Set(无序唯一元素集合),以及Sorted Set(有序集合,元素带分数排序)。每种类型有特定应用场景,优化了数据操作效率。
8 0
|
1月前
|
NoSQL Redis 索引
[Redis]——Redis命令手册set、list、sortedset
[Redis]——Redis命令手册set、list、sortedset
|
1月前
|
存储 消息中间件 NoSQL
Redis 常见数据类型(对象类型)和应用案列
接下来,让我们走进 Redis 的对象世界,Redis 5.0版本就已经支持了下面的 9 种类型,分别是 :字符串对象、列表对象、哈希对象、集合对象、有序集合对象、Bitmaps 对象、HyperLogLog 对象、Geospatial 对象、Stream对象。
Redis 常见数据类型(对象类型)和应用案列
|
1月前
|
存储 NoSQL Redis
Redis新数据类型-Bitmaps
Redis新数据类型-Bitmaps

热门文章

最新文章