Redis中set集合(无序)操作命令
set集合(无序)
set
是一个无序的不重复元素的集合
增
sadd
往集合内部添加元素
127.0.0.1:6379> sadd set1 a b c d
(integer) 4
127.0.0.1:6379> smembers set1
1) "d"
2) "a"
3) "b"
4) "c"
127.0.0.1:6379>
如果指定的
key
不存在会创建
删
srem
移除元素
127.0.0.1:6379> srem set1 c
(integer) 1
127.0.0.1:6379> smembers set1
1) "d"
2) "a"
3) "b"
127.0.0.1:6379>
如果要移除的元素不存在,则返回
0
可以同时移出多个
spop
随机弹出一个元素
127.0.0.1:6379> spop set1
"d"
127.0.0.1:6379> smembers set1
1) "a"
2) "b"
127.0.0.1:6379>
改
因为set
是无序的,如果要修改某个元素的值,直接将它删除在添加一个新的即可,修改真正的意义是替换,可是
在set
没有位置的概念(无序),替换就成了毫无意义的事情
查
scard
scard key
返回set
中的元素的个数
如果查询一个不存在的
key
,返回0
smembers
smembers key
返回集合中所有的元素
sismember
sismember key value
查询value
是否存在于key
,存在返回1,否则返回0
srandmember
srandmember key [count]
随机返回count
个集合中元素,注意count
不能大于集合内部元素数
127.0.0.1:6379> srandmember set2
"3"
127.0.0.1:6379> srandmember set2 3
1) "96"
2) "2"
3) "5"
交集
sinter
sinter key1 key2 ....
返回key1
和key2
或更多key
中的交集(相同元素)
127.0.0.1:6379> sadd set1 1 2 3 45 6
(integer) 5
127.0.0.1:6379> sadd set2 8 5 2 96 3
(integer) 5
127.0.0.1:6379> sinter set1 set2
1) "2"
2) "3"
sinterstore
sinterstore newkey key1 key2 ...
将key1
和key2
或更多key
的交集合并到新的集合newkey
中
127.0.0.1:6379> sinterstore set3 set1 set2
(integer) 2
127.0.0.1:6379> smembers set3
1) "2"
2) "3"
并集
sunion
sunion key1 key2 ...
将所有的key
的元素合并返回,重复的值将只保留一个
127.0.0.1:6379> sunion set1 set2
1) "45"
2) "a"
3) "b"
4) "2"
5) "5"
6) "1"
7) "3"
8) "96"
9) "8"
10) "6"
sunionstore
sunionstore newkey key1 key2....
和sinterstore
类型,将并集移到newkey
中
差集
sdiff
sdiff key1 key2 ...
返回所有key
的差集
sdiffstore
sdiffstore newkey key1 key2 ...
将所有key
的差集移入newkey
移动
smove
smove key1 key2 value
将value
从key1
中移动到key2