Redis 笔记(07)— sorted set 类型(添加、删除有序集合元素、获取分数范围内成员、按score排序、返回集合元素个数)
zset
可能是 Redis
提供的最为特色的数据结构,一方面它是一个 set
,保证了内部 value
的唯一性,另一方面它可以给每个 value
赋予一个 score
,代表这个 value
的排序权重。它的内部实现用的是一种叫做「跳跃列表」的数据结构。
zset
中最后一个 value
被移除后,数据结构自动删除,内存被回收。
zset
可以用来存粉丝列表,value
值是粉丝的用户 ID
,score
是关注时间。我们可以对粉丝列表按关注时间进行排序。
zset
还可以用来存储学生的成绩,value
值是学生的 ID
,score
是他的考试成绩。我们可以对成绩按分数进行排序就可以得到他的名次。
1. sorted set 类型相关命令
命令 | 说明 |
---|---|
zadd key score member | 添加元素到集合,元素在集集合中存在则更新应对的score |
zrem key member | 删除指定元素 |
zcount key min max | 返回分数范围内的成员变量 |
zincrby key incr member | 按照incr幅度增加对应member的score值,返回score值 |
zrank key member | 返回指定元素在集合中的排名(下标),集合中元素是按score从小到大排序的 |
zrevrank key member | 集合中元素是按score从大到小排序的 |
zrange key start end | 从集合中选择指定区间的元素,返回的是有序集合 |
zrevrange key start end | 同上,返回结果是按score逆序的 |
zcard key | 返回集合中元素的个数 |
zscore key member | 返回给定元素对应的score |
zremrangebyrank key min max | 删除集合中排名在给定区间的元素 |
zinterstore distination numkeys | 相交多个结果集,导致排序的设置存储在一个新的结果集 |
zunionstore destination numberkeys | 添加多个排序集合导致排序的设置存储在一个新的结果集,可以实现取得最大值(max),取得最小值(min) |
2. 使用示例
127.0.0.1:6379> flushdb
OK
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> zadd jack 90 english
(integer) 1
127.0.0.1:6379> keys *
1) "jack"
127.0.0.1:6379> zadd tom 80 english
(integer) 1
127.0.0.1:6379> keys *
1) "jack"
2) "tom"
127.0.0.1:6379> zrem tom english # 删除指定元素
(integer) 1
127.0.0.1:6379> keys *
1) "jack"
127.0.0.1:6379> zadd tom 80 english
(integer) 1
127.0.0.1:6379> zadd tom 95 math
(integer) 1
127.0.0.1:6379> zadd tom 91 chinese
(integer) 1
127.0.0.1:6379> keys *
1) "jack"
2) "tom"
127.0.0.1:6379> zcount tom 90 100 # 返回分数范围内的成员变量
(integer) 2
127.0.0.1:6379> zincrby tom 3 chinese
"94"
127.0.0.1:6379> zrank tom chinese
(integer) 1
127.0.0.1:6379> zrank tom english
(integer) 0
127.0.0.1:6379> zrank tom math
(integer) 2
127.0.0.1:6379> zrevrank tom math
(integer) 0
127.0.0.1:6379> zrange tom 0 2
1) "english"
2) "chinese"
3) "math"
127.0.0.1:6379> zrevrange tom 0 2
1) "math"
2) "chinese"
3) "english"
127.0.0.1:6379> zcard tom
(integer) 3
127.0.0.1:6379> zscore tom math
"95"
127.0.0.1:6379>
从集合中选择指定区间的元素,返回的是有序集合,如果要加上所携带的分数时,需要使用带有 withscores
字段的语句。
127.0.0.1:6379> zrange tom 0 -1 withscores
1) "english"
2) "80"
3) "chinese"
4) "94"
5) "math"
6) "95"
3. 容器型数据结构的通用规则
list/set/hash/zset
这四种数据结构是容器型数据结构,它们共享下面两条通用规则:
- create if not exists
如果容器不存在,那就创建一个,再进行操作。比如 rpush
操作刚开始是没有列表的,Redis
就会自动创建一个,然后再 rpush
进去新元素。
- drop if no elements
如果容器里元素没有了,那么立即删除元素,释放内存。这意味着 lpop
操作到最后一个元素,列表就消失了。
4. 过期时间
Redis
所有的数据结构都可以设置过期时间,时间到了,Redis
会自动删除相应的对象。需要注意的是过期是以对象为单位,比如一个 hash
结构的过期是整个 hash
对象的过期,而不是其中的某个子 key
。
还有一个需要特别注意的地方是如果一个字符串已经设置了过期时间,然后你调用了 set
方法修改了它,它的过期时间会消失。
127.0.0.1:6379> set str "hello world"
OK
127.0.0.1:6379> expire str 300
(integer) 1
127.0.0.1:6379> ttl str
(integer) 295
127.0.0.1:6379> ttl str
(integer) 294
127.0.0.1:6379> set str "hello"
OK
127.0.0.1:6379> ttl str
(integer) -1
127.0.0.1:6379>
Redis 笔记(07)— sorted set 类型(添加、删除有序集合元素、获取分数范围内成员、按score排序、返回集合元素个数)相关推荐
- java jdbc 删除_java使用jdbc实现各种类型添加删除修改数据
项目描述 上次为大家分享了使用jdbc实现各种类型查询数据,这次为大家分享使用jdbc实现各种类型添加.删除.修改数据 运行环境 jdk8+tomcat7+mysql 项目技术(必填) jdbc+da ...
- NGU-学习笔记(1)-动态添加删除图集
现在 正在做unity的方向 不得不说我选的是UI方向 Unity中很有名的就是NGUI插件了.今天做了个ngui的简单背包系统.非常简陋..初学着 自己mark下 (1)预览 主要就是个 simpl ...
- Redis笔记-基础篇(黑马视频教程)
写在开头 这是我在观看黑马Redis视频教程中根据PPT和上课内容,个人写的笔记,中间有部分来源于百度,如有侵权,联系我删除. 文章目录 写在开头 NoSQL数据库简介 技术发展 NoSQL数据库 R ...
- Redis笔记(六):Java中使用Redis
Java程序使用Redis 添加依赖包 Maven依赖方式 <dependency><groupId>redis.clients</groupId><arti ...
- Redis的list,set,zset类型应用及排行榜的实现
Redis数据类型 Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)等 List类型 简介 Lis ...
- Redis和nosql简介,api调用;Redis数据功能(String类型的数据处理);List数据结构(及Java调用处理);Hash数据结构;Set数据结构功能;sortedSet(有序集合)数
1.Redis和nosql简介,api调用 14.1/ nosql介绍 NoSQL:一类新出现的数据库(not only sql),它的特点: 1. 不支持SQL语法 2. 存储结构跟传统关系型数 ...
- jq遍历循环,给每个元素添加点击事件,并返回当前元素的索引值(闭包问题)
jq循环绑定点击事件造成闭包问题 需求:给每个带有tab类名的元素点击点击事件,点击时可以添加active类名,(用于样式切换),而且还需要返回当前元素对应的索引值: 方法一(出现闭包) 先引入jq ...
- ***Redis hash是一个string类型的field和value的映射表.它的添加、删除操作都是O(1)(平均)。hash特别适合用于存储对象...
http://redis.readthedocs.org/en/latest/hash/hset.html HSET HSET key field value (存一个对象的时候key存) 将哈希 ...
- redis之sorted sets类型及操作
sorted sets类型及操作 sorted set是set的一个升级版本,它在set的基础上增加了一个顺序属性,这一属性在添加修改元素的时候可以指定,每次指定后,zset会自动重新按新的值调整顺序 ...
最新文章
- dell存储Linux配置,Dell MD3200远程存储的特殊配置
- 设计模式(十二):通过ATM取款机来认识“状态模式”(State Pattern)
- draw.io项目本地部署
- Django 中间件
- .net中怎样实现json转化时仅仅处理部分属性二?
- a频繁连接不上redis_连接不到redis Caused by:..._慕课问答
- 济南昊锐科技谈程序员与用户UI
- iphone 通过获取IMSI判断运营商
- Dell Inspiron 6400上安装Fedora 5后使声卡义务正常的方法
- ANDROID开发java.lang.NoClassDefFoundError: com.baidu.location.LocationClient的解决办法
- 香橙派用什么系统最好_oa办公系统是什么系统?国内oa办公自动化软件哪家最好?...
- CSS3文字渐变效果
- 用Response.Filter生成静态页
- 算法不会,尚能饭否之集合(Set)
- 数字化赋能全零售 国美按下战略加速键
- oracle 19c jdbc之Reactive Streams Ingestion (RSI) Library
- 2023年3月份隐私计算市场洞察
- 莫纳什大学招收AI/CV/ML/计算生物信息学和生物医学方向全奖博士研究生
- 【报告分享】小红书·新消费浪潮下的决策价值之地-小红书(附下载)
- sklearn聚类算法实现