redis基本数据结构-有序集合
redis基本数据结构-有序集合zset
特性
- 使用哈希表+跳表数据结构存储
- 每个元素由 分数和字段名 两部分组成
- 增加元素
zadd key score1 member1 [score2 member2 score3 member3 ...]
zadd scores 90 zhangsan 99 lisi 95 wangwu
返回3 (返回写入有序集合中的元素个数)
scores = {90 zhangsan, 99 lisi, 95 wangwu}
- 修改元素的分数(与增加类似)
zadd key score member
zadd socres 92 zhangsan
scores = {92 zhangsan, 99 lisi, 95 wangwu}
- 获取元素的分数
zscore key member
zscore scores lisi
返回99
- 获取排名在某个范围内的元素列表(从小到大的升序)
zrange key startRank endRank [WITHSCORES]
zrange scores 0 1 withscores
返回{92 zhangsan, 95 wangwu}
- 获取排名在某个范围内的元素列表(从大到小降序)
zrevrange key startRank endRank [WITHSCORES]
zrevrange scores 0 1 withscores
返回{99 lisi, 95 wangwu}
zrevrange scores 0 -1 withscores
返回{99 lisi, 95 wangwu, 92 zhangsan}
说明:以上排序中,当score相同时,按照 '0' < '9' < 'A' < 'Z' < 'a' < 'z' 的顺序排序。
- 获取指定分数范围内的元素
ZRangeByScore key min max [WITHSCORES] [LIMIT offset count]
zrangebyscore scores 93 100 withscores
返回 {99 lisi, 95 wangwu}
zrangebyscore scores (95 +inf withscores
返回 {99 lisi}
zrangebyscore scores 90 100 LIMIT 1 10000
返回 {99 lisi, 95 wangwu}, 跳过了1个(92 zhangsan),返回10000个,但是不足10000个所以只返回了实际个数的元素
- 增加某个元素的分数
ZIncrBy key increment member
zincrby scores 5 zhangsan
返回 97 (张三的92 + 5 == 97)
scores = {97 zhangsan, 99 lisi, 95 wangwu}
- 获取集合中的元素数量
ZCard key
zcard scores
返回3
- 获取指定分数范围内的元素个数
ZCount key min max
zcount scores (95 +inf
返回2 ( (95, +inf)共有2个)
- 删除一个或多个元素
ZRem key member1 [member2 member3 ...]
zrem scores zhangsan wagnwu
返回2 (实际删除的元素个数)
scores = {99 lisi}
zrem scores
返回1,删除scores的所有元素(删除前还剩一个)
- 按照排名范围删除元素
ZRemRangeByRank key startRank endRank
zadd scores 97 zhangsan 99 lisi 95 wangwu 90 liuwu
scores = { 97 zhangsan, 99 lisi, 95 wangwu, 90 liuwu}
zremrangebyrank scores 0 2
返回3 (删除了3个)
scores = { 99 lisi}
- 按照分数范围删除元素
ZRemRangeByScore key minScore maxScore
zadd scores 97 zhangsan 95 wangwu 90 liuwu
scores = { 97 zhangsan, 99 lisi, 95 wangwu, 90 liuwu}
zremrangebyscore scores 90 96
返回2(实际删除了2个元素)
scores = { 97 zhangsan, 99 lisi}
- 获得元素的排名(升序)
ZRank key member
zrank scores lisi
返回1,排名1
zrank scors zhangsan
返回0,排名0
- 获得元素的排名(降序)
ZRevRank key member
zrevrank scores lisi
返回0,排名0
zrevrank scores zhangsan
返回1,排名1
- 有序集合的交集运算
ZInterStore destSet setCounts zset1 zset2 [zset3 ...] [WEIGHTS weight1 weight2 [weight3 ...]] [AGGREGATE SUM | MAX | MIN]
参数说明:
destSet: 交集运算结果存放到destSet 有序集合
setCounts:参与运算的集合数量
zset1 zset2 ... :参与运算的集合,setCounts 要与实际参与运算的集合数量一致
WEIGHTS:命令选型,后面接每个set的在进行 SUM 或 MAX 或 MIN 之前先使用weight值对自身的score进行乘法运算,然后再进行SUM | MAX | MIN 运算
AGGRATE:命令选型,后接SUM 集合中相同元素的分数经过weight*score后相加 或 MAX 集合中相同元素的分数经过weight * score后取分数大的那个 或 MIN 集合中相同元素的分数经过weight * score 后取分数小的;
zadd zset1 100 first 200 second
zset1 = {100 first, 200 second}
zadd zset2 10 first 20 second
zset2 = {10 first, 20 second}
zinterstore zset3 2 zset1 zset2 === zinterstore zset3 zset1 zset2 AGGREGATE SUM === zinterstore zset3 WEIGHTS 1 1 AGGREGATE SUM
zset3 = {110 first, 220 second}
zinterstore zset3 2 zset1 zset2 WEIGHTS 0.01 1 AGGREGATE MAX
zset3 = {max(100 * 0.01, 10 * 1) first, max(200 * 0.01, 20 * 1) second} === {1 first, 2 second}
- 有序集合的并集运算
与 交集运算 类似,略
ZInterStore destSet setCounts zset1 zset2 [zset3 ...] [WEIGHTS weight1 weight2 [weight3 ...]] [AGGREGATE SUM | MAX | MIN]
redis基本数据结构-有序集合的更多相关文章
- 第二百九十九节,python操作redis缓存-SortSet有序集合类型,可以理解为有序列表
python操作redis缓存-SortSet有序集合类型,可以理解为有序列表 有序集合,在集合的基础上,为每元素排序:元素的排序需要根据另外一个值来进行比较,所以,对于有序集合,每一个元素有两个值, ...
- redis 系列14 有序集合对象
一. 有序集合概述 Redis 有序集合对象和集合对象一样也是string类型元素的集合,且不允许重复的成员.不同的是每个元素都会关联一个double类型的分数.redis正是通过分数来为集合中的成员 ...
- Redis学习---Redis操作之有序集合
有序集合,在集合的基础上,为每元素排序:元素的排序需要根据另外一个值来进行比较,所以,对于有序集合,每一个元素有两个值,即:值和分数,分数专门用来做排序. zadd(name, *args, **kw ...
- redis:php-redis中有序集合 zset的使用
ZSET(stored set) 和 set 一样是字符串的集合,不同的是每个元素都会关联一个 double 类型的 score .实现使用的是 skip list 和 hash table , sk ...
- redis列表和有序集合
redis中的list数据类型是可以插入重复数据的,有去重的需求的话可以用redis有序集合数据类型 Redis Zadd 命令用于将一个或多个成员元素及其分数值加入到有序集当中. 如果某个成员已经是 ...
- redis 入门之有序集合
zadd 将一个或多个 member 元素及其 score 值加入到有序集 key 当中.如果某个 member 已经是有序集的成员,那么更新这个 member 的 score 值,并通过重新插入这个 ...
- redis:order set有序集合类型的操作(有序集合)
1. order set有序集合类型的操作(有序集合) 有序集合是在无序集合的基础上加了一个排序的依据,这个排序依据叫score,因此声明一个集合为有序集合的时候要加上score(作为排序的依据) 1 ...
- (PHP)redis Zset(有序集合 sorted set)操作
/** * * Zset操作 * sorted set操作 * 有序集合 * sorted set 它在set的基础上增加了一个顺序属性,这一属性在修改添加元素的时候可以指定,每次指定后,zset会自 ...
- redis: Zset有序集合类型(七)
存值:zadd myset 1 one 取值:zrange myset 0 -1 127.0.0.1:6379> zadd myset 1 one #存值 分值为1 (integer) 1 12 ...
- 9、Redis五大数据类型---有序集合Zset(sorted set)
一.简介 zset与set异同 相同之处: 都是没有重复元素的字符串集合 不同之处: 有序集合zset的每个成员都关联了一个评分(score),这个评分(score)被用来按照从最低分到最高分的方式排 ...
随机推荐
- ❤️🔥 Solon Cloud Event 新的事务特性与应用
1.Solon Cloud Event? 是 Solon 分布式事件总线的解决方案.也是 Solon "最终一致性"分布式事务的解决方案之一 2.事务特性 事务?就是要求 Even ...
- JSON数据压缩传输(一)- 无标记数组
服务端 //需要传回前端的字段string[] fields = dto.fields.Split(','); var resluts=new List<dynamic>(); //只取前 ...
- 继承与ER图
会员是用户吗? 实体与集合 er图叫实体联系图.什么是实体?是现实中存在的事物个体,用户背后是实际存在的单个人. 对象->实体 类->实体的集合 er图描述的是实体间的联系 会员是真实存在 ...
- 【题解】P2627 [USACO11OPEN] Mowing the Lawn G
[题解]P2627 [USACO11OPEN] Mowing the Lawn G 题目跳转 数据量比较大,暴力肯定是不行的.只能考虑用动态规划的方式来做. 这道题有许多dp设计的思路,这里提供两个: ...
- win11如何调解屏幕亮度【win10刚刚升级win11】?
打开电脑后鼠标右键,点击个性化 点击系统 点击屏幕亮度 滑动按钮,调解屏幕亮度即可
- 源码分析——MyBatis与Spring整合后如何保证SqlSession线程安全
在MyBatis架构中SqlSession是提供给外层调用的顶层接口,它是MyBatis对外暴露的最重要的接口,用户通过该接口即可完成数据库的全部操作.在上文中我们明白了我们常用的Mybatis动态代 ...
- 深入理解Vue 3:计算属性与侦听器的艺术
title: 深入理解Vue 3:计算属性与侦听器的艺术 date: 2024/5/30 下午3:53:47 updated: 2024/5/30 下午3:53:47 categories: 前端开发 ...
- 【论文笔记】R-CNN系列之代码实现
代码源码 前情回顾:[论文笔记]R-CNN系列之论文理解 整体架构 由三部分组成 (1)提取特征的卷积网络extractor (2)输入特征获得建议框rois的rpn网络 (3)传入rois和特征图, ...
- ajax 请求接口实例
通过 HTTP 请求加载远程数据. jQuery 底层 AJAX 实现.简单易用的高层实现见 $.get, $.post 等.$.ajax() 返回其创建的 XMLHttpRequest 对象.大多数 ...
- bpmnjs
在 bpmn.js 中,`bpmnModeler.get()` 方法用于获取不同的模块,你可以通过这些模块来访问和操作 BPMN 模型的不同部分.以下是一些常用的模块和对应的用途: 1. **Canv ...