Redis第七弹-Set与ZSET基本操作,Set(集合特点)SADD key member(注意这个key,必须是你自定义名字,不能用key)​编辑SMEMBERS key-查询所有的key

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
云原生内存数据库 Tair,内存型 2GB
云数据库 Redis 版,经济版 1GB 1个月
简介: Redis第七弹-Set与ZSET基本操作,Set(集合特点)SADD key member(注意这个key,必须是你自定义名字,不能用key)​编辑SMEMBERS key-查询所有的key

Set(集合特点)

1.集合中元素是无序的

2.集合中的元素不可以重复

SADD key member(注意这个key,必须是你自定义名字,不能用key)

SMEMBERS key-查询所有的key中的值

spop key [count]不写的时候,随机去删除一个,写的时候,写几个我就去删除几个


SMOVE source destination member。把member从source中删除再移动到destination中(假如移动到元素在source中不存在,此时返回0表示移动失败)

SREM key member删除1个或多个member

集合间操作交集(inter   和数学上的一样),并集(union),差集(diff)

SINTERSTORE交集,并把交集存储到一个key中

SUNIONSTORE并集,把并集存储到一个key中

SDIFFSTORE-差集,存储差集(注意那个在左边,他的差集,就是从他现有的位置做差集)

set内部编码:

intset(整数集合)

为了节省空间,做的特定优化,元素均为整数,且元素个数不是很多的情况下。

hashtable(哈希表)

set应用场景:用set保存用户的标签

1.set方便算交集,易找到两个用户之间的公共标签

2.计算用户间的共同好友

3.用set统计UV

PV -page view用户每次访问服务器,每次都会产生一个PV

UV -user view每个用户访问服务器,都会产生一个UV

ZSET-有序集合(升序/降序)

排序的规则:引入的score浮点类型,按照分数大小进行升序/降序排序,使用zadd往有序结合中添加元素和分数

ZADD key score memeber(不加NX|XX选项时,member不存在,会达到新member的效果

XX:只更新当前已经存在,NX:只添加新的,老的不去处理

CH:描述返回值,返回什么信息(包括修改的个数,影响zadd返回值)

ZINCRBY key score members-针对key的元素的分数+score

ZSET-内部跳表(内部升序排列)如果分数相同则会按照元素字符串的字典序

set list添加都是O(1)但是zset添加则需要Olog(N)(因为有顺序)

redis内部存储数据的时候,按二进制方式存储的,这也意味着redis服务器并不负责字符编码

由于这里我们存储的是汉字,他是由二进制存储的,所以会\x...

redis-cli --raw(使用字符集utf-8编码方式而不是ac码)

ZCARD key-获取一个元素的个数

ZCount查找指定score区间,元素的个数(两个闭区间)

开区间的设置方法

zcount key (95,(97

zset内部会记录当前每个元素的排行次序,max -min这种

inf无穷大

-inf负无穷大

ZRANGE key start stop  [with score]-按照分数的升序排列

ZREVRANGE-按照分数的降序排列

ZRANGEBYSCORE-按照分数区间,来去查找元素。

ZPOPMAX--删除并且返回分数最高的count个元素

分数是主要因素,如果分数相同则按照字典序,调用的是通用删除函数,但是其实也可以把最后一个元素标记,直接去尾删(官方针对这个没去优化,使用的次数较少)

BZPOPMAX key [timeout]-实现类似于阻塞队列的效果

zpopmin删除有序集合中最小的元素

BZPOPMIN key删除最小元素(阻塞版本)

ZRANK获取指定元素排名

ZREVRANK-获取指定元素的排名,从后往前数

ZSCORE查询指定元素的分数

ZREM key member 移除对应元素

ZREMRANGEBYSCORE-按照指定分数区间去删除

ZINCRBY 针对元素的分数进行增加

集合间运算

inter:交集

union:并集

diff:差集

ZINTERSTORE进行交集运算后,存储在一个key中

后面的参数:

[weight]权重 aggregate <sum(用于描述分数,默认是用它,作用是求和,下图的分数,是两个key中分数求和后的分数)|MIN|MAX>

其中的最小值,最大值也同理,就不举例了

ZUNIONSTORE :获取其中并集,然后存储到key 中


相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
9天前
|
存储 NoSQL 安全
Redis系列学习文章分享---第十五篇(Redis最佳实践--设计优雅的key+合适的数据结构+持久化如何配置+慢查询问题解决)
Redis系列学习文章分享---第十五篇(Redis最佳实践--设计优雅的key+合适的数据结构+持久化如何配置+慢查询问题解决)
16 1
|
13天前
|
NoSQL Redis
蓝易云 - redis报错WRONGTYPE Operation against a key holding the wrong kind of value
解决这个问题的方法是检查你的代码,确保你对每个键使用的命令与该键的类型匹配。你可以使用 `TYPE`命令来确定一个键的类型。例如,`TYPE mykey`将返回 `mykey`的类型。
22 3
|
17天前
|
NoSQL Go Redis
如何使用 Go 和 `go-redis/redis` 库连接到 Redis 并执行一些基本操作
如何使用 Go 和 `go-redis/redis` 库连接到 Redis 并执行一些基本操作
13 1
|
22天前
|
NoSQL Redis 存储
Redis大key问题 - 优化、清理
【6月更文挑战第14天】Redis内置命令如STRLEN、LLEN等用于检测不同类型Key的大小。避免使用DEBUG OBJECT和MEMORY USAGE因高资源消耗。大Key优化包括业务设计避免大Key、数据拆分、更换存储方案、数据压缩和合理清理。清理大Key应选低峰期或分批异步进行,以减少阻塞。使用如HSCAN、SREM等命令避免一次性操作大量数据。
21 1
|
23天前
|
NoSQL Redis 容器
Redis大Key问题 - 标准、原因、查找
【6月更文挑战第13天】**大Key标准**在不同场景各异,一般string超1MB或容器超10k元素视为大;高并发场景中,string超10KB,容器超5k或整体10MB。**阿里云Redis**中,大Key可能表现为String值5MB,ZSET成员10k,或Hash总值100MB。**大Key影响**包括高读取成本、操作阻塞、存储压力不均。**产生原因**多源于业务设计、动态增长管理和程序错误。**查找大Key**可通过云服务的实时/离线统计,`redis-cli --bigkeys`或使用Redis RDB Tools分析RDB文件。注意,某些特定需求可能需额外工具。
22 1
|
2天前
|
NoSQL Java Redis
Redis16-RedisTemplate快速入门,max -idle,min-idle,max-wait,用set的方法,opsForValue().set的方法
Redis16-RedisTemplate快速入门,max -idle,min-idle,max-wait,用set的方法,opsForValue().set的方法
|
2天前
|
存储 NoSQL Java
Redis10------Set类型,存在着无序的特征存储的顺序和插入的顺序是无关的,set集合的一大特点是不可重复,在redis中支持交集插集等特殊功能,好友列表,共同关注等等
Redis10------Set类型,存在着无序的特征存储的顺序和插入的顺序是无关的,set集合的一大特点是不可重复,在redis中支持交集插集等特殊功能,好友列表,共同关注等等
|
2天前
|
存储 NoSQL Redis
Redis07命令-String类型字符串,不管是哪种格式,底层都是字节数组形式存储的,最大空间不超过512m,SET添加,MSET批量添加,INCRBY age 2可以,MSET,INCRSETEX
Redis07命令-String类型字符串,不管是哪种格式,底层都是字节数组形式存储的,最大空间不超过512m,SET添加,MSET批量添加,INCRBY age 2可以,MSET,INCRSETEX
|
27天前
|
分布式计算 NoSQL 大数据
MaxCompute产品使用合集之自定义udf连接云上vpc网络的redis获取数据的步骤是什么
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
5天前
|
存储 关系型数据库 MySQL
【Elasticsearch】在es中实现mysql中的FIND_IN_SET查询条件
【Elasticsearch】在es中实现mysql中的FIND_IN_SET查询条件
7 0