Redis学习笔记(七)——数据结构之有序集合(sorted set)
一、介绍
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)的更多相关文章
- Redis学习笔记(六)有序集合进阶
1.基础操作 ZCARD(获取成员数量) ZINCRBY key_name num member(将member的分数加num) ZCOUNT key_name min max(获取分数在min与ma ...
- Redis自学笔记:3.6入门-有序集合类型
3.6有序集合类型 3.6.1介绍 在集合类型基础上,为集合中每个元素都关联了一个分数,故可以获得 分数最高(最低)的前N个元素,可以获得指定范围内的元素等 有序集合中每个元素不同,但它们的分数却可以 ...
- Redis学习笔记七:独立功能之排序
sort 命令可以对列表键.集合键或有序集合键的值进行排序.sort 命令并不修改数据库值,只是输出有序. 127.0.0.1:6379> rpush numbers 9 8 7 6 1 2 3 ...
- Redis学习笔记七:主从集群
单机,单节点,单实例的Redis会有什么问题呢? 容易导致单点故障,那么如何解决呢? 可以通过主备方式 同时可以实现读写分离 这里的每个节点是全量的,镜像的. 单节点的容量有限而且单点的压力比较大,如 ...
- Redis学习笔记八:集群模式
作者:Grey 原文地址:Redis学习笔记八:集群模式 前面提到的Redis学习笔记七:主从复制和哨兵只能解决Redis的单点压力大和单点故障问题,接下来要讲的Redis Cluster模式,主要是 ...
- Redis学习笔记一:数据结构与对象
1. String(SDS) Redis使用自定义的一种字符串结构SDS来作为字符串的表示. 127.0.0.1:6379> set name liushijie OK 在如上操作中,name( ...
- python 操作redis之——有序集合(sorted set) (七)
#coding:utf8 import redis r =redis.Redis(host=") 1.Zadd 命令用于将一个或多个成员元素及其分数值加入到有序集当中.如果某个成员已经是有序 ...
- Redis学习笔记之Redis基本数据结构
Redis基础数据结构 Redis有5种基本数据结构:String(字符串).list(列表).set(集合).hash(哈希).zset(有序集合) 字符串string 字符串类型是Redis的va ...
- Redis学习笔记(二) Redis 数据类型
Redis 支持五种数据类型:string(字符串).list(列表).hash(哈希).set(集合)和 zset(有序集合),接下来我们讲解分别讲解一下这五种类型的的使用. String(字符串) ...
- Redis学习笔记~目录
回到占占推荐博客索引 百度百科 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合). ...
随机推荐
- 【答疑解惑】为什么你的 Charles 会抓包失败?
作为一名 Web 开发工程师,天天都会和网络打交道.Charles 作为一款网络抓包工具,几乎成了 Web 开发的标配. 本文是我深度使用 Charles 后总结而成,不同于其它介绍 Charles ...
- 刷题[SUCTF 2019]CheckIn
解题思路 打开网页发现只是简单做了一个上传界面,朴实无华 上传一个php文件,发现非法后缀. 上传一个.htaccess文件,发现,爆出很重要的信息 exif_imagetype函数通过检测文件头来检 ...
- gRPC-Protocol基础知识-C#篇
本文使用协议缓冲区语言的proto3版本,为C#程序员提供了使用协议缓冲区的基本介绍. 通过创建一个简单的示例应用程序,展示了如何 在.proto文件中定义消息格式. 使用协议缓冲区编译器. 使用C# ...
- Linux常用字段
cd 切换路径 vim,vi 打开文档 ls 查看文件信息 chmod 修改文件或目录的权限 useradd 添加用户 cat 查看纯文本文件(少内容) rm 删除文件或目录 mv 剪切文件或文件重 ...
- C#类型与变量
C#入门笔记 8.28开始看刘铁猛的视频,到9.22看完.大概觉得自己入门了,对OOP也有一定了解了,稍微写点笔记,当复习了. 类型与变量 数据类型 数据类型[1]是数据在内存中存储时的"型 ...
- springmvc 源码分析(三) -- 自定义处理器映射器和自定义处理器适配器,以及自定义参数解析器 和错误跳转自定页面
测试环境搭建: 本次搭建是基于springboot来实现的,代码在码云的链接:https://gitee.com/yangxioahui/thymeleaf.git DispatcherServlet ...
- java多线程:线程池原理、阻塞队列
一.线程池定义和使用 jdk 1.5 之后就引入了线程池. 1.1 定义 从上面的空间切换看得出来,线程是稀缺资源,它的创建与销毁是一个相对偏重且耗资源的操作,而Java线程依赖于内核线程,创建线程需 ...
- C++里的程序 GetDlgItem(IDC_EDIT_INPUTFILE) ->EnableWindow(TRUE)
转载:https://zhidao.baidu.com/question/654519209423407765.html GetDlgItem(IDC_EDIT_INPUTFILE) ->Ena ...
- Tensorflow学习笔记No.1
使用tf.keras.Sequential()建立网络模型 整个过程可分为五步:1创建Sequential模型,2添加所需要的神经层,3使用.compile方法确定模型训练结构,4使用.fit方法 使 ...
- Android设备上的逐像素碰撞检测
介绍 我正在我的Android设备上开发一款游戏,不用说,因为我想要接触到尽可能多的用户,我做到了 省略了硬件加速.因此,我需要编写能够在大多数设备上运行的最快的代码.我从一个简单的表面视图开始 并使 ...