- Set集合
- 无序的、去重的
- 元素是字符串类型
- 最多包含2^32-1元素
- 增加一个或多个元素
- SADD key member [member...]
- 如果元素已经存在,则自动忽略
- 举例
- SADD friends peter
- SADD friends jack tom john
- SADD friends may tom
- 移除一个或者多个元素
- SREM key member [member...]
- 元素不存在,自动忽略
- 举例
- SREM friends peter
- SREM friends tom john
- 返回集合包含的所有元素
- SMEMBERS key
- 如果集合元素过多,例如百万个,需要遍历,可能会造成服务器阻塞,生产环境应避免使用
- 检查给定的元素是否存在于集合中
- SISMEMBER key member
-
集合的无序性
-
SADD friends "peter" "jack" "tom" "john" "may" "ben"
-
SADD anotherfriends "peter" "jack" "tom" "john" "may" "ben"
-
SMEMBERS friends
-
SMEMBERS anotherfriends
-
注: SMEMBERS 有可能返回不同的结果,所以,如果需要存储有序且不重复的数据使用有序集合,存储有序可重复的使用列表
-
- 随机返回集合中指定的个数举例
- SRANDMEMBER key [count]
-
如果 count 为正数,且小于集合基数,那么命令返回一个包含 count 个元素的数组,数组中的元素各不相同。如果 count 大于等于集合基数,那么返回整个集合
-
如果 count 为负数,那么命令返回一个数组,数组中的元素可能会重复出现多次,而数组的长度为 count 的绝对值
-
如果 count 为 0,返回空
-
如果 count 不指定,随机返回一个元素
-
举例
-
SADD friend "peter" "jack" "tom" "john" "may" "ben"
-
SRANDMEMBER friends 3
-
SRANDMEMBER friends -5
-
- 返回集合中元素的个数
- SCARD key
- 键的结果会保存信息,集合长度就记录在里面,所以不需要遍历
- 随机从集合中移除并返回这个被移除的元素
- SPOP key
- 把元素从源集合移动到目标集合
- SMOVE source destination member
Set集合操作
-
差集
-
SDIFF key [key ...],从第一个key的集合中去除其他集合和自己的交集部分
-
SDIFFSTORE destination key [key ...],将差集结果存储在目标key中
-
- 举例
- SADD number1 123 456 789
- SADD number2 123 456 999
- SDIFF number1 number2
- 交集
- SINTER key [key...],取所有集合交集部分
- SINTERSTORE destination key [key...],将集合结果存储在目标key中
- 举例
-
SADD number1 123 456 789
-
SADD number2 123 456 999
-
SINTER number1 number2
-
- 并集
- SUNION key [key...],取所有集合并集
- SUNIONSTORE destination key [key...],将并集结果存储在目标key中
- 举例
- SADD number1 123 456 789
- SADD number2 123 456 999
- SUNION number1 number2
- SortedSet有序集合
- 类似Set集合
- 有序的、去重的
- 元素是字符串类型
- 每一个元素都关联着一个浮点数分值(Score),并按照分值从小到大的顺序排列集合中的元素。分值可以相同
- 最多包含2^32-1元素
命令
- 增加一个或多个元素
- ZADD key score member [score member...]
- 如果元素已经存在,则使用新的score
- 举例
- ZADD fruits 3.2 香蕉
- ZADD fruits 2.0 西瓜
- ZADD fruits 4.0 番石榴 7.0 梨 6.8芒果
- 移除一个或者多个元素
- ZREM key member [member...]
- 元素不存在,自动忽略
- 举例
- ZREM fruits 番石榴 梨 芒果
- ZREM fruits 西瓜
- 显示分值
- ZSCORE key member
- 举例
- ZSCORE fruits 芒果
- ZSCORE fruits 西瓜
- 增加或者减少分值
- ZINCRBY key increment member
- increment为负数就是减少
- 举例
- ZINCRBY fruits 1.5 西瓜
- ZINCRBY fruits -0.8 香蕉
- 返回元素的排名(索引)
- ZRANK key member
- 举例
- ZRANK fruits 西瓜
- ZRANK fruits 番石榴
- ZRANK fruits 芒果
- 返回元素的逆序排名
- ZREVRANK key member
- 举例
- ZREVRANK fruits 西瓜
- ZREVRANK fruits 番石榴
- ZREVRANK fruits 芒果
- 返回指定索引区间元素
- ZRANGE key start stop [WITHSCORES]
- 如果score相同,则按照字典序lexicographical order 排列
- 默认按照score从小到大,如果需要score从大到小排列,使用ZREVRANGE
- 举例
- ZRANGE fruits 0 2
- ZRANGE fruits -5 -4
- ZRANGE fruits 0 2
- 返回指定分值区间元素
-
- ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]
- 返回score默认属于[min,max]之间,元素按照score升序排列,score相同字典序
- LIMIT中offset代表跳过多少个元素,count是返回几个。类似于Mysql
- 使用小括号,修改区间为开区间,例如(5、(10、5)
- -inf和+inf表示负无穷和正无穷
-
举例
-
ZRANGEBYSCORE fruits 4.0 7.0
-
ZRANGEBYSCORE fruits (4 7
-
ZRANGEBYSCORE fruits -inf +in
-
-
返回指定分值区间元素
-
ZREVRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]
-
返回score默认属于[min,max]之间,元素按照score降序排列,score相同字典降序
-
LIMIT中offset代表跳过多少个元素,count是返回几个。类似于Mysql
-
使用小括号,修改区间为开区间,例如(5、(10、5)
-
-inf和+inf表示负无穷和正无穷
-
- 举例
-
ZREVRANGEBYSCORE fruits 7.0 4.0
-
ZRANGEBYSCORE fruits 7 (4
-
ZRANGEBYSCORE fruits +inf -inf
-
-
移除指定排名范围的元素
- ZREMRANGEBYRANK key start stop
- 举例
- ZREMRANGEBYRANK fruits 0 2
- ZRANGE fruits 0 -1
-
移除指定分值范围的元素
-
ZREMRANGEBYSCORE key min max
-
- 举例
- ZREMRANGEBYSCORE fruits 3.0 5.0
- ZRANGE fruits 0 -1
- 返回集合中元素个数
- ZCARD key
-
返回指定范围中元素的个数
- ZCOUNT key min max
- ZCOUNT fruits 4 7
- ZCOUNT fruits (4 7
- 并集
- ZUNIONSTORE destination numkeys key [key ...] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX]
- numkeys指定key的数量,必须
- WEIGHTS选项,与前面设定的key对应,对应key中每一个score都要乘以这个权重
- AGGREGATE选项,指定并集结果的聚合方式
- SUM:将所有集合中某一个元素的score值之和作为结果集中该成员的score值
- MIN:将所有集合中某一个元素的score值中最小值作为结果集中该成员的score值
- MAX:将所有集合中某一个元素的score值中最大值作为结果集中该成员的score值
-
交集
- ZINTERSTORE destination numkeys key [key ...] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX]
- numkeys指定key的数量,必须
- WEIGHTS选项,与前面设定的key对应,对应key中每一个score都要乘以这个权重
- AGGREGATE选项,指定并集结果的聚合方式
- SUM:将所有集合中某一个元素的score值之和作为结果集中该成员的score值
- MIN:将所有集合中某一个元素的score值中最小值作为结果集中该成员的score值
- MAX:将所有集合中某一个元素的score值中最大值作为结果集中该成员的score值