news 2026/5/10 10:31:09

Redis 常见数据类型之全局通用命令详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Redis 常见数据类型之全局通用命令详解

Redis 常见数据类型(一):全局通用命令详解

Redis 作为当下最热门的高性能键值数据库,它的 5 种核心数据结构是我们开发和运维的重中之重。想要用好 Redis,先得把 “通用钥匙” 摸透 —— 也就是对所有 key 都生效的全局命令。今天我们就从预备知识入手,把这些基础命令讲得明明白白,为后面深入学习数据结构打好地基。


一、预备知识:为什么要先学全局命令?

在正式介绍 5 种数据结构之前,了解 Redis 的全局命令、数据结构和内部编码、单线程命令处理机制,能帮我们解决两个核心痛点:

  1. 告别死记硬背:Redis 命令上百个,但很多命令逻辑高度通用,理解底层机制后,学习效率会大幅提升。

  2. 避免踩坑翻车:Redis 不是万能的,有些命令和数据结构使用不当,可能会对 Redis 服务或业务应用造成致命伤害。

Redis 的所有数据结构,本质上都是 “键值对” 中的 “值”,而针对 “键” 的操作,有一套所有数据结构都通用的命令,我们一个一个来看。


二、KEYS:按模式匹配查找 key

KEYS命令可以返回所有满足指定模式(pattern)的 key,支持通配符匹配,是批量查找 key 的利器。

通配符规则

  • ?:匹配单个字符,比如h?llo能匹配hellohallohxllo

  • \*:匹配任意多个字符(包括 0 个),比如h\*llo能匹配hlloheeeello

  • \[\]:匹配指定范围内的单个字符,比如h\[ae\]llo匹配hellohallo,但不匹配hillo

  • \[^\]:匹配不在指定范围内的单个字符,比如h\[^e\]llo匹配hallohbllo,但不匹配hello

  • \[a\-b\]:匹配 a 到 b 之间的单个字符,比如h\[a\-b\]llo匹配hallohbllo

基础信息

  • 语法:KEYS pattern

  • 有效版本:Redis 1.0.0 及以上

  • 时间复杂度:O (N),N 为数据库中 key 的总数

  • 返回值:匹配 pattern 的所有 key 列表

使用示例

# 批量设置3个keyredis>MSET firstname Jack lastname Stuntman age35"OK"# 匹配包含name的keyredis>KEYS *name*1)"firstname"2)"lastname"# 匹配以a开头、后接两个字符的keyredis>KEYS a??1)"age"# 匹配所有key(线上环境慎用!)redis>KEYS *1)"age"2)"firstname"3)"lastname"

⚠️ 注意:KEYS \*会遍历所有 key,在 key 数量极多的生产环境中执行,会阻塞 Redis 主线程,导致服务短暂不可用,线上环境一定要避免直接使用。


三、EXISTS:判断 key 是否存在

EXISTS命令用来检查一个或多个 key 是否存在,是我们操作 key 前常用的前置校验命令。

基础信息

  • 语法:EXISTS key \[key \.\.\.\]

  • 有效版本:Redis 1.0.0 及以上

  • 时间复杂度:O (1)

  • 返回值:存在的 key 的数量(支持同时判断多个 key)

使用示例

# 设置一个keyredis>SET key1"Hello""OK"# 判断单个key是否存在redis>EXISTS key1(integer)1# 1表示存在# 判断不存在的keyredis>EXISTS nosuchkey(integer)0# 0表示不存在# 同时判断多个keyredis>SET key2"World""OK"redis>EXISTS key1 key2 nosuchkey(integer)2# 只有key1和key2存在,返回2

四、DEL:删除指定的 key

DEL命令用于删除一个或多个已存在的 key,支持批量删除,执行效率很高。

基础信息

  • 语法:DEL key \[key \.\.\.\]

  • 有效版本:Redis 1.0.0 及以上

  • 时间复杂度:O (1)

  • 返回值:成功删除的 key 的数量

使用示例

# 设置两个keyredis>SET key1"Hello""OK"redis>SET key2"World""OK"# 批量删除key1、key2和不存在的key3redis>DEL key1 key2 key3(integer)2# 成功删除2个key

五、EXPIRE & TTL:给 key 设置过期时间

Redis 支持给 key 设置过期时间,到期后 key 会被自动删除,这两个命令是实现过期机制的核心。

1. EXPIRE:设置 key 的过期时间

EXPIRE命令为指定的 key 添加秒级的过期时间(TTL,Time To Live)。

  • 语法:EXPIRE key seconds

  • 有效版本:Redis 1.0.0 及以上

  • 时间复杂度:O (1)

  • 返回值:1表示设置成功,0表示 key 不存在或设置失败

2. TTL:获取 key 的剩余过期时间

TTL命令可以查询 key 的剩余过期时间(秒级)。

  • 语法:TTL key

  • 有效版本:Redis 1.0.0 及以上

  • 时间复杂度:O (1)

  • 返回值:

    • 正数:剩余的秒数

    • \-1:key 存在但没有设置过期时间

    • \-2:key 不存在

使用示例

# 设置一个key并给它设置10秒过期redis>SET mykey"Hello""OK"redis>EXPIRE mykey10(integer)1# 查看剩余过期时间redis>TTL mykey(integer)10

💡 补充:EXPIRETTL都有毫秒级的对应版本:PEXPIREPTTL,用法完全一致,只是时间单位换成毫秒。

过期机制示意图

我们可以用时间轴来理解 key 的过期过程:

时间轴 → |------- set key value ----|---- get key(能拿到值)----|---- Redis淘汰key(get返回nil) | | |-- expire key n(设置过期时间n秒)--|
  • key 设置过期时间后,会在当前时间 + 过期时间的节点被标记为过期

  • 过期的 key 不会立即被删除,Redis 会通过定期删除和惰性删除的策略清理它们


六、TYPE:查看 key 的数据类型

Redis 支持多种数据结构,TYPE命令可以快速查看一个 key 对应的值的类型,帮我们避免命令使用错误。

基础信息

  • 语法:TYPE key

  • 有效版本:Redis 1.0.0 及以上

  • 时间复杂度:O (1)

  • 返回值:key 的数据类型,包括none(key 不存在)、stringlistsetzsethashstream

使用示例

# 设置不同类型的keyredis>SET key1"value"# 字符串类型"OK"redis>LPUSH key2"value"# 列表类型(integer)1redis>SADD key3"value"# 集合类型(integer)1# 查看类型redis>TYPE key1"string"redis>TYPE key2"list"redis>TYPE key3"set"

七、小结:全局命令的核心价值

这几个全局命令,是我们和 Redis 交互的 “基础操作手册”:

  • KEYS帮我们批量查找 key,EXISTS帮我们校验 key 是否存在

  • DEL实现 key 的删除,EXPIRE/TTL实现 key 的生命周期管理

  • TYPE帮我们快速识别 key 的数据类型,避免命令用错

它们不仅是后续学习 5 种数据结构的热身,更是 Redis 日常运维和业务开发中高频使用的命令。下一篇我们就开始深入 Redis 最基础的数据结构 —— 字符串(String),聊聊它的用法和应用场景。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/10 10:25:50

如何快速掌握AMD Ryzen处理器调试:3步上手SMUDebugTool完整教程

如何快速掌握AMD Ryzen处理器调试:3步上手SMUDebugTool完整教程 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: h…

作者头像 李华
网站建设 2026/5/10 10:23:35

ROS环境配置疑难:从“roscore not found”到成功启动的深度排障指南

1. 当roscore命令消失时:理解ROS的核心组件 第一次在Ubuntu上安装完ROS后,兴奋地输入roscore却看到"command not found"的提示,这种挫败感我太熟悉了。这个看似简单的错误背后,其实隐藏着ROS软件包管理的核心机制。让我…

作者头像 李华
网站建设 2026/5/10 10:19:40

百度网盘提取码一键获取:3秒破解资源密码的终极免费方案

百度网盘提取码一键获取:3秒破解资源密码的终极免费方案 【免费下载链接】baidupankey 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾经为了一个百度网盘提取码,在网页间反复切换,浪费了宝贵的15分钟&#xff1…

作者头像 李华
网站建设 2026/5/10 10:18:32

Noto Emoji终极指南:一站式解决跨平台表情符号显示难题

Noto Emoji终极指南:一站式解决跨平台表情符号显示难题 【免费下载链接】noto-emoji Noto Emoji fonts 项目地址: https://gitcode.com/gh_mirrors/no/noto-emoji 在数字交流日益频繁的今天,你是否经常遇到表情符号显示不一致的困扰?同…

作者头像 李华
网站建设 2026/5/10 10:18:31

Python开发者必看:3步掌握小红书数据采集神器xhs

Python开发者必看:3步掌握小红书数据采集神器xhs 【免费下载链接】xhs 基于小红书 Web 端进行的请求封装。https://reajason.github.io/xhs/ 项目地址: https://gitcode.com/gh_mirrors/xh/xhs 在当今社交媒体数据驱动的时代,小红书作为国内领先的…

作者头像 李华