美文网首页
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