Redis 数据类型之集合、有序集合与 hash(二)|学习笔记

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介: 快速学习 Redis 数据类型之集合、有序集合与 hash(二)

开发者学堂课程【Redis 入门实战演练Redis 数据类型之集合、有序集合与 hash(二)】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/653/detail/10837


Redis 数据类型之集合、有序集合与 hash(二)


四、追加数据

追加的时候不能追加已经存在的数据

127.0.0.1:6379>SADD  set1  v3  v4(追加数据)

(integer) 3

127.0.0.1:6379>SADD  set1  v2 #没有追加成功

(integer) 0

127.0.0.1:6379> TYPE  set1

Set

127.0.0.1:6379> TYPE  set12

Set


五、查看集合的所有数据

127.0.0.1:6379 > SMEMBERS  set1

1)“v1”

2)“v2”

3)“v3”

4)“v4”

127.0.0.1:6379 > SMEMBERS  set2

1)“v4”

2)”v2”

(那么这个集合会用于哪个场景呢?)

 

六、获取集合的差集

差集:已属于 A 而不属于B的元素称为 A 与 B 的差集(已属于 set1 不属于 set2)先确定以哪个为主。

127.0.0.1:6379 >  SDIFF  set1  set2(做对比)

1)“v1”

2)“v3”

 

七、获取集合的交集

交集:已属于 A 且属于 B 的元素称为 A 与 B 的交集(求共同用户)

127.0.0.1:6379 > SINTER  set1  set2

1)“v4”

2)“v2”

(好的方法性能会快好多倍,无论有多少信息,直接将信息放入 Redis 中,然后求并集即可)

 

八、获取集合的并集

并集:已属于 A 或属于 B 的元素为称为 A 与 B 的并集(比较特殊)

127.0.0.1:6379 > SUNION  set1  set2

1)“v2”

2)“v4”

1)“v1”

2)“v3”

(使用 SUNION 计算 set1 和 set2)将用户1和用户2的列表加起来去重相加。

无论是什么,开发操作比较多。

(假如用户一有99个好友,包括张三。其他的好友都和用户二不一样。用户二有120个好友,其中也包括张三,其他的和用户一都不相同。那么并集是:218.相加去重)

无论是集合列表还是字符号主要是开发考虑和开发操作比较多,主要是为了熟悉数据类型。

 

九、有序集合(sorted set)

Redis 有序集合和集合一样也是 string类型元素的集合,且不允许重复的成员,不同的是每个元素都会关联一个 double (双精度浮点型)类型的分数。(根据访问的热度不同会产生一个评分,根据评分对其进行排序)redis 正是通过该分数来为集合中的成员进行以小到大的排序,有序集合的成员是唯一的(不同视频的点击率可以作为它的分数,将点击率进行排序,从高到低,做页面数据,将最优秀或最喜爱的商品放在前面),但分数(score)却可以重复,集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1), 集合中最大的成员数为 2^32-1(4294967295,每个集合可存储40多亿个成员)。

复杂度:数据的总数有多少不会根据数据量的增长而导致查询时间的增长。

(在1000里面找一个值和在10000里面找一个值是一样的时间。)

这就是它的优势。

1668264484373.jpg

 

十、生成有序集合

127.0.0.1:6379>ZADD zset1 1(分值) v1(加信息)

(integer)1

127.0.0.1:6379>ZADD zset1 2 v2

(integer)1

127.0.0.1:6379> ZADD zset1 2 v3

(integer)1

127.0.0.1:6379> ZADD zset1 3 v4

(integer)1

127.0.0.1:6379> TYPE zset1

Zset

127.0.0.1:6379> TYPE zset2

zset

一次生成多个数据:(和生成列表插入数据比较类似)

192.168.7.101:6379>ZADD zset2 1 v1 (一对)2 v2 3 v3 4v45 v5

(integer)5(需要在每个数据前面加上分数或者次数,成对)

 

十一、获取集合的长度数(看列表中的数据长度)

127.0.0.1:6379>ZCARD zset1

(integer) 4

127.0.0.1:6379> ZCARD zset?

(integer)4

(对于开发列表很重要,因为开发列表数据不是任意拿的,是一个一个拿的,或者拿到列表的总长度,然后全部获取出来。为什么?避免产生多余的链接溢出。否则会出现错误。OUT OF RANGE,所以需要拿到总长度)

 

十二、基于索引返回数值

怎么通过下标获取数据?

第一个,第二个等数据都会有隐藏的下标,从0开始依次往后。

127.0.0.1:6379> ZRANGE  zset1 0(开始) 3(结束)这是下标的范围

1)“v2"

2)“v3"

3) "V4"

如果想要取一个固定的数据,那么就要固定它的开头和结尾。

127.0.0.1:6379> ZRANGE zset1 0 2

1)“V1"

2)“v2”

3) “V3"

127.0.0.1:6379> ZRANGE zset1 2 2

1) "V3"

对于开发的时候需要注意

 

十三、返回某个数值

127.0.0.1:6379> ZRANK zset1 v2(不知道的下标位)

(integer) 1

127.0.0.1:6379> ZRANK zset1 v3

(integer) 3

 

十四、集合排行案例(实用场景)

192.168.7.104:6379> ZADD paihangbang 90 nezha 199 zhanlang 60 zhuluoji 30 gangtiexia(电影名称)

(integer) 4

192.168.7.101:6379> ZRANGE  paihangbang 0(第一个) -1(最后一个)#是示集合内所有的 key 无论有序集合有多长,-1都可以将最后一个值取出来。

1)"gangtiexia"

2)"zhuluoji"

3) "nezha"

4) "zhanlang"(不知道分数)

192-166.7-104:6379~ ZREVRANGE paihangbang o -1 withscores #显示指定集合内所有 key 和得分情况

1)"zhuluoji"

2)“60"

3)"nezha"

4)*90"

5) "zhanlang"

6) “199"

自动排行,根据频数或者销量。取消了之后不会消失。

有些程序会根据页面排行。例如:根据频数进行排行。(需要具有评分标准)

1668264570710.jpg

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
5月前
|
存储 NoSQL API
【Redis 系列】redis 学习四,set 集合,hash 哈希,zset 有序集合初步认知
【Redis 系列】redis 学习四,set 集合,hash 哈希,zset 有序集合初步认知
|
8月前
|
存储 NoSQL Redis
无序集合的利器:深入了解 Redis 的 Set 数据类型
在现代的应用程序中,对于处理独特值、快速判断成员关系等需求,无序集合是一种重要的数据结构。Redis,作为一款高性能的内存数据库,提供了多种数据类型来满足不同的需求。在本文中,我们将着重介绍 Redis 的 Set 数据类型,探讨其特性、用法以及在实际应用中的优势。
120 0
|
8月前
|
存储 缓存 NoSQL
键值对的集合:深入了解 Redis 的 Hash 数据类型
在现代的应用程序中,复杂数据结构的存储和快速访问对于高效的数据管理至关重要。Redis,作为一款高性能的内存数据库,提供了多种数据类型来满足不同的需求。在本文中,我们将着重介绍 Redis 的 Hash 数据类型,探讨其特性、用法以及在实际应用中的优势。
71 0
|
8月前
|
消息中间件 存储 NoSQL
有序集合的选择:深入了解 Redis 的 List 数据类型
在现代的应用程序中,数据的有序性和灵活性对于处理实时事件、任务队列等场景至关重要。Redis,作为一款高性能的内存数据库,提供了多种数据类型来满足不同的需求。在本文中,我们将重点介绍 Redis 的 List 数据类型,探讨其特性、用法以及在实际应用中的优势。
93 0
|
8月前
|
存储 缓存 NoSQL
【Redis】集合(Hash、List、Set、ZSet)的底层实现原理
【Redis】集合(Hash、List、Set、ZSet)的底层实现原理
|
11月前
|
存储 NoSQL 算法
【Redis基础】redis基础知识总结——数据类型(字符串,列表,集合,哈希,有序集合)
【Redis基础】redis基础知识总结——数据类型(字符串,列表,集合,哈希,有序集合)
|
存储 NoSQL Redis
一步一步学习Redis——五大数据类型之有序集合(ZSet)的相关命令
一步一步学习Redis——五大数据类型之有序集合(ZSet)的相关命令
一步一步学习Redis——五大数据类型之有序集合(ZSet)的相关命令
|
存储 缓存 NoSQL
Redis 数据类型之集合、有序集合与 hash(三)|学习笔记
快速学习 Redis 数据类型之集合、有序集合与 hash(三)
96 0
Redis 数据类型之集合、有序集合与 hash(三)|学习笔记
|
NoSQL Redis 开发者
Redis 数据类型之集合、有序集合与 hash(一)|学习笔记
快速学习 Redis 数据类型之集合、有序集合与 hash(一)
81 0
Redis 数据类型之集合、有序集合与 hash(一)|学习笔记
|
缓存 分布式计算 NoSQL
Redis_集合_有序集合操作_3|学习笔记
快速学习 Redis_集合_有序集合操作_3
103 0