当前位置: 首页 > backend >正文

Redis 集合、有序集合与通用命令详解

注:本篇为苍穹外卖学习笔记

Redis 集合、有序集合与通用命令详解

本文将深入讲解 Redis 中 集合(Set)有序集合(Sorted Set) 以及 通用操作命令,通过实际案例演示它们的核心用法。

一、集合(Set)操作命令

集合存储唯一、无序的元素,支持高效的集合运算(交集、并集等)。

核心命令与示例

 
# 添加/删除元素
sadd tags "python" "java"       # 添加元素,返回成功插入数量(如 2)
srem tags "java"                # 删除元素,返回删除数量(如 1)# 查询操作
smembers tags                   # 返回所有元素(如 ["python"])
sismember tags "python"         # 检查元素是否存在,返回 1(存在)或 0# 集合运算
sadd group1 "a" "b" "c"  
sadd group2 "b" "c" "d"  
sinter group1 group2            # 交集,返回 ["b", "c"]  
sunion group1 group2            # 并集,返回 ["a","b","c","d"]
sdiff group1 group2             # 差集(group1有而group2无),返回 ["a"]# 随机操作
spop tags                       # 随机移除并返回一个元素(如 "python")
scard tags                      # 返回集合元素总数

应用场景

  • 标签系统(文章标签、商品分类)
  • 好友关系(共同关注、可能认识的人)
  • 唯一数据去重(抽奖用户ID存储)

二、有序集合(Sorted Set)操作命令

有序集合存储唯一元素,每个元素关联一个 score(分数),按分数排序。

核心命令与示例

 
# 添加元素(格式:zadd 键 score1 成员1 score2 成员2)
zadd leaderboard 95 "userA" 80 "userB"  
zadd leaderboard 90 "userC"      # 更新userC分数(若存在则覆盖)# 范围查询
zrange leaderboard 0 -1          # 按分数升序返回所有成员 ["userB", "userC", "userA"]  
zrevrange leaderboard 0 -1       # 降序返回 ["userA", "userC", "userB"]  
zrangebyscore leaderboard 85 100 # 返回分数在 [85,100] 的成员 ["userC", "userA"]# 排名与分数操作
zrank leaderboard "userA"        # 返回升序排名(从0开始),此处返回 2  
zrevrank leaderboard "userA"     # 降序排名,返回 0(第一名)  
zscore leaderboard "userB"       # 返回分数 80# 删除操作
zrem leaderboard "userB"         # 移除指定成员  
zremrangebyrank leaderboard 0 0  # 删除升序排名第0的元素(最低分)

应用场景

  • 实时排行榜(游戏积分、热搜榜单)
  • 延时队列(用分数存执行时间戳)
  • 优先级任务调度(按权重调度任务)

三、通用操作命令

适用于所有 Redis 数据类型的常用命令。

核心命令与示例

 
# 键管理
keys user:*                     # 匹配所有以 user: 开头的键(生产环境慎用)  
del user:1001                   # 删除键,返回删除数量(如 1)  
exists user:1001                # 判断键是否存在,返回 0 或 1  
expire cache:data 3600          # 设置3600秒后过期  
ttl cache:data                  # 查看剩余生存时间(秒),-1为永久,-2为已过期  # 数据类型查询
type user:1001                  # 返回键的类型(如 hash/set/zset 等)  # 批量操作
scan 0 match user:* count 10    # 分页迭代查询键(安全替代 keys 命令)  # 数据库操作
select 1                        # 切换到1号数据库(默认0-15)  
flushdb                         # 清空当前数据库  
flushall                        # 清空所有数据库(高危操作!)

注意事项

  • KEYS 可能阻塞服务,生产环境推荐使用 SCAN
  • FLUSHALL 会删除所有数据,需谨慎使用

四、数据结构对比速查

结构类型核心特性典型场景
Set唯一元素、集合运算标签系统、共同好友
Sorted Set有序元素、分数排序排行榜、优先级任务
通用命令跨类型操作键管理、数据清理

通过合理运用这些命令,可以高效解决去重、排序、系统管理等常见需求。建议通过 Redis 官方提供的 redis-cli 工具进行实践练习。

http://www.xdnf.cn/news/9193.html

相关文章:

  • 实验设计与分析(第6版,Montgomery)第3章单因子实验:方差分析3.11思考题3.6 R语言解题
  • HTML5 全面知识点总结
  • Point-wise vs Pair-wise vs List-wise 简述
  • 系统开发和运行知识
  • 什么场景下能够用到根据id批量查询用户
  • sockaddr_in
  • 08_预处理与缩放
  • 关于 smali:1. Smali 基础语法入门
  • 一款不错的嵌入式开发自动化测试平台
  • Trivy 镜像漏洞扫描:从零入门到实战指南
  • java基础(面向对象进阶高级)泛型(API一)
  • 智能AI之常用协议普及
  • HarmonyOS优化应用文件上传下载慢问题性能优化
  • CMU-15445(5)——PROJECT#1-BufferPoolManager-Task#3
  • kali切换为中文
  • 输入一串字符,统计其中字母的个数
  • Python5.26打卡(day27)
  • 【SQL server】 SQL子查询:与连接的区别、类型划分、相关与非相关子查询对比
  • YOLOv12增加map75指标
  • [QMT量化交易小白入门]-五十七、ETF历史行情分钟线下载
  • 25盘古石初赛wp(部分)
  • Java----自动装箱和自动拆包 与 泛型
  • 大模型的检索增强生成综述研究
  • 用python写节奏大师小游戏
  • TMS320F28388使用sysconfig配置SCI通信(RS485+FIFO+Modbus)
  • 第4章-操作系统知识
  • 《反事实棱镜:折射因果表征学习的深层逻辑》
  • SymPy | 其他未知数表示方程中的某一未知数
  • 测绘技术重塑低空经济格局
  • 火语言UI组件--标记