Redis学习笔记:核心命令与数据类型操作指南(第二章)
mhr18 2025-07-27 22:15 3 浏览 0 评论
上一章我们梳理了Redis的核心应用场景与选型逻辑,本章将聚焦Redis的命令体系,从键操作到各数据类型的核心命令,帮你快速掌握Redis的"操作语法"。
一、键(Key)命令:Redis的基础操作单元
作为key-value型数据库,键(Key)是Redis中所有操作的基础。以下是最常用的键命令:
- DEL:删除指定key,可一次性删除多个,删除成功返回被删除的key数量。
- EXISTS:检查key是否存在,存在返回1,不存在返回0,常用于判断数据是否有效。
- EXPIRE/PEXPIRE:为key设置过期时间,前者单位为秒,后者为毫秒。比如设置验证码10分钟后失效,就可以用EXPIRE code 600。
- KEYS:按模式匹配查找key(如KEYS user:*查找所有以user:为前缀的key),但注意在生产环境慎用,大数据量下可能阻塞服务。
- TTL/PTTL:查看key的剩余生存时间,前者返回秒数,后者返回毫秒数,-1表示永不过期,-2表示已过期。
- RENAME/RENAMENX:修改key的名称,RENAMENX仅在新key不存在时才执行,避免覆盖已有数据。
- TYPE:返回key存储的值的类型(如string、hash等),帮助快速判断数据结构。
二、五大核心数据类型命令:按需选择,高效操作
1. String(字符串):最简单也最常用
String是Redis最基础的数据类型,可存储文本、数字等,支持丰富的操作:
- SET/GET:设置和获取key的值,如SET username "zhangsan"、GET username。
- INCR/DECR:对数字值进行原子性增减,适合做计数器(如INCR view_count统计文章阅读量)。
- INCRBY/DECRBY:按指定步长增减,比如INCRBY score 10给用户加10分。
- APPEND:向字符串末尾追加内容,如APPEND message " world"将"hello"变成"hello world"。
- STRLEN:返回字符串长度,可用于判断内容是否过长。
- SETNX:仅当key不存在时设置值,常用于分布式锁的实现(避免重复创建)。
2. Hash(哈希):存储对象的最佳选择
Hash适合存储结构化数据(如用户信息、商品属性),底层以键值对集合形式存在:
- HSET/HGET:设置和获取哈希表中的字段值,如HSET user:1 name "zhangsan" age 20存储用户信息,HGET user:1 name获取姓名。
- HGETALL:返回哈希表中所有字段和值,一次性获取对象的完整信息。
- HKEYS/HVALS:分别返回所有字段名或所有值,如HKEYS user:1获取用户的所有属性名。
- HINCRBY:对哈希表中的数字字段做增量运算,比如HINCRBY user:1 score 5给用户加5分。
- HDEL:删除哈希表中的指定字段,如HDEL user:1 age移除年龄字段。
3. List(列表):有序可重复,适合队列与栈
List是按插入顺序排序的字符串列表,支持两端操作,常用于实现队列、栈等结构:
- LPUSH/RPUSH:向列表头部(左)或尾部(右)添加元素,如LPUSH todo "task1"在待办列表最前加任务。
- LPOP/RPOP:移除并返回列表头部或尾部元素,配合LPUSH可实现栈(先进后出),配合RPUSH可实现队列(先进先出)。
- LRANGE:获取指定索引范围内的元素,如LRANGE todo 0 2获取前3个待办任务。
- LLEN:查看列表长度,判断队列中待处理的任务数量。
- LSET:通过索引修改列表元素,如LSET todo 0 "new_task"更新第一个任务内容。
4. Set(集合):无序去重,适合关系运算
Set是无序且元素唯一的集合,支持交集、并集等操作,适合处理好友关系、标签等:
- SADD:向集合添加元素,如SADD user:1:tags "music" "sports"给用户添加标签。
- SMEMBERS:返回集合所有元素,查看用户的所有标签。
- SCARD:获取集合元素数量,统计标签总数。
- SINTER:求多个集合的交集,如SINTER user:1:friends user:2:friends找到共同好友。
- SUNION:求并集,合并多个集合(如合并两个用户的兴趣标签)。
- SREM:移除集合中的元素,如SREM user:1:tags "music"取消某个标签。
5. Zset(有序集合):带分数的集合,天生适合排序
Zset与Set的区别是每个元素关联一个分数,可按分数排序,常用于排行榜、优先级队列:
- ZADD:添加元素并指定分数,如ZADD rank 100 "user1" 90 "user2"添加用户积分。
- ZRANGE/ZREVRANGE:按分数升序/降序返回指定范围的元素,ZREVRANGE rank 0 9获取前10名用户。
- ZSCORE:查看元素的分数,如ZSCORE rank "user1"获取用户1的积分。
- ZINCRBY:增加元素的分数,如ZINCRBY rank 10 "user1"给用户1加10分。
- ZCOUNT:统计指定分数范围内的元素数量,如ZCOUNT rank 80 100统计80-100分的用户数。
三、其他实用命令分类
1. 事务命令:保证操作的原子性
- MULTI:标记事务开始,后续命令进入队列等待执行。
- EXEC:执行事务队列中的所有命令,要么全成功,要么全失败(Redis事务是弱一致性,不支持回滚)。
- WATCH:监视一个或多个key,若被修改则事务取消,用于实现乐观锁。
- DISCARD:取消事务,清空队列。
2. 发布/订阅命令:简单的消息通信机制
- SUBSCRIBE/PSUBSCRIBE:订阅频道或符合模式的频道(如PSUBSCRIBE news:*订阅所有新闻相关频道)。
- PUBLISH:向指定频道发送消息,如PUBLISH news:sports "basketball game today"。
- UNSUBSCRIBE:退订指定频道,结束消息接收。
3. 管理命令:运维与调试必备
- INFO:获取Redis服务器的状态信息(如内存使用、连接数等),用于监控。
- FLUSHDB/FLUSHALL:清空当前数据库/所有数据库的key,谨慎使用(生产环境避免误操作)。
- CONFIG GET/SET:查看或修改Redis配置(如CONFIG GET maxmemory查看最大内存限制)。
- SLOWLOG:管理慢查询日志,定位执行耗时较长的命令,优化性能。
四、命令使用小贴士
- 注意命令的原子性:Redis的单线程模型保证了单个命令的原子性,但复杂操作建议用Lua脚本或事务。
- 避免阻塞命令:如KEYS、SMEMBERS在大数据量下会阻塞服务,可改用SCAN、SSCAN等迭代命令。
- 合理设计key名:用统一的命名规范(如user:{id}:info),便于管理和查找。
- 结合数据类型选命令:比如需要排序用Zset,存储对象用Hash,避免强行用String模拟复杂结构。
掌握这些命令,就能灵活操作Redis的各种数据结构,为实际业务场景提供高效支持。
相关推荐
- 风险突出的高危端口汇总 一网打尽 !
-
高危端口一直是攻击者关注的焦点,了解这些端口的风险、攻击方式及防护策略至关重要。一、文件传输类端口1.TCP20/21:FTP服务端口FTP(文件传输协议)用于文件的上传和下载。其明文传输特性使得...
- 9. Redis Operator (2) —— Sentinel部署
-
0.简介上一篇,我们借由Redis的单机部署,学习了一下Operator的基本使用,今天,我们在此基础上,部署一下Redis的Sentinel模式。Sentinel本质上是为了解...
- Spring Boot3 整合 Redis 后解决缓存穿透问题全解析
-
在当今互联网软件开发领域,构建高效、稳定的应用系统是每个开发者的追求。对于从事互联网软件开发的人员来说,SpringBoot和Redis都是极为常用的技术工具。当在SpringBoot3...
- Spring Boot3 整合 Redis 后解决缓存雪崩问题全解析
-
在当今互联网软件开发领域,高并发、高性能的系统需求日益增长。对于从事互联网软件开发的人员来说,构建高效的缓存机制至关重要。SpringBoot3作为一款流行的Java框架,与Redis这一...
- Sa-Token 多账号体系下Redis持久化问题
-
在使用Sa-Token框架实现多账号体系时,当后端服务重启后,系统报错"未能获取对应StpLogic,type=XXX"。这种情况通常发生在配置了Redis持久化存储的场景下...
- 外贸独立站缓存迷惑行为:你的Redis可能正在制造更多问题!
-
上周帮一个深圳卖家排查网站卡顿,发现他们用Redis缓存了整站HTML——"你们这是把缓存当备份用呢?"结果每次更新产品都要手动清空缓存,编辑小哥差点辞职...最近对象缓存圈两大魔教...
- 别再用top和htop了,这几款终端神器让你的服务器状态一目了然
-
当top命令成为性能瓶颈:一个深夜运维的真实困境凌晨三点,服务器告警短信突然炸响。老王盯着屏幕上top命令的黑白界面,CPU使用率飙升到90%却找不到具体进程,内存占用数据分散在不同列,磁盘I/O更是...
- Redis学习笔记:管道(Pipelining)技术详解(第三章)
-
在掌握了Redis的基础命令后,如何进一步提升批量操作的效率?管道(Pipelining)技术是解决这一问题的关键。本章将深入解析管道的工作原理、使用场景及与其他技术的对比,帮助你在高并发场景下优化R...
- Redis8.0有哪些新特性(redis最新特性)
-
Redis8.0引入了多项新特性和功能增强,以下是其中的一些亮点:1、数据结构:向量集合(VectorSet):这是一种新的数据类型,专为向量相似性搜索设计。它基于有序集(sortedset)...
- Netty 的对象池(netty objectdecoder)
-
Netty是一个高性能的网络通信框架,广泛用于构建高并发、低延迟的TCP/UDP服务。为了提升性能,Netty内部大量使用了对象池(ObjectPool)技术来减少频繁创建和销毁对象带来的...
- Redis学习笔记:核心命令与数据类型操作指南(第二章)
-
上一章我们梳理了Redis的核心应用场景与选型逻辑,本章将聚焦Redis的命令体系,从键操作到各数据类型的核心命令,帮你快速掌握Redis的"操作语法"。一、键(Key)命令:Redi...
- Redis面试核心考点总结(覆盖 90% 的 Redis 面试场景)
-
一、基础核心数据类型与适用场景String:缓存、计数器(INCR)、分布式锁(SETNX)Hash:存储对象(用户信息、商品属性)List:消息队列(LPUSH/BRPOP)、时间线Set:标...
- Redis ListPack有哪些具体应用场景?
-
Redis的Listpack是一种紧凑的数据结构,适用于存储少量数据。它被设计为ziplist的一种改进版本,旨在解决ziplist中存在的连锁更新问题,并提供更高效的内存使用和访问速度。以下是Lis...
- SpringBoot实现单点登录(SSO)的4种方案
-
单点登录(SingleSign-On,SSO)是企业应用系统中常见的用户认证方案,它允许用户使用一组凭证访问多个相关但独立的系统,无需重复登录。对于拥有多个应用的企业来说,SSO可以显著提升用户体验...
- 刚刚,给学妹普及了登录的两大绝学
-
今天跟大家聊一个比较基础的话题,就是实现登录的方式有哪些?适合刚入行的朋友。华山之Session绝学Session我们称之为会话控制,是一种在服务器端保持会话状态的解决方案。通俗点来讲就是客户...
你 发表评论:
欢迎- 一周热门
- 最近发表
-
- 风险突出的高危端口汇总 一网打尽 !
- 9. Redis Operator (2) —— Sentinel部署
- Spring Boot3 整合 Redis 后解决缓存穿透问题全解析
- Spring Boot3 整合 Redis 后解决缓存雪崩问题全解析
- Sa-Token 多账号体系下Redis持久化问题
- 外贸独立站缓存迷惑行为:你的Redis可能正在制造更多问题!
- 别再用top和htop了,这几款终端神器让你的服务器状态一目了然
- Redis学习笔记:管道(Pipelining)技术详解(第三章)
- Redis8.0有哪些新特性(redis最新特性)
- Netty 的对象池(netty objectdecoder)
- 标签列表
-
- oracle位图索引 (74)
- oracle批量插入数据 (65)
- oracle事务隔离级别 (59)
- oracle主从同步 (56)
- oracle 乐观锁 (53)
- redis 命令 (83)
- php redis (97)
- redis 存储 (67)
- redis 锁 (74)
- 启动 redis (73)
- redis 时间 (60)
- redis 删除 (69)
- redis内存 (64)
- redis并发 (53)
- redis 主从 (71)
- redis同步 (53)
- redis结构 (53)
- redis 订阅 (54)
- redis 登录 (62)
- redis 面试 (58)
- redis问题 (54)
- 阿里 redis (59)
- redis的缓存 (55)
- lua redis (58)
- redis 连接池 (61)