数据库运维
记录DBA学习成长历程

Redis SET 集合类型(join union)应用场景

应用场景:
案例:在微博应用中,可以将一个用户所有的关注人存在一个集合中,将其所有粉丝存在一个集合。
Redis还为集合提供了求交集、并集、差集等操作,可以非常方便的实现如共同关注、共同喜好、二度好友等功能,
对上面的所有集合操作,你还可以使用不同的命令选择将结果返回给客户端还是存集到一个新的集合中。
127.0.0.1:6379> sadd lxl pg1 jnl baoqiang gsy alexsb
(integer) 5
127.0.0.1:6379> sadd jnl baoqiang ms bbh yf wxg
(integer) 5

取并集

127.0.0.1:6379> SUNION lx jnl
1) "baoqiang"
2) "yf"
3) "bbh"
4) "ms"
5) "wxg"

取合集

127.0.0.1:6379> SINTER lxl jnl
1) "baoqiang"

lxl 取jnl有lxl没有的

127.0.0.1:6379> SDIFF jnl 
1) "wxg"
2) "yf"
3) "bbh"
4) "ms"

取lxl有jnl没有的

127.0.0.1:6379> SDIFF lxl jnl 
1) "jnl"
2) "pg1"
3) "gsy"
4) "alexsb"

sadd myset a b c 
若key不存在,创建该键及与其关联的set,依次插入a ,b,若key存在,则插入value中,
若a 在myset中已经存在,则插入了 d 和 e 两个新成员。

spop myset 尾部的b被移出,事实上b并不是之前插入的第一个或最后一个成员
srem myset a d f 若f不存在, 移出 a、d ,并返回2

smove myset myset2 a 将a从 myset 移到 myset2

sismember myset a 判断 a 是否已经存在,返回值为 1 表示存在。
smembers myset 查看set中的内容
scard myset 获取Set 集合中元素的数量
srandmember myset 随机的返回某一成员
sdiff myset1 myset2 myset3 1和2得到一个结果,拿这个集合和3比较,获得每个独有的值
sdiffstore diffkey myset myset2 myset3 3个集和比较,获取独有的元素,并存入diffkey 关联的Set中
sinter myset myset2 myset3 获得3个集合中都有的元素
sinterstore interkey myset myset2 myset3 把交集存入interkey 关联的Set中
sunion myset myset2 myset3 获取3个集合中的成员的并集
sunionstore unionkey myset myset2 myset3 把并集存入unionkey 关联的Set中
赞(0)
MySQL学习笔记 » Redis SET 集合类型(join union)应用场景