一、介绍

  Redis有序集合和集合一样都是string类型元素的机会,且不允许重复的成员。

  不同的是每个元素都会关联一个double类型的分数。Redis正是通过分数来为集合中的成员进行从小到放大的排序。

  有序集合的成员是唯一的,但是分数(score)却可以重复。

  集合是通过哈希表实现的,所以添加、删除、查找的复杂度都是O(1)。集合中最大的成员数为4294967295,每个集合可存储40多亿个成员。

  基本命令:

  • 添加/更新

  zadd key score1 member1 [score2 member2 ...]  (向有序集合添加一个或多个成员,或者更新已存在成员的分数)

  zincrby key increment member  (有序集合中对指定成员的分数上增量increment)

  zinterstore destination numkeys key [key ...]  (计算给定的一个或多个有序集的交集并将结果存储在新的有序集合key中)

  • 查询

  zcard key  (获取有序集合的成员数)

  zrange key start stop [withscores]  (通过索引区间返回有序集合指定区间内的成员)

  zcount key min max  (计算在有序集合中指定区间分数的成员数)

  zlexcount key min max  (在有序集合中计算指定字典区间内成员数量)

  zrangebylex key min max [limit offset count]  (通过字典区间返回有序集合的成员)

  zrangebyscore key min max [withscores] [limit]  (通过分数返回有序集合指定区间内的成员)

  zrank key member  (返回有序集合中指定成员的索引)

  zrevrange key start stop  [withscores]  (返回有序集合中指定区间内的成员,通过索引,分数从高到低)/(反转集合元素)

  zrevrangebyscore key max min [withscores]  (返回有序集合中指定分数区间内的成员,分数从高到低)

  zrevrank key member  (返回有序集合中指定成员的排名,有序集合成员按分数值递减,从达到小排序)

  zscore key member  (返回有序集合中,成员的分数值)

  

  • 移除

  zrem key member1 [member2 ...]  (移除有序集合中的一个或多个成员)

  zremrangebylex key min max  (移除有序集合中给定的字典区间的成员)

  zremrangebyrank key start stop  (移除有序集合中给定的排名区间的成员)

  zremrangebyscore key min max  (移除有序集合中给定的分数区间的成员)

  

  

二、操作

  • 添加

  1、zadd key score1 member1 [score2 member2 ...]  (向有序集合添加一个或多个成员,或者更新已存在成员的分数)

  score为分数

  

  2、zincrby key increment member  (有序集合中对指定成员的分数上增量increment)

  给集合添加一个元素c,分数为0

  

  给元素c增加分数10

  

  结果元素c分数值为10

  

  3、zinterstore destination numkeys key [key ...]  (计算给定的一个或多个有序集的交集并将结果存储在新的有序集合key中)

  两个集合的元素(可以多个)

  

  计算两个集合的交集并存储到新的集合中(分数值会获取集合中的最大值)

  

  •  查询

  1、zcard key  (获取有序集合的成员数)

  

  

  2、zrange key start stop [withscores]  (通过索引区间返回有序集合指定区间内的成员)

  获取集合所有元素

  

  获取集合所有元素及分数

  

  3、zcount key min max  (计算在有序集合中指定区间分数的成员数)

  

  4、zlexcount key min max  (在有序集合中计算指定字典区间内成员数量)

  

  5、zrangebylex key min max [limit offset count]  (通过字典区间返回有序集合的成员)

  

  6、zrangebyscore key min max [withscores] [limit]  (通过分数返回有序集合指定区间内的成员)

  

  7、zrank key member  (返回有序集合中指定成员的索引)

  如果指定元素(成员)不存在,返回(nil)

  

  8、zrevrange key start stop  [withscores]  (返回有序集合中指定区间内的成员,通过索引,分数从高到低)/(反转集合元素)

  就跟倒序一个道理

  

  9、zrevrangebyscore key max min [withscores]  (返回有序集合中指定分数区间内的成员,分数从高到低)

  

  10、zrevrank key member  (返回有序集合中指定成员的排名,有序集合成员按分数值递减,从达到小排序)

  

  11、zscore key member  (返回有序集合中,成员的分数值)

  

  • 移除

  1、zrem key member1 [member2 ...]  (移除有序集合中的一个或多个成员)

  如果删除的元素不存在返回0

  

  2、zremrangebylex key min max  (移除有序集合中给定的字典区间的成员)

  

  3、zremrangebyrank key start stop  (移除有序集合中给定的排名区间的成员)

  

  4、zremrangebyscore key min max  (移除有序集合中给定的分数区间的成员)

  

  

Redis学习笔记(七)——数据结构之有序集合(sorted set)的更多相关文章

  1. Redis学习笔记(六)有序集合进阶

    1.基础操作 ZCARD(获取成员数量) ZINCRBY key_name num member(将member的分数加num) ZCOUNT key_name min max(获取分数在min与ma ...

  2. Redis自学笔记:3.6入门-有序集合类型

    3.6有序集合类型 3.6.1介绍 在集合类型基础上,为集合中每个元素都关联了一个分数,故可以获得 分数最高(最低)的前N个元素,可以获得指定范围内的元素等 有序集合中每个元素不同,但它们的分数却可以 ...

  3. Redis学习笔记七:独立功能之排序

    sort 命令可以对列表键.集合键或有序集合键的值进行排序.sort 命令并不修改数据库值,只是输出有序. 127.0.0.1:6379> rpush numbers 9 8 7 6 1 2 3 ...

  4. Redis学习笔记七:主从集群

    单机,单节点,单实例的Redis会有什么问题呢? 容易导致单点故障,那么如何解决呢? 可以通过主备方式 同时可以实现读写分离 这里的每个节点是全量的,镜像的. 单节点的容量有限而且单点的压力比较大,如 ...

  5. Redis学习笔记八:集群模式

    作者:Grey 原文地址:Redis学习笔记八:集群模式 前面提到的Redis学习笔记七:主从复制和哨兵只能解决Redis的单点压力大和单点故障问题,接下来要讲的Redis Cluster模式,主要是 ...

  6. Redis学习笔记一:数据结构与对象

    1. String(SDS) Redis使用自定义的一种字符串结构SDS来作为字符串的表示. 127.0.0.1:6379> set name liushijie OK 在如上操作中,name( ...

  7. python 操作redis之——有序集合(sorted set) (七)

    #coding:utf8 import redis r =redis.Redis(host=") 1.Zadd 命令用于将一个或多个成员元素及其分数值加入到有序集当中.如果某个成员已经是有序 ...

  8. Redis学习笔记之Redis基本数据结构

    Redis基础数据结构 Redis有5种基本数据结构:String(字符串).list(列表).set(集合).hash(哈希).zset(有序集合) 字符串string 字符串类型是Redis的va ...

  9. Redis学习笔记(二) Redis 数据类型

    Redis 支持五种数据类型:string(字符串).list(列表).hash(哈希).set(集合)和 zset(有序集合),接下来我们讲解分别讲解一下这五种类型的的使用. String(字符串) ...

  10. Redis学习笔记~目录

    回到占占推荐博客索引 百度百科 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合). ...

随机推荐

  1. nginx安装步骤

    1.下载地址:下载nginx压缩包wget -c https://nginx.org/download/nginx-1.10.1.tar.gz2.配置nginx安装所需的环境yum install g ...

  2. IPV6介绍已经IPV6改造基本步骤

    IPV6介绍 地址资源无限多 通常见到的124.33.24.116这种形式的是ipv4版本的地址,这种地址由32位二进制数表示. ipv6是一种新的ip地址的表示方式形如fc80::2367:7cff ...

  3. 如何安装eclipse

    1.打开浏览器输入网址:http://www.eclipse.org 进入官方 2.(目前我使用windows操作系统),下拉界面选择"windows"后的"64-bit ...

  4. makefile实验三 理解make工作的基本原则

    代码简单,但测试花样多,若能回答对本博客的每个步骤的预期结果,可以说对makefile的基础掌握是扎实的. 一,当前的makefile代码 root@ubuntu:~/Makefile_Test# r ...

  5. Copy As HTML From VSCode

    JS生成可自定义语法高亮HTMLcode cnblogs @ Orcim  !deprecated! 这里有更好的方案,具体看我的这篇博客博客代码高亮的另一种思路 这篇文章介绍了如何在博客里插入一段 ...

  6. Windows下安装VScode,并使用,以及中文配置

    转载:https://blog.csdn.net/x15011238662/article/details/85094006 首先明确一点,VScode是开发Go应用的基础编辑器,是Microsoft ...

  7. [源码阅读] 阿里SOFA服务注册中心MetaServer(1)

    [源码阅读] 阿里SOFA服务注册中心MetaServer(1) 目录 [源码阅读] 阿里SOFA服务注册中心MetaServer(1) 0x00 摘要 0x01 服务注册中心 1.1 服务注册中心简 ...

  8. Python 自动化测试全攻略:五种自动化测试模型实战详解

    随着移动互联网的发展,软件研发模型逐步完善,软件交付质量越来越受到软件公司的重视,软件测试技术特别是自动化测试技术开始在软件系统研发过程中发挥着越来越重要的作用. 与传统的手工测试技术相比,自动化测试 ...

  9. [Java 开源项目]一款无需写任何代码,即可一键生成前后端代码的工具

    作者:HelloGitHub-小鱼干 JeecgBoot 是一款基于代码生成器的低代码开发平台,零代码开发.JeecgBoot 采用开发模式:Online Coding 模式-> 代码生成器模式 ...

  10. 架构师根本不会被语言限制住,php照样可以用领域驱动设计DDD四层架构!

    作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 你在通往架构师的路上吗? 程序员这个行业就像是在不断的打怪升级,突破每一阶段的瓶颈期 ...