开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第9天,点击查看活动详情
redis set是无序集合,集合中每个元素都是唯一的,它是通过哈希表实现的,相当于java当中的Map;下面来介绍一下redis set中常用的命令:
SADD命令
sadd key value1 value2 ......
示例:
redis> sadd my_set v1 v2 v3
3
sadd命令表示将多个元素放进my_set集合当中;
SCARD命令
scard key
示例:
redis> scard my_set
3
scard命令用来统计当前集合中元素的总数;
SPOP命令
spop key
示例:
redis> spop my_set
v3
spop命令将移除并随机返回集合中的一个元素;
SREM命令
srem key value1 value2 ......
示例:
redis> srem my_set v1 v2
2
redis> scard my_set
0
srem命令从集合中移除指定元素;
SMEMBERS命令
smembers key
示例:
redis> sadd myset v1 v2 v3 v4
4
redis> smembers myset
0 v3
1 v2
2 v4
3 v1
smembers命令将返回集合中的所有元素;
SRANDMEMBER命令
srandmember key [count]
示例:
redis> srandmember myset 2
0 v3
1 v1
srandmember命令将随机返回指定数量的元素;
SDIFF命令
sdiff key1 key2
示例:
redis> sadd my_set hello world v2
3
redis> sadd your_set hello v2 v3
3
redis> sdiff my_set your_set
0 world
sdiff命令将返回第一个集合与其他集合的差异;
SDIFFSTORE命令
sdiffstore destination key1 key2
示例:
redis> sdiffstore target_set my_set your_set
1
redis> smembers target_set
0 world
根据上述示例,sdiffstore命令会将my_set与your_set对比后的结果存储在target_set集合当中;
SINTER命令
sinter key1 key2
示例:
redis> sadd my_set hello world v2
3
redis> sadd your_set hello v2 v3
3
redis> sinter my_set your_set
0 v2
1 hello
sinter命令将返回两个集合的交集;
SINTERSTORE命令
sinterstore destination key1 key2
示例:
redis> sinterstore target_set my_set your_set
2
redis> smembers target_set
0 v2
1 hello
与SDIFFSTORE命令类似,SINTERSTORE命令也需要一个结果集合target_set来承接两个集合my_set与your_set的交集;
SUNION命令
sunion key1 key2
示例:
redis> sadd my_set hello world v2
3
redis> sadd your_set hello v2 v3
3
redis> sunion my_set your_set
0 hello
1 v2
2 world
3 v3
sunion命令将返回两个集合的并集;
SUNIONSTORE命令
sunionstore destination key1 key2
示例:
redis> sunionstore target_set my_set your_set
4
redis> smembers target_set
0 hello
1 v2
2 world
3 v3
sunionstore命令会将my_set与your_set集合的并集存储到target_set中;
SISMEMBER命令
sismember key value
示例:
redis> sismember my_set v6
0
redis> sismember my_set v2
1
sismember命令是用来判断value是否在集合key当中,上述示例中,集合my_set中包含v2不包含v6,所以第一条命令结果返回0,第二条命令结果返回1;
SMOVE命令
smove source destination value
示例:
redis> smove my_set your_set "world"
1
redis> smembers my_set
0 v2
1 hello
redis> smembers your_set
0 world
1 v3
2 v2
3 hello
smove命令将my_set集合中的world元素移除,并插入到your_set集合中;