redis有序集合数据类型---sortedset
一、概述
- redis有序集合和集合一样,也是string类型元素的集合,且不允许重复的成员。
- 不同的是每个元素都会关联一个double类型的分数。
- redis正式通过分数来为集合中的重圆进行从小到大的排序。
- 有序集合的成员是唯一的,但分数(score)却可以重复。
- 集合中最大的成员数为2^32-1。
二、sortedset键的设置
- 命令名称:zadd
- 语法:zadd key [NX|XX] [CH] [INCR] score member [score member ...]
- 功能:
- 将一个或多个member元素及其score值加入到有序集key当中。
- 如果某个member已经是有序集的成员,那么更新这个member的score值,并通过重新插入这个member元素,来保证该member在正确的位置上。
- score值可以是整数值或双精度浮点数。
- 如果key不存在,则创建一个空的有序集并执行zadd操作。
- 当key存在但不是有序集类型时,返回一个错误。
- 返回值:
- 被成功添加的新成员的数量,不包括那些被更新的、已经存在的成员
- 命令名称:zincrby
- 语法:zincrby key increment member
- 功能:
- 为有序集key的成员member的score值加上增量increment(可负)。
- 当key不存在,或member不是key的成员时,zincrby等同于zadd
- 返回值:
- 当key不是有序集类型时,返回一个错误。member成员的新score值,以字符串形式表示。
三、sortedset键的查询
- 命令名称:zcard
- 语法:zcard key
- 功能:
- 返回有序集合key的基数(有序集合中元素的数量)
- 返回值:
- 当key存在且是有序集类型时,返回有序集的基数。
- 当key不存在时,返回0
- 命令名称:zcount
- 语法:zcount key min max
- 功能:
- 返回有序集合key中,score值在min和max之间(默认包括score值等于min或max)的成员的数量。
- 返回值:
- score值在min和max之间的成员的数量。
- 命令名称:zrange
- 语法:zrange key start stop [withscores]
- 功能:
- 返回有序集key中,指定区间内的成员。
- 其中成员的位置按score值递增(从小到大)来排序。
- 返回值:
- 指定区间内,带有score值(可选)的有序集成员的额列表。
- 命令名称:zrangebyscore
- 语法:zrangebyscore key min max [withscores] [limit offset count]
- 功能:
- 返回有序集key中,所有score值介于min和max之间(包括等于min或max)的成员。有序集成员按score值递增(从小到大)次序排列。
- 返回值:
- 指定区间内,带有score值(可选)的有序集成员的列表。
- 命令名称:zrank
- 语法:zrank key member
- 功能:
- 返回有序集key中成员member的排名。其中有序集成员按score值递增(从小到大)顺序排列。
- 排名以0为底,也就是说,score值最小的成员排名为0.
- 返回值:
- 如果member是有序集key的成员,返回member的排名。
- 如果member不是有序集key的成员,返回nil。
- 命令名称:zrevrange
- 语法:zrevrange key start stop [withscores]
- 功能:
- 返回有序集key中,指定区间内的成员。
- 其中成员的位置按score值递减(从大到小)来排列
- 返回值:
- 指定区间内,带有score值(可选)的有序集成员的列表。
- 命令名称:zrevrangebyscore
- 语法:zrevrangebyscore key max min [withscores] [limit offset count]
- 功能:
- 返回有序集key中,score值介于max和min之间(默认包括等于max或min)的所有成员。有序集成员按score值递减(从大到小)的次序排列。
- 返回值:
- 指定区间内,带有score值(可选)的有序集成员的列表。
- 命令名称:zrevrank
- 语法:zrevrank key member
- 功能:
- 返回有序集key中成员member的排名。其中有序集成员按score值递减顺序排列。
- 排名以0为底,也就是说,score值最小的成员排名为0.
- 返回值:
- 如果member是有序集key的成员,返回member的排名。
- 如果member不是有序集key的成员,返回nil。
- 命令名称:zscore
- 语法:zscore key member
- 功能:
- 返回有序集key中成员member的score值。
- 如果member元素不是有序集key的成员,或key不存在,返回nil。
- 返回值:
- member成员的score值,以字符串形式表示。
- 命令名称:zscan
- 语法:zscan key cursor [match pattern] [count count]
- 功能:
- 用于迭代有序集合键中的元素。
- 返回值:
- 有序集合成员。
- 命令名称:zrangebylex
- 语法:zrangebylex key min max [limit offset count]
- 功能:
- 当有序集合的所有成员都具有相同的分值时,有序集合的元素会根据成员的字典序来进行排序,而这个命令则可以返回给定的有序集合键key中,值介于min和max之间的成员。
- 返回值:
- 数组回复:一个列表,列表里面包含了有序集合在指定范围内的成员
- 命令名称:zlexcount
- 语法:zlexcount key min max
- 功能:
- 对于一个所有成员的分值都相同的有序集合键key来说,这个命令会返回该集合中,成员介于min和max范围内的元素数量。
- 返回值:
- 整数回复:指定范围内的元素数量。
四、redis有序集合类型并集和交集处理
- 命令名称:zunionstore
- 语法:zunionstore destination numkeys key [key……] [weights weight [weight……]] [aggregate sum|min|max]
- 功能:
- 计算给定的一个或多个有序集的并集,其中给定key的数量必须以numkeys参数指定,并将该并集(结果集)存到destinaton。
- 默认情况下,结果集中某个成员的score值是所有给定集下该成员score值之和。
- 返回值:
- 保存到destination的结果集的基数。
- 命令名称:zinterstore
- 语法:zinterstore destination numkeys key [key……] [weights weight [weight……]] [aggregate sum|min|max]
- 功能:
- 计算给定的一个或多个有序集的交集,其中给定key的数量必须以numkeys参数指定,并将该并集(结果集)存到destinaton。
- 默认情况下,结果集中某个成员的score值是所有给定集下该成员score值之和。
- 返回值:
- 保存到destination的结果集的基数。
五、删除
- 命令名称:zrem
- 语法:zrem key member [member……]
- 功能:
- 移除有序集key中的一个或多个成员,不存在的成员将被忽略。
- 当key存在但不是有序集类型时,返回一个错误。
- 返回值:
- 被成功移除的成员的数量,不包括别忽略的成员。
- 命令名称:zremrangebyrank
- 语法:zremrangebyrank key start stop
- 功能:
- 移除有序集key中,指定排名(rank)区间内的所有成员。
- 区间分别以下标参数start和stop指出,包含start和stop在内。
- 返回值:
- 被移除成员的数量。
- 命令名称:zremrangebyscore
- 语法:zremrangebyscore key min max
- 功能:
- 移除有序集key中,所有score值介于min和max之间(包括等于min或max)的成员。
- 返回值:
- 被移除成员的数量。
- 命令名称:zremrangebylex
- 语法:zremrangebylex key min max
- 功能:
- 对于一个所有成员的分值都相同的有序集合键key来说,这个命令会移除该集合中,成员介于min和max范围内的所有元素。
- 返回值:
- 被移除成员的数量。
redis有序集合数据类型---sortedset的更多相关文章
- Redis 有序集合(sorted set)
Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员. 不同的是每个元素都会关联一个double类型的分数.redis正是通过分数来为集合中的成员进行从小到大的排序. 有序 ...
- redis 有序集合(zset)函数
redis 有序集合(zset)函数 zAdd 命令/方法/函数 Adds the specified member with a given score to the sorted set stor ...
- Redis有序集合
Redis有序集合类似Redis集合存储在设定值唯一性.不同的是,一个有序集合的每个成员带有分数,用于以便采取有序set命令,从最小的到最大的分数有关. Redis 有序set添加,删除和测试中的O( ...
- Redis 有序集合(sorted set),发布订阅,事务,脚本,连接,服务器(三)
Redis 有序集合(sorted set) Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员. 不同的是每个元素都会关联一个double类型的分数.redis正是通过 ...
- redis有序集合的使用
Redis 有序集合(sorted set) Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员. 不同的是每个元素都会关联一个double类型的分数.redis正是通过 ...
- 数据结构与算法简记--redis有序集合实现-跳跃表
跳表 定义 为一个值有序的链表建立多级索引,比如每2个节点提取一个节点到上一级,我们把抽出来的那一级叫做索引或索引层.如下图所示,其中down表示down指针,指向下一级节点.以此类推,对于节点数为n ...
- 基于redis有序集合,实现简单的延时任务
基于redis有序集合,实现简单的延时任务 延时任务的场景很多,开发过程中我们经常会遇到,比如说: 1.订单未付款,5分钟后自动取消,这是电商网站非常普遍的需求: 2.用户创建订单不付款,3分钟后自动 ...
- redis(十四):Redis 有序集合(sorted set)
Redis 有序集合(sorted set) Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员. 不同的是每个元素都会关联一个double类型的分数.redis正是通过 ...
- Redis从基础命令到实战之有序集合类型(SortedSet)
有序集合类型是Redis五种数据类型中最高级的.也是最复杂的类型.有序集合具有集合类型的特性,在其基础上给每个元素关联了一个分值,或称为权重,操作时既可以在添加元素时指定分值,也可以单独修改集合中某一 ...
随机推荐
- 扩展和嵌入 Python 解释器 用 C 或 C++ 编写模块以使用新模块来扩展 Python 解释器的功能 定义新的函数\对象类型\方法。 将 Python 解释器嵌入到另一个应用程序中
// https://python3-cookbook.readthedocs.io/zh_CN/latest/c15/p02_write_simple_c_extension_module.html ...
- Socket: Java Socket 几个重要的TCP/IP选项解析(转)
Socket选择可以指定Socket类发送和接受数据的方式.在JDK1.4中共有8个Socket选择可以设置.这8个选项都定义在java.net.SocketOptions接口中.定义如下: publ ...
- osg创建灯光
添加光照 osg::ref_ptr<osg::Node> MyOSGLoadEarth::CreateNode() { osg::ref_ptr<osg::Group> _ro ...
- 003——angular 组件 以及组件里面的模板
创建组件: ng g component components/news 一.创建 angualr 组件................................................ ...
- Spring cloud微服务安全实战-6-1本章概述
这一章来讲一下,微服务之间的通讯安全. 当前这个架构还存在的问题 在网关上做限流还是有一些问题的.例如我的订单服务限流是100,库存服务限流也是100.但是我的订单服务会调用我的库存服务.那么在网关这 ...
- ISCSI多路径配置(二)
搭建iscsi存储系统(一) (1).配置ISCSI多路径实现磁盘挂载高可用 如果存储服务器到交换机只有一条线路的时候,那么一条线路出现故障,整个就没法使用了,所以多线路可以解决这个问题,避免单点故障 ...
- ABAP DEMO33 选择周的搜索帮助
效果图 *&---------------------------------------------------------------------**& Report YCX_02 ...
- WinForm,在另一个线程中更新Form中的数据(转)
Form本身有线程,但对于一些耗时的操作,我们不希望在Form的线程中进行,因为会导致Form线程阻塞,产生假死的现象. 其他线程中操作Form中的控件,总出现“线程间操作无效: 从不是创建控件的线程 ...
- Python - Django - 母版和继承
可以把多个页面相同的部分提取出来,放在一个母板里,这些页面只需要继承这个母板就好了 通常会在母板中定义页面专用的 CSS 块和 JS 块,方便子页面替换 定义块: {% block 名字 %} {% ...
- elasticsearch关键词查询不分词
$query = [ 'bool' => [ 'must' => [ 'match_phrase' => ['content' => $word] //$word词不被分词 ] ...