Set是集合,它是String类型的无序集合,set是通过hashtable 实现的,添加,删除,查找的复杂度都是0或1,对集合我们可以取交集,并集,差集,通过这些操作,我们可以实现sns中的好友推荐和blog的tag功能。



 sadd myset 'world' 添加一个元素到myset中

 sadd myset 'hello' 

 sadd myset 'hello' 返回0,因为该值添加过


 smembers myset 返回集合所有值

 srem myset 'hello' 删除值为hello的值


 spop myset 随机返回并删除一个名为myset的set集合中的一个值



 sdiff myset myset2 两元素的差集,以前面那个做参照物

 比如myset 里有 111 222 333 ,myset2 里面有 222,444 . 那么差集就是111 333 反之则是444



 sdiff myset3 myset myset2 把集合myset和Myset2 的差集保存到myset3中


 sinter myset myset2  myset 和myset2的交集


 sinterstore myset3 myset myset2 把集合myset和Myset2 的交集保存到myset3中


 sunion myset myset2 myset3 取并集


 sunionstore myset7 myset2 myset3 取myset2,myset3并集并存入Myset7中


 smove myset myset2 '5555' 将myset中的5555移动到myset2中,如果myset2中有5555,也会移动成功,只是myset2中只会存在一个5555


 sismember myset '111' 查看111是否是myset集合的元素


 srandmember myset 随机返回一个元素



集合中不能有相同的值


 sorted sets 有序集合数据类型


 sorted sets 是set的一个升级版本,它在set的基础上增加了一个顺序属性,这一属性在添加修改元素的时候可以指定,每次指定后,zset会自动按新的值调整顺序。可以理解为有两列的mysql表,一列存储value,一列存顺序,操作中Key理解为zset的名字



 zadd zset1 1 'one'

  zadd zset1 2 'two'

 zadd zset1 9 'nine'

zadd zset1 5 'five'


zrange zset1 0 -1 withscores 输出结果为 one two five nine 注意,顺序值必须为数字,小数也可以,正负数都可以,withscores 表示带序号输出


如果zadd zset1 2 '2222' 会新增,如果zadd zset1 2 'one',则不是添加成功。


zrem zset1 two 删除


zincrby zset1 2 'one' 对顺序号进行增加,每次增加2,如果one不存在,则新增,负数也是一样



zrank zset1 'one' 返回元素的索引值,注意,不是顺序值,由小到大

zrerank zset1 'one' 返回元素的索引,翻转过来计算索引


zrevrange zset1 0 -1 withscores 倒序排列(顺序)


zrangebyscore zset1 2 5 withscores 顺序号为2到5的返回  返回score在给定区间的元素


zcount zset1 2 5 返回score在给定区间元素的个数


zcard zset1 返回集合的元素总个数


zremrangebyrank 删除集合中排名在指定区间的元素

zremrangebyrank zset1 1 2 按索引(注意)删除元素

zremrangebyscore zset1 1 1 按顺序值删除元素