论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
数据库
›
Mysql
›
集合(Set)和有序集合(ZSet)的基本利用方法详解【Redis】 ...
集合(Set)和有序集合(ZSet)的基本利用方法详解【Redis】
天空闲话
金牌会员
|
2025-2-14 04:30:38
|
显示全部楼层
|
阅读模式
楼主
主题
866
|
帖子
866
|
积分
2598
一. Redis中的集合(Set)
Set是String类型的无序集合。集合成员是唯一的,重复的数据不能出现在集合中。
1.1基本的一些操纵
1.1.1 smembers查看集合中的所有成员
Redis Smembers 下令返回集合中的所有的成员。 不存在的集合 key 被视为空集合。
先添加多个成员:
127.0.0.1:6379> sadd s1 a 1 a b 2 3 5
(integer) 6
复制代码
利用smembers下令查看,可以看出来是乱序的。
127.0.0.1:6379> smembers s1
1) "2"
2) "a"
3) "1"
4) "5"
5) "b"
6) "3"
复制代码
1.1.2 scard删除成员数量
Redis Scard 下令返回集合中元素的数量。
利用srem可以删除指定的值。
127.0.0.1:6379> srem s1 a 1
(integer) 2
复制代码
利用scard查看一下现在剩余的成员数量:
之前存储了6个,删除了俩个,现在只剩下了4个。
1.1.3 smove移动成员
Redis Smove下令将指定的成员元素从源集合移动到目标集合。SMOVE是原子操纵。如果源集合不存在或不包含指定的成员元素,则SMOVE下令不执行任何操纵,只返回0。否则,将从源集合中删除成员元素并将其添加到目标集合中。当目标集已经包含成员元素时,SMOVE下令只需从源集中删除成员元素。当源或目标不是集合类型时,将返回错误。
利用smove语句将s1里的2移动到s2里面。
127.0.0.1:6379> smove s1 s2 2
(integer) 1
复制代码
1.1.4 sinterstore 存储俩个集合的交集
Redis Sinterstore 下令将给定集合之间的交集存储在指定的集合中。如果指定的集合已经存在,则将其覆盖。
先利用sadd将s1里面添加5个成员: 0 9 8 7 6
给s2添加5个成员:0 9 4 6 3
我们可以看出,s1和s2的交集是0 9 6 3 :3是因为s1原来里面含有3。
127.0.0.1:6379> sadd s1 0 9 8 7 6
(integer) 5
127.0.0.1:6379> sadd s2 0 9 4 6 3
(integer) 5
复制代码
我们利用 sinterstore 存储俩个集合的交集:
127.0.0.1:6379> sinterstore s3 s1 s2
(integer) 4
复制代码
我们利用smembers,显示s3里面的成员值:
127.0.0.1:6379> smembers s3
1) "0"
2) "3"
3) "6"
4) "9"
复制代码
二.Redis中的有序集合(ZSet)
Zset是Redis提供的最独特的数据类型之一。起首,它是一个集合,这确保了内部值的唯一性。其次,它为每个值添加一个分数属性,通过对分数进行排序来实现排序。例如,zset结构用于存储学生的分数。值表示学生的ID,分数是测试分数。我们可以根据分数对成绩进行排序,以获得学生的排名。
2.1 基本的一些操纵
2.1.1 zadd添加1到多个成员
Redis Zadd下令用于将一个或多个成员元素及其分数添加到有序集。
如果成员已经是有序集的成员,请更新该成员的分数值,然后重新插入成员元素以确保该成员处于正确的位置。
小数可以是整数值或双精度浮点数。
如果有序集密钥不存在,请创建一个空的有序集并执行ZADD操纵。
如果键存在但不是有序集类型,则返回错误。
注意:在Redis 2.4之前,ZADD一次只能添加一个元素。
我们增长一个z1给其赋值:ff为100分,aa为90分,nn为110分以此为例。
2.1.2 zcount 返回指定分数区间的成员数量
Redis Zcount 下令用于计算有序集合中指定分数区间的成员数量。
127.0.0.1:6379> zcount z1 -inf (110
(integer) 3
复制代码
2.1.3 zcard 返回指定成员数量
Redis Zcard 下令用于计算集合中元素的数量。
127.0.0.1:6379> zcard z1
(integer) 4
复制代码
总结
本文详细介绍了Redis中的集合(Set)和有序集合(ZSet)两种数据结构的基本概念和常用操纵。
Redis中的集合(Set)
:
Set是无序的、成员唯一的集合,实用于需要去重而且不关心元素顺序的场景。
介绍了几个常用下令:smembers(查看集合成员)、scard(返回集合成员数量)、srem(删除指定成员)、smove(移动成员至另一个集合)和sinterstore(存储多个集合的交集到另一个集合)等。
示例操纵展示了怎样管理和操纵集合成员,夸大了Set的无序性以及其成员的唯一性。
Redis中的有序集合(ZSet)
:
ZSet是基于分数(score)进行排序的集合,实用于需要排序的场景,如排行榜、优先级队列等。
介绍了zadd(添加成员及其分数)、zcount(返回指定分数区间内的成员数量)和zcard(返回集合成员数量)等常用下令。
示例操纵展示了怎样根据分数对元素进行排序,并利用分数区间查询成员数量。
通过本文,读者可以对Redis中的Set和ZSet有一个清晰的理解,把握其常见下令的利用方法,并能够在实际项目中有效地利用这两种数据结构。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
天空闲话
金牌会员
这个人很懒什么都没写!
楼主热帖
css过渡样式
Mysql终端Terminal操作
C语言执行过程
【数据库】数据库课程设计一一疫苗接种 ...
编程能力提升系列:1. 二维矩阵的最大 ...
Java EnumMap values()方法具有什么功 ...
云娜:从计算、存储角度,谈网易数据治 ...
MySQL数据库设计概念(多表查询&事务操 ...
罗景:连接效率优化实践
quarkus数据库篇之三:单应用同时操作 ...
标签云
挺好的
服务器
快速回复
返回顶部
返回列表