一、网站投票统计程序
- sadd把用户添加到某个投票项的投票用户集合里去,
- sismember可以检查用户是否已经对任何一个投票项发起过投票,
- scard可以统计每个投票箱的投票人数,
- smembers可以拿到每个投票项的投票人
二、微博社交关系
-
关注目标用户,sadd把你加入到人家的关注用户集合里去,
-
sadd把别人加入到你正关注的用户集合里去,
- 取消关注,srem取消两个用户集合的关注,
- smembers获取你关注的所有人和你被哪些人关注了,
- scard获取你关注的人数和关注你的人数
三、微博的共同关注与推荐关注
- sinter set1 set2,
取交集
,就是共同关注好友;
-
推荐好友关注的人(我关注的人关注的其他人),sdiff获取差集,然后用差集再和你的好友集合sdiff一下,再取差集,就可以得到你没关注的但是你好友关注的人,此时就可以推荐一下;
-
sunion,如果+store还可以存储,取并集
四、抽奖程序
- srandommember,随机从set里返回几个元素,
-
spop,随机从set里弹出几个元素,
-
sadd可以加入待抽奖的人,
-
smembers返回所有待抽奖人,
-
scard返回参与抽奖的人数,
-
srandmember返回随机抽中奖的人
五、商品搜索构建反向索引
- 为商品添加索引,sadd,给商品添加一个关键词索引集合,sadd把商品添加到每个关键词的商品集合里去,
-
删除商品是一个反向的过程,走srem,
-
获取一个商品所有的关键词,smembers,
-
根据某几个关键词去搜索商品,对每个关键词都smembers一下拿到商品集合,然后走一个sintern对多个集合进行交集
对每个搜索词包含集合进行取交集
六、音乐网站的排行榜程序
sorted set,不能有重复的数据,加入进去的每个数据都可以带一个分数,他里面的数据都会按照分数进行排序,有序的set,他自动按照分数来排序,相当于你可以定制他里面的排序规则了
- zadd,把音乐加入排行榜中,刚开始分数可能就是0;
-
zscore可以获取音乐的分数;
-
zrem可以删除某个音乐;
-
zincrby可以给某个音乐增加分数,这个增加分数可能就是说有人下载了,或者是有人播放了,或者有人分享了, 有人点赞了,此时可以按照规则去加分,那么排序就会移动了;当然也可以减去分数;
- zrevrank获取音乐在排行榜里的排名;
- zrevrange set 0 100 withscores,可以获取排名前100的热门歌曲
七、新闻推荐机制
我们可以把一个sorted set里的数据倒序排序,选择其中我们指定的分数区间范围内的数据,对这块数据还可以进行分页查询,我们可以维护一个新闻数据集合,里面的分数都是新闻的时间戳
- zadd,把当日最新的新闻加入到一个集合里,
-
zrem是删除某个新闻,
-
zcard是统计当日最新新闻,
-
zrevrangebyscore max_time min_time start_index count withscores,是说按照他的时间分数进行倒序排序,然后获-取指定的分页,
- zcount 可以获取指定分数范围的数量