Redis作为一款高性能的内存数据库,其丰富的命令集是实现高效数据操作的核心,以下是Redis常用命令的详细分类及说明,涵盖数据操作、管理、持久化等多个维度,帮助用户全面掌握Redis的使用方法。

键值操作相关命令
键值操作是Redis最基础的功能,主要包括键的增删改查及管理。
- SET key value [EX seconds|PX milliseconds] [NX|XX]:设置键值,可指定过期时间(EX秒级或PX毫秒级)及条件(NX键不存在时设置,XX键存在时设置)。
- GET key:获取键对应的值。
- DEL key [key ...]:删除一个或多个键。
- EXISTS key [key ...]:检查键是否存在,返回存在的键数量。
- EXPIRE key seconds:设置键的过期时间(秒)。
- TTL key:返回键的剩余生存时间(秒),-1表示永不过期,-2表示键不存在。
- TYPE key:返回键存储的值类型(string、hash、list、set、zset等)。
- KEYS pattern:匹配符合模式的键(如
KEYS user:*
),生产环境慎用可能导致阻塞。 - SCAN cursor [MATCH pattern] [COUNT count]:增量式遍历键,避免阻塞。
字符串(String)类型命令
字符串是Redis最基本的数据结构,支持二进制安全存储。
- INCR key:键值递增1(值需为整数)。
- DECR key:键值递减1。
- INCRBY key increment:键值增加指定整数。
- APPEND key value:在字符串末尾追加值。
- STRLEN key:返回字符串长度。
- SETEX key seconds value:设置键值并指定过期时间。
哈希(Hash)类型命令
哈希是键值对集合,适合存储对象。
- HSET key field value:设置哈希表字段值。
- HGET key field:获取字段值。
- HGETALL key:获取哈希表所有字段和值。
- HDEL key field [field ...]:删除一个或多个字段。
- HEXISTS key field:检查字段是否存在。
- HINCRBY key field increment:字段值递增指定整数。
- HKEYS key:返回所有字段名。
- HVALS key:返回所有字段值。
列表(List)类型命令
列表是字符串元素的有序集合,支持双向操作。

- LPUSH key value [value ...]:将值插入列表头部。
- RPUSH key value [value ...]:将值插入列表尾部。
- LPOP key:移除并返回列表头部元素。
- RPOP key:移除并返回列表尾部元素。
- LRANGE key start stop:获取列表指定范围元素(0表示第一个,-1表示最后一个)。
- LLEN key:返回列表长度。
- LREM key count value:移除列表中前count个值为value的元素(count>0从头开始,<0从尾开始)。
集合(Set)类型命令
集合是无序且不重复的元素集合。
- SADD key member [member ...]:添加成员到集合。
- SMEMBERS key:返回集合所有成员。
- SREM key member [member ...]:移除集合中指定成员。
- SCARD key:返回集合成员数。
- SISMEMBER key member:检查成员是否存在。
- SINTER key [key ...]:返回多个集合的交集。
- SUNION key [key ...]:返回多个集合的并集。
有序集合(ZSet)类型命令
有序集合是带分数的成员集合,成员按分数排序。
- ZADD key [NX|XX] [CH] [INCR] score member [score member ...]:添加成员及分数(NX表示成员不存在时添加,XX表示存在时更新)。
- ZRANGE key start stop [WITHSCORES]:返回指定排名范围的成员(按分数升序),WITHSCORES显示分数。
- ZREVRANGE key start stop [WITHSCORES]:降序排列成员。
- ZSCORE key member:返回成员分数。
- ZINCRBY key increment member:成员分数增加指定值。
- ZCARD key:返回集合成员数。
- ZCOUNT key min max:返回分数在[min, max]之间的成员数。
数据库管理与持久化命令
- SELECT index:切换数据库(0-15共16个库)。
- FLUSHDB:清空当前数据库。
- FLUSHALL:清空所有数据库。
- SAVE:同步保存数据到磁盘(阻塞客户端)。
- BGSAVE:异步保存数据(fork子进程执行)。
- LASTSAVE:返回最后成功保存的时间戳。
高级功能命令
- PUBLISH channel message:发布消息到频道(发布/订阅模式)。
- SUBSCRIBE channel [channel ...]:订阅频道。
- UNSUBSCRIBE [channel [channel ...]]:取消订阅频道。
- EVAL script numkeys key [key ...] arg [arg ...]:执行Lua脚本。
相关问答FAQs
Q1: Redis如何批量删除匹配模式的键?
A1: 可结合KEYS
和DEL
命令,但KEYS
命令在键较多时可能阻塞服务,推荐使用SCAN
命令遍历键并批量删除,
redis-cli --scan --pattern "temp:*" | xargs -L 1000 redis-cli DEL
该命令分批删除以temp:
开头的键,减少阻塞风险。

Q2: Redis的持久化机制RDB和AOF如何选择?
A2: RDB通过快照方式定期保存数据,恢复速度快但可能丢失最后一次快照后的数据;AOF以日志形式记录写操作,数据安全性高但文件较大且恢复较慢,生产环境通常采用RDB+AOF混合持久化(Redis 4.0+支持),结合两者优势:AOF重写时以RDB格式存储数据,后续操作以AOF日志追加,兼顾性能与数据安全。