美文网首页
Redis有序集合

Redis有序集合

作者: lc_666 | 来源:发表于2020-04-22 17:36 被阅读0次
  • 对于有序集合 ZSet 来说,每个存储元素相当于有两个值组成的,一个是有序结合的元素值,一个是排序值
  • 排序值可以重复;

redis-cli操作ZSet

  • 添加一个或者多个元素/查询元素
127.0.0.1:6379> zadd skills 1 redis 2 java 
3 mysql
(integer) 3
127.0.0.1:6379> zrange skills 0 -1
1) "redis"
2) "java"
3) "mysql"
  • 删除一个或多个元素(根据元素值)
127.0.0.1:6379> zrem skills redis
(integer) 1
127.0.0.1:6379> zrange skills 0 -1
1) "java"
2) "mysql"
  • 查询某元素的 score 值
127.0.0.1:6379> zscore skills java
"2"
  • 查询 score 区间内元素
127.0.0.1:6379> zrangebyscore skills 0 5
1) "java"
2) "mysql"
  • 查询某元素排名
127.0.0.1:6379> zrank skills mysql
(integer) 1
127.0.0.1:6379> zrank skills java
(integer) 0

使用Jedis操作

public class RedisZSet {
    public static void main(String[] args) {
        Jedis redis = ConnectRedis.getRedis();
        Set<String> skills = redis.zrange("skills", 0, -1);
        System.out.println(skills);
        Long zrank = redis.zrank("skills", "java");
        System.out.println(zrank);
        redis.zadd("skills",10,"oracle");
        skills=redis.zrange("skills",0,-1);
        System.out.println(skills);
    }
}

使用场景

  • 学生成绩排名
  • 粉丝列表,根据关注的先后时间排序

更多操作

  • 查询有序集合的总个数
127.0.0.1:6379> zcard skills
(integer) 3
  • 查询 score 区间内的元素个数
127.0.0.1:6379> zrange skills 0 -1
1) "java"
2) "mysql"
3) "oracle"
127.0.0.1:6379> zcount skills 0 5
(integer) 2
  • 累加元素的 score 值
127.0.0.1:6379> zincrby skills 10 mysql
"13"
127.0.0.1:6379> zscore skills mysql
"13"
  • 查询某元素倒序排名
127.0.0.1:6379> zrange skills 0 -1
1) "java"
2) "oracle"
3) "mysql"
127.0.0.1:6379> zrevrank skills oracle
(integer) 1
127.0.0.1:6379> zrevrank skills mysql
(integer) 0
  • 删除 score 区间内的元素
127.0.0.1:6379> zrange skills 0 -1 
    1) "java"
    2) "oracle"
    3) "mysql"
    4) "spring"
    127.0.0.1:6379> zscore skills mysql
    "13"
    127.0.0.1:6379> zremrangebyscore skills 11 13
    (integer) 1
    127.0.0.1:6379> zrange skills 0 -1 
    1) "java"
    2) "oracle"
    3) "spring"
    127.0.0.1:6379> 
  • 复制交集元素到新集合
127.0.0.1:6379> zadd skills1 1 redis 2 mysql 3 java 4 oracle
(integer) 4
127.0.0.1:6379> zadd skills2 1 oracle 2 python
(integer) 2
127.0.0.1:6379> zinterstore skills3 2 skills1 skills2
(integer) 1
127.0.0.1:6379> zrange skills3 0 -1
1) "oracle"
127.0.0.1:6379> zscore skills oracle
"10"
  • 复制并集元素到新集合
127.0.0.1:6379> zunionstore skills4 2 skills1 skills2
(integer) 5
127.0.0.1:6379> zrange skills4 0 -1
1) "redis"
2) "mysql"
3) "python"
4) "java"
5) "oracle"

相关文章

网友评论

      本文标题:Redis有序集合

      本文链接:https://www.haomeiwen.com/subject/akswihtx.html