Redis开发运维实践数据操作有序集合操作

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介:

2.5.1 添加元素


zadd key score member

添加元素到集合,元素在集合中存在则更新对应score。


2.5.2 删除元素


zrem key member

1表示成功,如果元素不存在返回0

zremrangebyrank key min max

删除集合中排名在给定区间的元素

zremrangebyscore key min max

删除集合中score在给定区间的元素


2.5.3 增加score


zincrby key incr member

增加对应member的score值,然后移动元素并保持skip list保持有序。返回更新后的score值,可以为负数递减


2.5.4 获取排名


zrank key member

返回指定元素在集合中的排名(下标,注意不是分数),集合中元素是按score从小到大排序的

zrevrank key member

同上,但是集合中元素是按score从大到小排序


2.5.5 获取排行榜


zrange key start end

类似lrange操作从集合中去指定区间的元素。返回的是有序结果

zrevrange key start end 同上,返回结果是按score逆序的,如果需要得分则加上withscores

注:index从start到end的所有元素


2.5.6 返回给定分数区间的元素


zrangebyscore key min max

可以指定inf为无穷


2.5.7 返回集合中score在给定区间的数量


zcount key min max


2.5.8 返回集合中元素个数


zcard key


2.5.9 返回给定元素对应的score


zscore key element


2.5.10 评分的聚合


ZUNIONSTORE destination numkeys key [key ...] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX]

例如:


127.0.0.1:6379> zrangebyscore votes -inf inf withscores

1) "sina"

2) "1"

3) "google"

4) "5"

5) "baidu"

6) "10"

127.0.0.1:6379> zrangebyscore visits -inf inf withscores

1) "baidu"

2) "1"

3) "google"

4) "5"

5) "sina"

6) "10"

127.0.0.1:6379> zunionstore award 2 visits votes weights 1 2 aggregate sum

(integer) 3

127.0.0.1:6379> zrangebyscore award -inf inf withscores

1) "sina"

2) "12"

3) "google"

4) "15"

5) "baidu"

6) "21"

一个小技巧是如果需要对评分进行倍加,则使用如下的方法:

127.0.0.1:6379>zrangebyscore visits -inf inf withscores

1) "baidu"

2) "1"

3) "google"

4) "5"

5) "sina"

6) "10"

127.0.0.1:6379>zunionstore visits 1 visits weights 2

(integer) 3

127.0.0.1:6379>zrangebyscore visits -inf inf withscores

1) "baidu"

2) "2"

3) "google"

4) "10"

5) "sina"

6) "20"


**本文为《Redis开发运维实践指南》内容,该书作者为黄鹏程,已授权云栖社区转载。**

相关实践学习
基于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
相关文章
|
13天前
|
NoSQL Redis
Redis的数据淘汰策略有哪些 ?
Redis 提供了 8 种数据淘汰策略,分为淘汰易失数据和淘汰全库数据两大类。易失数据淘汰策略包括:volatile-lru、volatile-lfu、volatile-ttl 和 volatile-random;全库数据淘汰策略包括:allkeys-lru、allkeys-lfu 和 allkeys-random。此外,还有 no-eviction 策略,禁止驱逐数据,当内存不足时新写入操作会报错。
46 16
|
13天前
|
缓存 NoSQL 关系型数据库
Redis和Mysql如何保证数据⼀致?
在项目中,为了解决Redis与Mysql的数据一致性问题,我们采用了多种策略:对于低一致性要求的数据,不做特别处理;时效性数据通过设置缓存过期时间来减少不一致风险;高一致性但时效性要求不高的数据,利用MQ异步同步确保最终一致性;而对一致性和时效性都有高要求的数据,则采用分布式事务(如Seata TCC模式)来保障。
50 14
|
13天前
|
存储 NoSQL 算法
Redis分片集群中数据是怎么存储和读取的 ?
Redis集群采用哈希槽分区算法,共有16384个哈希槽,每个槽分配到不同的Redis节点上。数据操作时,通过CRC16算法对key计算并取模,确定其所属的槽和对应的节点,从而实现高效的数据存取。
42 13
|
13天前
|
存储 NoSQL Redis
Redis的数据过期策略有哪些 ?
Redis 采用两种过期键删除策略:惰性删除和定期删除。惰性删除在读取键时检查是否过期并删除,对 CPU 友好但可能积压大量过期键。定期删除则定时抽样检查并删除过期键,对内存更友好。默认每秒扫描 10 次,每次检查 20 个键,若超过 25% 过期则继续检查,单次最大执行时间 25ms。两者结合使用以平衡性能和资源占用。
36 11
|
1月前
|
消息中间件 缓存 NoSQL
Redis 是一个高性能的键值对存储系统,常用于缓存、消息队列和会话管理等场景。
【10月更文挑战第4天】Redis 是一个高性能的键值对存储系统,常用于缓存、消息队列和会话管理等场景。随着数据增长,有时需要将 Redis 数据导出以进行分析、备份或迁移。本文详细介绍几种导出方法:1)使用 Redis 命令与重定向;2)利用 Redis 的 RDB 和 AOF 持久化功能;3)借助第三方工具如 `redis-dump`。每种方法均附有示例代码,帮助你轻松完成数据导出任务。无论数据量大小,总有一款适合你。
77 6
|
12天前
|
缓存 NoSQL 关系型数据库
大厂面试高频:如何解决Redis缓存雪崩、缓存穿透、缓存并发等5大难题
本文详解缓存雪崩、缓存穿透、缓存并发及缓存预热等问题,提供高可用解决方案,帮助你在大厂面试和实际工作中应对这些常见并发场景。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:如何解决Redis缓存雪崩、缓存穿透、缓存并发等5大难题
|
13天前
|
存储 缓存 NoSQL
【赵渝强老师】基于Redis的旁路缓存架构
本文介绍了引入缓存后的系统架构,通过缓存可以提升访问性能、降低网络拥堵、减轻服务负载和增强可扩展性。文中提供了相关图片和视频讲解,并讨论了数据库读写分离、分库分表等方法来减轻数据库压力。同时,文章也指出了缓存可能带来的复杂度增加、成本提高和数据一致性问题。
【赵渝强老师】基于Redis的旁路缓存架构