Redis set类型
Redis set类型
redis set类型是一组无序的唯一的String集合。我们可以利用set来
跟踪独立条目()
展现关联关系(例如共同好友)
正常的集合操作
set常用命令
sadd 命令
sadd命令会将一个元素加入到set中,如set不存在则创建该set。
127.0.0.1:6379> help sadd SADD key member [member ...] summary: Add one or more members to a set since: 1.0.0 group: set 127.0.0.1:6379> exists cr:by:sadd (integer) 0 127.0.0.1:6379> sadd cr:by:sadd test0 (integer) 1 127.0.0.1:6379> exists cr:by:sadd (integer) 1 127.0.0.1:6379> smembers cr:by:sadd 1) "test0" 127.0.0.1:6379> sadd cr:by:sadd test1 test2 test3 (integer) 3 127.0.0.1:6379> smembers cr:by:sadd 1) "test2" 2) "test1" 3) "test3" 4) "test0"
smembers命令
smembers命令可以获取一个set中的所有元素。如果不存在会返回empty array。
127.0.0.1:6379> help smembers SMEMBERS key summary: Get all the members in a set since: 1.0.0 group: set 127.0.0.1:6379> smembers not:exists (empty array) 127.0.0.1:6379> smembers cr:by:sadd 1) "test2" 2) "test1" 3) "test3" 4) "test0"
srem命令
srem命令会删除set中指定的元素。如果该元素不存在则返回0,存在返回删除的元素个数。
127.0.0.1:6379> help srem SREM key member [member ...] summary: Remove one or more members from a set since: 1.0.0 group: set 127.0.0.1:6379> srem cr:by:sadd non:exists (integer) 0 127.0.0.1:6379> srem cr:by:sadd test0 (integer) 1 127.0.0.1:6379> smembers cr:by:sadd 1) "test2" 2) "test1" 3) "test3" 127.0.0.1:6379> srem cr:by:sadd test1 test2 test3 (integer) 3 127.0.0.1:6379> smembers cr:by:sadd (empty array)
spop命令
spop命令随机从set中删除几个元素,并返回删除的元素值。如果该set不存在,则返回nil
127.0.0.1:6379> help spop SPOP key [count] summary: Remove and return one or multiple random members from a set since: 1.0.0 group: set 127.0.0.1:6379> sadd cr:by:sadd test0 test1 test2 test3 test4 (integer) 5 127.0.0.1:6379> smembers cr:by:sadd 1) "test2" 2) "test1" 3) "test3" 4) "test0" 5) "test4" 127.0.0.1:6379> spop cr:by:sadd "test1" 127.0.0.1:6379> spop cr:by:sadd 2 1) "test3" 2) "test2" 127.0.0.1:6379> spop no:exists (nil)
sismember命令
sismember命令判断set 是否存在该元素。set中存在该元素则返回1,如果不存在该set或该set中没有该元素,则返回0。
127.0.0.1:6379> help sismember SISMEMBER key member summary: Determine if a given value is a member of a set since: 1.0.0 group: set 127.0.0.1:6379> smembers cr:by:sadd 1) "test0" 2) "test4" 127.0.0.1:6379> sismember cr:by:sadd test0 (integer) 1 127.0.0.1:6379> sismember cr:by:sadd test2 (integer) 0 127.0.0.1:6379> 127.0.0.1:6379> smembers no:exists (empty array) 127.0.0.1:6379> sismember no:exists nil (integer) 0
scard命令
scard命令获取一个set中元素个数。如果set不存在返回0。如果set存在,则返回set中元素个数。
127.0.0.1:6379> help scard SCARD key summary: Get the number of members in a set since: 1.0.0 group: set 127.0.0.1:6379> scard no:exists (integer) 0 127.0.0.1:6379> scard cr:by:sadd (integer) 2 127.0.0.1:6379> smembers cr:by:sadd 1) "test0" 2) "test4" 127.0.0.1:6379> smembers no:exists (empty array) 127.0.0.1:6379>
srandmember命令
srandmember随机返回set中的某个或某count个元素
127.0.0.1:6379> help srandmember SRANDMEMBER key [count] summary: Get one or multiple random members from a set since: 1.0.0 group: set 127.0.0.1:6379> smembers randset 1) "test3" 2) "test0" 3) "test5" 4) "test1" 5) "test2" 6) "test4" 127.0.0.1:6379> srandmember randset "test3" 127.0.0.1:6379> srandmember randset "test4" 127.0.0.1:6379> srandmember randset 2 1) "test0" 2) "test3" 127.0.0.1:6379> srandmember randset 2 1) "test0" 2) "test4" 127.0.0.1:6379>
smove命令
smove命令 将source set中的某个元素移动到dest set中。如果元素不存在与source set中,则返回0,没有做任何修改。
127.0.0.1:6379> help smove SMOVE source destination member summary: Move a member from one set to another since: 1.0.0 group: set 127.0.0.1:6379> smembers source 1) "mem2" 2) "mem1" 3) "mem0" 4) "mem3" 127.0.0.1:6379> smembers dest 1) "mem5" 2) "mem4" 3) "mem6" 127.0.0.1:6379> smove source dest mem0 (integer) 1 127.0.0.1:6379> smembers dest 1) "mem5" 2) "mem4" 3) "mem0" 4) "mem6" 127.0.0.1:6379> smembers source 1) "mem2" 2) "mem1" 3) "mem3" 127.0.0.1:6379> smove source dest non-ele (integer) 0 127.0.0.1:6379>
sdiff命令
获取当前set中在其他set不存在的元素,如果当前set为空,则返回empty array,如果当前set中元素在其他set中存在,也返回empty array。如果有不在其他set中存在的元素,则返回该元素。
127.0.0.1:6379> help sdiff SDIFF key [key ...] summary: Subtract multiple sets since: 1.0.0 group: set 127.0.0.1:6379> smembers set1 1) "mem4" 2) "mem2" 3) "mem1" 4) "mem3" 127.0.0.1:6379> smembers set2 1) "mem5" 2) "mem4" 3) "mem6" 4) "mem3" 127.0.0.1:6379> smembers set3 1) "mem8" 2) "mem2" 3) "mem1" 4) "mem7" 127.0.0.1:6379> sdiff set1 set2 1) "mem2" 2) "mem1" 127.0.0.1:6379> sdiff set1 set2 set3 (empty array) 127.0.0.1:6379> smembers set0 (empty array) 127.0.0.1:6379> sdiff set1 set0 1) "mem2" 2) "mem4" 3) "mem1" 4) "mem3" 127.0.0.1:6379> sdiff set0 set1 (empty array)
sdiffstore命令
sdiffstore命令先对几个集合进行sdiff操作,然后将结果存入到新的set中,如果set已经存在,会被覆盖掉。
127.0.0.1:6379> sadd diffset12 1 2 (integer) 2 127.0.0.1:6379> smembers diffset12 1) "1" 2) "2" 127.0.0.1:6379> sdiff set1 set2 1) "mem2" 2) "mem1" 127.0.0.1:6379> sdiffstore diffset12 set1 set2 (integer) 2 127.0.0.1:6379> smembers diffset12 1) "mem2" 2) "mem1" 127.0.0.1:6379>
sinter命令
sinter命令返回几个集合中同时存在的元素,如果没有返回empty array.
127.0.0.1:6379> smembers set1 1) "mem4" 2) "mem2" 3) "mem1" 4) "mem3" 127.0.0.1:6379> smembers set2 1) "mem5" 2) "mem4" 3) "mem6" 4) "mem3" 127.0.0.1:6379> smembers set3 1) "mem5" 2) "mem2" 3) "mem1" 4) "mem6" 127.0.0.1:6379> smembers set4 1) "mem5" 2) "mem1" 127.0.0.1:6379> sinter set1 set2 set4 (empty array) 127.0.0.1:6379> sinter set1 set2 set3 (empty array) 127.0.0.1:6379> sinter set1 set3 set4 1) "mem1" 127.0.0.1:6379> sinter set2 set3 set4 1) "mem5"
sinterstore命令
sinterstore命令先对几个集合进行inter join操作,然后将结果存入到新set中,如果set存在会被覆盖。
127.0.0.1:6379> help sinterstore SINTERSTORE destination key [key ...] summary: Intersect multiple sets and store the resulting set in a key since: 1.0.0 group: set 127.0.0.1:6379> sadd interset:1:2 1 2 (integer) 2 127.0.0.1:6379> smembers interset:1:2 1) "1" 2) "2" 127.0.0.1:6379> sinter set1 set2 1) "mem4" 2) "mem3" 127.0.0.1:6379> sinterstore interset:1:2 set1 set2 (integer) 2 127.0.0.1:6379> smembers interset:1:2 1) "mem4" 2) "mem3"
sunion命令
sunion命令返回多个集合中所有的去重的元素。
127.0.0.1:6379> help sunion SUNION key [key ...] summary: Add multiple sets since: 1.0.0 group: set 127.0.0.1:6379> smembers set1 1) "mem4" 2) "mem2" 3) "mem1" 4) "mem3" 127.0.0.1:6379> smembers set2 1) "mem5" 2) "mem4" 3) "mem6" 4) "mem3" 127.0.0.1:6379> smembers set3 1) "mem5" 2) "mem2" 3) "mem1" 4) "mem6" 127.0.0.1:6379> sunion set1 set2 set3 1) "mem3" 2) "mem4" 3) "mem2" 4) "mem5" 5) "mem1" 6) "mem6"
sunionset命令
sunionset命令会对几个集合进行union操作,然后将结果存放到新的set中,如果set存在,则覆盖。
127.0.0.1:6379> sadd unionset:1:2 1 2 (integer) 2 127.0.0.1:6379> smembers unionset (empty array) 127.0.0.1:6379> smembers unionset:1:2 1) "1" 2) "2" 127.0.0.1:6379> sunion set1 set2 1) "mem3" 2) "mem4" 3) "mem2" 4) "mem5" 5) "mem1" 6) "mem6" 127.0.0.1:6379> sunionstore unionset:1:2 set1 set2 (integer) 6 127.0.0.1:6379> smembers unionset:1:2 1) "mem3" 2) "mem4" 3) "mem2" 4) "mem5" 5) "mem1" 6) "mem6"