IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> Redis知识整理(六) -- Sorted Set/ZSet类型 -> 正文阅读

[数据结构与算法]Redis知识整理(六) -- Sorted Set/ZSet类型

Redis知识整理(六) – Sorted Set/ZSet类型

一、类型特征

去重且排序

set保证去重

排序指的是值的排序

物理内存为左小右大

二、数据类型

key - value

value的类型为zset

则代表value的元素需要一个score(分数),作为排序的基准

同时索引依然正常存在 – 正负索引 0/-3 1/-2 2/-1

score都为1的情况下 按照名称排序

三、常用命令

> zadd 8 apple 2 banana 3 orange
(integer) 3

# 查看结果
> zrange k1 0 -1
1) "banana"
2) "orange"
3) "apple"
> zrange k1 0 -1 withscores
1) "banana"
2) "2"
3) "orange"
4) "3"
5) "apple"
6) "8"

# 根据score取结果
> zrangebyscore k1 3 8 
1) "orange"
2) "apple"

# 反方向取结果 rev代表反方向
> zrevrange k1 0 1
1) "apple"
2) "orange"

# 查看元素分值
> zscore k1 apple
"8"

# 查看元素排名
> zrank k1 apple
(integer) 2

# 数值计算
> zincrby k1 2.5 banana
"4.5"
> zrange k1 0 -1 withscores
1) "orange"
2) "3"
3) "banana"
4) "4.5"
5) "apple"
6) "8"

# 取并集
> flushall
> zadd k1 80 tom 60 sean 70 baby
> zadd k2 60 tom 100 sean 40 xxoo

# 默认权重 默认计算方式
> zunionstore k3 2 k1 k2 
(integer) 4
# 权重默认是1 score累加
> zrange k3 0 -1 withscores
1) "xxoo"
2) "40"
3) "baby"
4) "70"
5) "tom"
6) "140"
7) "sean"
8) "160"

# 权重k1为1 k2为0.5 score加
> zunionstore k4 2 k1 k2 weights 1 0.5
(integer) 4
> zrange k4 0 -1 withscores
1) "xxoo"
2) "20"
3) "baby"
4) "70"
5) "tom"
6) "110"
7) "sean"
8) "110"

# 不配置权重 配置score处理方式
> zunionstore k5 2 k1 k2 aggregate max
(integer) 4
> zrange k4 0 -1 withscores
1) "xxoo"
2) "40"
3) "baby"
4) "70"
5) "tom"
6) "80"
7) "sean"
8) "100"

四、注意事项

1. 取值方向

zrange 一定是从小到大取结果

zrevrange则是从大到小取结果

2. 集合运算

运算方式默认是累加

  • 可以配置 aggregate sum|min|max

权重默认是1

  • 配置weights的话 对应key的所有score都??权重

五、应用场景

1. 排行榜

利用zset存储 zrevrange倒序取 score即为播放量

六、数据结构 – 跳表(skiplist)

链表基础上的封装

每一个链表元素中除了存储前后节点的指针之外,还存储了向上的指针,指向上一级

每一级元素数量比上层少 比下层多,有点类似于二叉树的左右叶子节点

每一级元素之间通过指针指向

新的元素插入时,从上至下依次寻找左右元素,直到最下一层找到对应位置,修改前后节点指针并指向前后节点

每个新元素插入时,随机造层

空间换时间

平均值相对二叉树 红黑树更稳定

在这里插入图片描述

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-08-05 17:36:08  更:2021-08-05 17:36:40 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 18:20:19-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码