Redis系列(二):Redis的数据类型及命令操作 (3)

交集

127.0.0.1:6379> sadd seta 1 2 3 (integer) 3 127.0.0.1:6379> sadd setb 3 4 5 (integer) 3 127.0.0.1:6379> sinter seta setb # 使用 sinter 计算 seta 和 setb 的交集 1) "3" 集合的差集运算 A - B

差集

127.0.0.1:6379> sadd seta 1 2 3 (integer) 3 127.0.0.1:6379> sadd setb 3 4 5 (integer) 3 127.0.0.1:6379> sdiff seta setb # 使用 sdiff 计算 seta - setb (属于seta 但不属于 setb) 1) "1" 2) "2" 127.0.0.1:6379> sdiff setb seta # 使用 sdiff 计算 setb - setb (属于setb 但不属于 seta) 1) "4" 2) "5" 有序集合类型 (sorted set) redis sorted set介绍

SortedSet(zset)是 redis 提供的一个非常特别的数据结构,它在集合的基础上为每一个元素都关联了一个分数,这相当于 java 中的 Map<String,Double>,可以给每一个元素赋予一个score权重。另一方面又像TreeSet,内部的元素会按照权重score进行排序。

相关操作命令 127.0.0.1:6379> zadd board 81 java 75 python 90 c++ # 使用 zadd 增加一到多个value/score对,score 放在前面 (integer) 3 127.0.0.1:6379> zscore board java # 使用 zscore 获取 java 的 score "81" 127.0.0.1:6379> zrange board 0 -1 # 使用 zrange 获取指定区间(0 -1 表示全部)上的降序排名 1) "python" 2) "java" 3) "c++" 127.0.0.1:6379> zrange board 0 -1 withscores # 带上 winthscores 可以一并获取元素的 score 1) "python" 2) "75" 3) "java" 4) "81" 5) "c++" 6) "90" 127.0.0.1:6379> zrevrange board 0 -1 withscores # 使用 zrevrange 获取指定区间(0 -1 表示全部)上的升序排名 1) "c++" 2) "90" 3) "java" 4) "81" 5) "python" 6) "75" 127.0.0.1:6379> zrangebyscore board -inf +inf withscores # 使用 zrangebyscore 获取 负无穷(-inf)到 正无穷(+inf)区间上所以元素的降序排名 1) "python" 2) "75" 3) "java" 4) "81" 5) "c++" 6) "90" 127.0.0.1:6379> zrevrangebyscore board +inf -inf withscores # 使用 zrevrangebyscore 获取正无穷(+inf)到 负无穷(-inf)区间上所以元素的升序排名 1) "c++" 2) "90" 3) "java" 4) "81" 5) "python" 6) "75" 127.0.0.1:6379> zcard board # 使用 zcard 计算 board 集合的元素个数 (integer) 3 127.0.0.1:6379> zrem board java python # 使用 zrem 删除 board 集合中的一个或多个元素 (integer) 2 应用场景

商品销售,软件下载等各种排行榜

参考

通俗易懂的Redis数据结构基础教程

[Redis基础:基本介绍、redis的应用场景、五种数据类型、持久化操作、主从模式]

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpyppz.html