set类型和zset类型

set集合是string类型的无序集合,set是通过Hashtable实现的,对集合我们可以取交集、并集、差集。

sadd方法:向名称为key的set中添加元素

sadd set1 a

sadd set1 b

sadd set1 c

小结:set集合不允许重复元素

smembers查看set集合的元素

srem方法:删除set集合元素

srem set1 a

spop方法:随机返回删除的key

spop set1

sdiff方法:返回两个集合的不同元素(哪个集合在前面就以哪个集合为标准)

smembers set3

a

b

c

smembers set4

a

b

d

sdiff set3 set4

c

sdiffstore方法:将返回的不同元素存储到另一个集合里

sdiffstore set5 set3 set4

1

smembers set5

c

举例:

命令:smembers set1

结果:1) "c"

           2) "a"

           3) "b"

命令:smembers set2

结果:1) "d"

           2) "c"

           3) "b"

命令:sdiffstore set3 set1 set2

返回结果:1

命令:smembers set3

返回结果:"a"

小结:这里是把set1和set2的不同元素(以set1为准)存储到set3集合里

sinter方法:返回集合的交集

sintersore方法:返回交集结果,存储在set集合中

smembers set4

1) "c"

2) "a"

3) "b"

smembers set5

1) "d"

2) "a"

3) "b"

sinter set3 set4

1) "a"

2) "b"

sinterstore set6 set4 set5

(integer) 2

smembers set3

1) "a"

2) "b"

sunion方法:取并集

sunionstore方法:取得并集,并存储到集合中

smembers set4

1) "c"

2) "a"

3) "b"

smembers set5

1) "d"

2) "a"

3) "b"

sunion set4 set5

1) "b"

2) "a"

3) "c"

4) "d"

sunionstore set7 set4 set5

(interger) 4

smembers set7

1) "b"

2)"a"

3)"c"

4) "d"

smove方法:从一个set集合移动到另一个set集合里

smembers set1

1) "c"

2) "a"

3) "b"

smembers set2

1) "d"

2) "a"

3) "b"

smove set1 set2 c

(integer) 1

smembers set1

1) "a"

2) "b"

smembers set2

1) "b"

2) "a"

3) "c"

4) "d"

小结:将set1中的元素移动到set2中(相当于剪切复制)

scard方法:查看集合里元素个数

sismember方法:判断某元素是否为集合中的元素。返回1代表是集合中的元素,0代表不是

srandmember方法:随机返回一个元素

scard set2

(integer) 4

sismember set2 a

(integer) 1

sismember set2 e

(integer) 0

srandmember set2

"b"

zadd向有序集合中添加一个元素,该元素如果存在,则更新顺序

在重复插入的时候,会根据顺序属性更新

zadd zset1 5 five

(integer) 1

zadd zset1 2 two

(integer) 1

zadd zset1 3 three 

(integer) 1

zadd zset1 1 one

(integer) 1

zadd zset1 4 four

(integer) 1

zrange zset1 0 -1 withscores

1) "one"

2) "1"

3) "two"

4) "2"

5) "three"

6) "3"

7) "four"

8) "4"

9) "five"

10) "5"

zrange zset1 0 -1

1) "one"

2) "two"

3) "three"

4) "four"

5) "five"

应用:排行榜rank,Lucene,rank把海量数据在内存中检索。例如100W条数据,有6个定义,6个条件分值匹配,计算匹配度最高的,排名在最前面。当用户进入页面,100W条数据加入到内存中,很快,选择某几个条件,根据分值,搜索排名度最高的分值。

zset中的score就是分值

算法:快速在海量数据里做一个优先级排行

solr搜索引擎,第一步是过滤,第二步是rank排名。两步都需要算法。

zrem删除名称为key的zset中的元素member

zrem zset1 one

(integer) 1

zrange zset1 0 -1 withscores

1) "two"

2) "2"

3) "three"

4) "3"

5) "four"

6) "4"

7) "five"

8) "5"

zincrby以指定值去自动递增或者减少,用法和之前的incrby类似

zincrby zset1 1 two 

(zincrby key increment member)

zrange zset1 0 -1 withscores

1) "three"

2) "3"

3) "two"

4) "3"

5) "four"

6) "4"

7) "five"

8) "5"

zrangebyscore 找到指定区间范围的数据进行返回

zrangebyscore zset1 3 4

1) "three"

2) "two"

3) "four"

zrangebyscore zset1 3 4 withscores

1) "three"

2) "3"

3) "two"

4) "3"

5) "four"

6) "4"

zremrangebyrank 删除 0到1(删除索引0,1)

zremrangebyrank zset1 0 1

zrange zset1 0 -1 withscores

1) "four"

2) "4"

3) "five"

4) "5"

5) "sadfa"

6) "6"

zremrangebyscore删除指定序号

zremrangebyscore zset 5 6

(integer) 2

zrange zset1 0 -1 withscores

1) "four"

2) "4"

zrank返回排序索引,从小到大排序(升序排序之后再找索引)

注意:一个是顺序号,一个是索引,zrank返回的是索引

zrevrank返回排序索引,从大到小排序(降序排序之后再找索引)

zadd zset1 1 "one"

zadd zset1 2 "two”

zadd zset1 3 "three"

zadd zset1 5 "five"

zadd zset1 6 "six"

zrange zset1 0 -1

1) "one"

2) "two"

3) "three"

4) "four"

5) "five"

6) "six"

zrank zset1 "two"

(integer) 1

zrank zset1 "three"

(integer) 2

zrank zset1 "one"

(integer) 0

zcard 返回集合里所有元素的个数

zcard zset1

(integer) 6

zcount 返回集合中score在给定区间里的数量

zcount zset1 1 4

(integer) 4

zremrangebyrank zset [from] [to]  删除索引

zrange zset1 0 -1 withscores

1) "one"

2) "1"

3) "two"

4) "2"

5) "three"

6) "3"

7) "four"

8) "4"

9) "five"

10) "5"

11) "six"

12) "6"

zremrangebyrank zset1 0 1

(integer) 2

zrange zset1 0 -1 withscores

1) "three"

2) "3"

3) "four"

4) "4"

5) "five"

6) "5"

7) "six"

8) "6"

zremrangebyscore zset [from][to] (删除指定序号)

zremrangebyscore zset1 4 6

(integer) 3

zrange zset1 0 -1 withscores

1) "three"

2) "3"

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值