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

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 工具进行实践练习。

相关文章:

  • [Vue] ref及其底层原理
  • 单片机(MCU)的 IO 口静电、浪涌、电压异常等保护
  • 【机器学习基础】机器学习入门核心算法:支持向量机(SVM)
  • 大模型的开发应用(四):深度学习模型量化与QLoRA微调
  • WordPress免费网站模板下载
  • Android studio 查看aar源码出现/* compiled code */
  • 三天掌握PyTorch精髓:从感知机到ResNet的快速进阶方法论
  • LeetCodeHot100_0x09
  • 大模型(6)——语义分割
  • 三十、面向对象底层逻辑-SpringMVC九大组件之HandlerInterceptor接口设计
  • 程序环境与预处理
  • Abstract Factory(抽象工厂)
  • FPGA中的“BPI“指什么
  • CPU服务器的主要功能有哪些?
  • 【Java Web】5.Mybatis
  • 零基础远程连接课题组Linux服务器,安装anaconda,配置python环境(换源),在服务器上运行python代码【2/3 适合小白,步骤详细!!!】
  • 基于Python爬虫技术的对歌曲评论数据可视化分析系统
  • pythonday30
  • Linux基础I/O【文件理解与操作】
  • 嵌入式高级工程师面试全解:从 malloc 到 kernel panic 的系统知识梳理
  • 中网建站/长沙网络推广外包
  • 网站logo更换/网站收录提交工具
  • 怎么区分模板网站/百度sem运营
  • 做网站开发的有哪些公司/成品短视频app下载有哪些
  • 西安网站建设方案外包/央视新闻的新闻
  • 网站建设群/app拉新推广代理