【值得收藏】Redis学习笔记:基本命令篇,一文掌握Redis核心命令!
Redis(Remote Dictionary Server)是一个开源、高性能的键值存储数据库,以内存存储为主,支持持久化,被广泛用于缓存、消息队列、会话管理等场景。作为2025年最受欢迎的NoSQL数据库之一,Redis支持多种数据结构(如String、Hash、List、Set、Sorted Set),命令丰富且高效。本篇聚焦基本命令,从入门到实战,帮助你快速上手Redis CLI操作。
1. Redis简介与安装启动
Redis 是键值对(Key-Value)数据库,所有数据以Key为唯一标识。Key为字符串,Value支持多种类型。
- 安装:Linux/Mac:
brew install redis或apt install redis;Windows:官方不再支持,可用WSL或Docker。 - 启动:
redis-server(默认端口6379)。 - 连接CLI:
redis-cli(进入交互模式),或redis-cli -h host -p port -a password。
测试连接:
PING
返回:PONG
Redis数据结构概览:
2. 通用键(Keys)命令
Keys是所有数据的入口,先掌握键操作。
| 命令 | 语法示例 | 描述 | 返回示例 |
|---|---|---|---|
| KEYS pattern | KEYS * | 查找匹配模式的键(慎用生产环境,O(N)) | 列出所有键 |
| EXISTS key | EXISTS mykey | 检查键是否存在 | 1(存在)/0 |
| DEL key | DEL mykey | 删除键(可多个) | 删除数量 |
| EXPIRE key seconds | EXPIRE mykey 60 | 设置过期时间(秒) | 1(成功) |
| TTL key | TTL mykey | 查看剩余生存时间(秒,-1永不过期) | 剩余秒数 |
| PERSIST key | PERSIST mykey | 移除过期 | 1(成功) |
| TYPE key | TYPE mykey | 返回键类型(string/list等) | string |
| RENAME key newkey | RENAME old new | 重命名键 | OK |
示例CLI演示:
注意:生产环境避免KEYS *,用SCAN渐进扫描。
3. String(字符串)命令:最常用类型
String是Redis最基础类型,支持字符串、整数、浮点数、二进制。
| 命令 | 语法示例 | 描述 | 返回示例 |
|---|---|---|---|
| SET key value | SET name “Grok” | 设置值(覆盖) | OK |
| GET key | GET name | 获取值 | “Grok” |
| GETSET key value | GETSET name “New” | 设置新值并返回旧值 | 旧值 |
| INCR key | INCR count | 整数自增1 | 新值 |
| INCRBY key n | INCRBY count 10 | 自增n | 新值 |
| DECR/DECRBY | 同上 | 自减 | 新值 |
| APPEND key value | APPEND name ” AI” | 追加字符串 | 新长度 |
| STRLEN key | STRLEN name | 获取长度 | 长度 |
| MSET/MGET | MSET k1 v1 k2 v2 | 批量设置/获取 | OK / 值列表 |
String常用于缓存计数器、会话ID等。
4. Hash(哈希)命令:适合存储对象
Hash像Map,适合存储结构体(如用户信息)。
| 命令 | 语法示例 | 描述 |
|---|---|---|
| HSET key field value | HSET user:1 name “Grok” | 设置字段值 |
| HGET key field | HGET user:1 name | 获取字段值 |
| HMSET/HMGET | HMSET user:1 age 18 score 100 | 批量设置/获取 |
| HGETALL key | HGETALL user:1 | 获取所有字段值对 |
| HDEL key field | HDEL user:1 score | 删除字段 |
| HEXISTS key field | HEXISTS user:1 name | 检查字段存在 |
| HINCRBY key field n | HINCRBY user:1 age 1 | 字段整数自增 |
| HLEN key | HLEN user:1 | 字段数量 |
Hash命令示例:
5. List(列表)命令:有序可重复
List像双向链表,支持队列/栈操作。
| 命令 | 语法示例 | 描述 |
|---|---|---|
| LPUSH key value | LPUSH list “a” “b” | 左推入(头插) |
| RPUSH key value | RPUSH list “c” | 右推入(尾插) |
| LPOP/RPOP | LPOP list | 左/右弹出 |
| LRANGE key start end | LRANGE list 0 -1 | 获取范围元素(0 -1全表) |
| LLEN key | LLEN list | 长度 |
| LINDEX key index | LINDEX list 0 | 获取索引元素 |
| LTRIM key start end | LTRIM list 0 4 | 裁剪列表 |
常用于消息队列(LPUSH + RPOP)或最新列表。
6. Set(集合)命令:无序不重复
Set像HashSet,支持交并差运算。
| 命令 | 语法示例 | 描述 |
|---|---|---|
| SADD key member | SADD myset “a” “b” | 添加成员 |
| SMEMBERS key | SMEMBERS myset | 获取所有成员 |
| SREM key member | SREM myset “a” | 删除成员 |
| SCARD key | SCARD myset | 成员数量 |
| SISMEMBER key member | SISMEMBER myset “a” | 检查存在 |
| SINTER/SUNION/SDIFF | SINTER set1 set2 | 交/并/差集 |
常用于标签、去重。
7. Sorted Set(有序集合)命令:带分数排序
ZSet成员唯一,按Score排序。
| 命令 | 语法示例 | 描述 |
|---|---|---|
| ZADD key score member | ZADD rank 100 “Grok” | 添加(可更新score) |
| ZRANGE key start end [WITHSCORES] | ZRANGE rank 0 -1 WITHSCORES | 获取范围(正序) |
| ZREVRANGE | 同上反序 | 倒序 |
| ZSCORE key member | ZSCORE rank “Grok” | 获取分数 |
| ZINCRBY key n member | ZINCRBY rank 10 “Grok” | 分数增n |
| ZREM key member | ZREM rank “Grok” | 删除 |
常用于排行榜。
8. 其他常用命令
- 数据库操作:SELECT 0(切换DB,默认16个DB);FLUSHDB(清当前DB);FLUSHALL(清所有)。
- 信息:INFO(服务器信息);DBSIZE(键数量)。
- 持久化:SAVE/BGSAVE(手动保存RDB);CONFIG GET dir(配置)。
数据类型命令概览:
9. 实战建议与注意事项
- 过期:SET key value EX 60(秒)/PX 60000(毫秒)。
- 性能:单命令O(1)为主,批量用M*/PIPELINE。
- 生产:用SCAN代替KEYS,避免阻塞。
- 学习资源:官方文档 redis.io/commands,Redis University。
掌握这些基本命令,你已能处理90%场景!下一节可深入Pub/Sub、事务、Lua脚本等。
有具体命令疑问或想看高级篇?欢迎继续提问!