Redis作为高性能的内存数据库,其命令行接口(CLI)是开发者日常操作的核心工具,通过Redis CLI,用户可以直接执行数据操作、配置管理和性能监控等任务,以下将详细介绍Redis常用命令的分类、功能及使用场景,帮助用户全面掌握Redis CLI的操作方法。

数据操作命令
Redis支持多种数据类型,每种类型都有专属的操作命令,以下是主要数据类型的常用命令:
字符串(String)
字符串是Redis最基本的数据类型,支持二进制安全存储,常用命令包括:
SET key value [EX seconds] [PX milliseconds] [NX|XX]:设置键值对,可通过EX或PX设置过期时间,NX表示键不存在时才设置,XX表示键存在时才设置。GET key:获取键对应的值。INCR key:将键的值加1(值必须为整数)。DECR key:将键的值减1。APPEND key value:向键的值追加内容。
哈希(Hash)
哈希表存储键值对集合,适合存储对象结构,常用命令:
HSET key field value:设置哈希表字段值。HGET key field:获取哈希表字段值。HGETALL key:获取哈希表所有字段和值。HDEL key field [field ...]:删除哈希表指定字段。HINCRBY key field increment:对哈希表字段值递增指定整数。
列表(List)
列表是字符串元素的有序集合,支持双向操作,常用命令:

LPUSH key value [value ...]:向列表头部添加元素。RPUSH key value [value ...]:向列表尾部添加元素。LPOP key:移除并返回列表头部元素。RPOP key:移除并返回列表尾部元素。LRANGE key start stop:获取列表指定范围的元素(0表示第一个,-1表示最后一个)。
集合(Set)
集合是无序且唯一的字符串元素集合,常用命令:
SADD key member [member ...]:向集合添加成员。SMEMBERS key:获取集合所有成员。SREM key member [member ...]:移除集合指定成员。SINTER key [key ...]:获取多个集合的交集。SUNION key [key ...]:获取多个集合的并集。
有序集合(Sorted Set)
有序集合是带有分数的成员集合,成员按分数排序,常用命令:
ZADD key score member [score member ...]:添加成员及其分数。ZRANGE key start stop [WITHSCORES]:按分数从小到大获取成员。ZREVRANGE key start stop [WITHSCORES]:按分数从大到小获取成员。ZINCRBY key increment member:增加成员的分数。ZREM key member [member ...]:移除指定成员。
键管理命令
键管理命令用于控制Redis中的键的生命周期和属性:
DEL key [key ...]:删除一个或多个键。EXISTS key:检查键是否存在(返回1或0)。EXPIRE key seconds:设置键的过期时间(秒)。TTL key:获取键的剩余生存时间(秒),返回-1表示永不过期,-2表示键不存在。TYPE key:返回键的数据类型(如string、hash等)。KEYS pattern:匹配符合模式的键(生产环境慎用,可能阻塞服务器)。
高级功能命令
Redis还提供了高级功能命令,如事务、发布订阅和Lua脚本:

MULTI/EXEC/DISCARD:实现事务操作,MULTI开启事务,EXEC执行事务,DISCARD取消事务。PUBLISH channel message:向指定频道发布消息。SUBSCRIBE channel [channel ...]:订阅频道,接收消息。EVAL "script" numkeys key [key ...] arg [arg ...]:执行Lua脚本,numkeys表示键的数量。
性能与监控命令
INFO [section]:获取Redis服务器信息,如server、memory、stats等。MONITOR:实时监控Redis接收到的命令(生产环境慎用)。SLOWLOG [subcommand]:管理慢查询日志,subcommand可以是GET、LEN或RESET。
命令使用示例
以下通过表格展示部分命令的用法:
| 命令 | 示例 | 功能说明 |
|---|---|---|
| SET | SET user:1001 "Alice" EX 3600 |
设置键user:1001的值为"Alice",过期时间为3600秒 |
| HSET | HSET user:1001 name "Alice" age 30 |
向哈希表user:1001添加字段name和age |
| LPUSH | LPUSH messages "Hello" |
向列表messages头部添加元素"Hello" |
| ZADD | ZADD leaderboard 100 "player1" |
向有序集合leaderboard添加成员player1,分数为100 |
| TTL | TTL user:1001 |
查询键user:1001的剩余生存时间 |
相关问答FAQs
Q1: Redis命令执行失败时如何排查问题?
A: 首先检查命令语法是否正确,例如键名是否包含空格、参数类型是否匹配,通过INFO commandstats查看命令统计信息,确认是否因高频执行导致性能问题,检查Redis日志(默认位于/var/log/redis/redis-server.log)获取详细错误信息,如内存不足或连接超时等。
Q2: 如何批量删除符合特定模式的键?
A: 可结合KEYS和DEL命令实现,但KEYS命令会阻塞服务器,生产环境建议使用SCAN命令分批处理。
SCAN 0 MATCH user:* COUNT 100
该命令会返回游标、匹配的键列表,通过循环调用直到游标为0,最后将所有键传递给DEL命令批量删除。
