Redis 命令大全:从入门到精通 – wiki大全

Redis 命令大全:从入门到精通

Redis (Remote Dictionary Server) 是一个开源的、高性能的键值对存储系统,常被称为数据结构服务器。它支持多种数据结构,包括字符串(strings)、哈希(hashes)、列表(lists)、集合(sets)、有序集合(sorted sets)等,并提供了丰富的命令来操作这些数据结构。Redis 不仅可以用作数据库、缓存,还可以作为消息代理(message broker)。掌握 Redis 命令是高效使用 Redis 的关键。

本文将带领您从入门到精通,详细介绍 Redis 的各类常用命令。

1. 连接 Redis

要与 Redis 服务器进行交互,最常用的工具是 redis-cli 命令行客户端。

  • 连接本地服务:
    默认情况下,redis-cli 会尝试连接到本地主机(127.0.0.1)的默认端口(6379)上的 Redis 服务。
    bash
    redis-cli

  • 连接远程服务或指定端口:
    您可以通过 -h 参数指定主机,-p 参数指定端口,以及 -a 参数指定密码。
    bash
    redis-cli -h <host> -p <port> -a <password>
    # 示例:redis-cli -h 192.168.1.100 -p 6379 -a yourpassword

2. 键 (Key) 命令

在 Redis 中,所有数据都以键值对的形式存储,键是 Redis 中存储数据的基本单位。以下是一些常用的键管理命令:

  • KEYS pattern: 查找所有符合给定模式的键。
    • KEYS *: 查找所有键。
    • KEYS user:*: 查找所有以 user: 开头的键。
  • EXISTS key [key ...]: 检查一个或多个键是否存在。返回存在的键的数量。
  • DEL key [key ...]: 删除一个或多个键。
  • EXPIRE key seconds: 为键设置过期时间,单位为秒。
  • TTL key: 查看键的剩余生存时间(Time To Live),以秒为单位。
    • -1 表示键永不过期。
    • -2 表示键不存在。
  • TYPE key: 获取键存储的数据类型(如 string, hash, list, set, zset)。
  • RENAME oldkey newkey: 重命名键。
  • RANDOMKEY: 从当前数据库中随机返回一个键。
  • DUMP key: 序列化给定键的值,返回序列化后的字节流。
  • RESTORE key ttl serialized-value: 反序列化值到键中,并可设置过期时间(ttl 为 0 表示永不过期)。

3. 数据类型命令

Redis 支持五种主要的数据结构,每种数据结构都有一套特定的命令集。

3.1 字符串 (String)

字符串是 Redis 最基本的数据类型,可以存储文本、整数或浮点数。它的最大容量是 512MB。

  • SET key value [EX seconds] [PX milliseconds] [NX|XX]: 设置键的值。
    • EX seconds: 设置键的过期时间(秒)。
    • PX milliseconds: 设置键的过期时间(毫秒)。
    • NX: 只有当键不存在时才设置值。
    • XX: 只有当键存在时才设置值。
  • GET key: 获取键的值。
  • MSET key value [key value ...]: 同时设置多个键值对。
  • MGET key [key ...]: 同时获取多个键的值。
  • INCR key: 将键存储的整数值增一。如果键不存在,会先将键值初始化为 0 再执行增一操作。
  • DECR key: 将键存储的整数值减一。
  • INCRBY key increment: 将键存储的整数值增加指定的增量。
  • APPEND key value: 将值追加到键的末尾。如果键不存在,效果等同于 SET
  • STRLEN key: 获取键存储的字符串长度。

3.2 哈希 (Hash)

哈希是一个键值对的集合,适用于存储对象。Redis 中的哈希可以存储多达 2^32 – 1 个键值对。

  • HSET key field value [field value ...]: 设置哈希表中一个或多个字段的值。
  • HGET key field: 获取哈希表中指定字段的值。
  • HMSET key field value [field value ...]: 同时设置多个字段的值。(在 Redis 4.0 之后,HSET 可以替代 HMSET 的多字段设置功能)
  • HMGET key field [field ...]: 同时获取多个字段的值。
  • HGETALL key: 获取哈希表中所有字段和值。
  • HDEL key field [field ...]: 删除哈希表中一个或多个字段。
  • HLEN key: 获取哈希表中字段的数量。
  • HKEYS key: 获取哈希表中所有字段(键名)。
  • HVALS key: 获取哈希表中所有值。

3.3 列表 (List)

列表是字符串元素的有序集合,可以从两端(左侧或右侧)添加或删除元素。列表的最大容量是 2^32 – 1 个元素。

  • LPUSH key value [value ...]: 将一个或多个值插入到列表的头部(左侧)。
  • RPUSH key value [value ...]: 将一个或多个值插入到列表的尾部(右侧)。
  • LPOP key: 移除并返回列表的第一个元素(左侧)。
  • RPOP key: 移除并返回列表的最后一个元素(右侧)。
  • LRANGE key start stop: 获取列表中指定范围的元素。
    • 0 表示第一个元素,-1 表示最后一个元素。
    • LRANGE mylist 0 -1: 获取所有元素。
  • LLEN key: 获取列表的长度。
  • LINDEX key index: 通过索引获取列表中的元素。
  • LREM key count value: 从列表中移除 count 个值为 value 的元素。
    • count > 0: 从头到尾移除。
    • count < 0: 从尾到头移除。
    • count = 0: 移除所有值为 value 的元素。

3.4 集合 (Set)

集合是字符串元素的无序集合,不允许重复成员。集合的最大容量是 2^32 – 1 个元素。

  • SADD key member [member ...]: 向集合添加一个或多个成员。
  • SMEMBERS key: 返回集合中的所有成员。
  • SREM key member [member ...]: 移除集合中一个或多个成员。
  • SCARD key: 获取集合的成员数量。
  • SISMEMBER key member: 判断成员是否是集合的成员。
  • SUNION key [key ...]: 返回给定所有集合的并集。
  • SINTER key [key ...]: 返回给定所有集合的交集。
  • SDIFF key [key ...]: 返回给定所有集合的差集。

3.5 有序集合 (Sorted Set / ZSet)

有序集合是字符串元素的集合,每个成员都关联一个分数(score),通过分数进行排序。成员是唯一的,但分数可以重复。有序集合的最大容量是 2^32 – 1 个元素。

  • ZADD key [NX|XX] [CH] [INCR] score member [score member ...]: 向有序集合添加一个或多个成员,或更新已存在成员的分数。
    • NX: 只有当成员不存在时才添加。
    • XX: 只有当成员存在时才更新分数。
    • CH: 返回添加或更新的成员数量。
    • INCR: 将成员的分数增加指定值。
  • ZRANGE key start stop [WITHSCORES]: 返回有序集合中指定索引范围内的成员。WITHSCORES 可以同时返回分数。
  • ZREM key member [member ...]: 移除有序集合中的一个或多个成员。
  • ZCARD key: 获取有序集合的成员数量。
  • ZSCORE key member: 获取有序集合中指定成员的分数。
  • ZCOUNT key min max: 统计在指定分数范围内的成员数量。
  • ZRANK key member: 返回有序集中指定成员的排名(索引),成员按分数值递增排序,排名从 0 开始。
  • ZREVRANK key member: 返回有序集中指定成员的排名,成员按分数值递减排序,排名从 0 开始。

4. 其他重要命令

除了上述针对特定数据类型的命令外,Redis 还提供了一些用于管理和维护的重要命令。

4.1 持久化 (Persistence)

Redis 支持两种持久化方式:RDB(Redis Database)和 AOF(Append Only File)。

  • SAVE: 同步保存数据到磁盘。在保存过程中,Redis 服务器会被阻塞,无法处理其他请求。
  • BGSAVE: 异步保存数据到磁盘。Redis 会在后台创建一个子进程来执行保存操作,主进程可以继续处理请求。

4.2 事务 (Transactions)

Redis 事务允许您将多个命令打包成一个原子操作执行,保证这些命令要么全部执行,要么全部不执行。

  • MULTI: 标记一个事务块的开始。在此命令之后,所有命令都会被放入队列,直到 EXEC 命令的出现。
  • EXEC: 执行所有事务块内的命令。
  • DISCARD: 取消事务,放弃执行事务队列中的所有命令。
  • WATCH key [key ...]: 监视一个或多个键。如果在事务执行之前这些被监视的键被其他命令修改,则事务会被中断(即 EXEC 返回空)。

4.3 发布/订阅 (Publish/Subscribe)

Redis 的发布/订阅功能允许客户端通过频道进行消息通信。

  • PUBLISH channel message: 将消息发送到指定频道。
  • SUBSCRIBE channel [channel ...]: 订阅一个或多个频道。
  • PSUBSCRIBE pattern [pattern ...]: 订阅一个或多个模式。例如,PSUBSCRIBE news.* 会订阅所有以 news. 开头的频道。

4.4 服务器管理 (Server Management)

这些命令用于获取 Redis 服务器的信息、监控其活动或进行管理操作。

  • INFO [section]: 获取 Redis 服务器的各种信息和统计数据。section 可以是 server, clients, memory, persistence, stats, replication, cpu, cluster, keyspace 等。
  • MONITOR: 实时打印 Redis 服务器接收到的所有命令,用于调试。
  • SHUTDOWN [NOSAVE|SAVE]: 关闭 Redis 服务器。
    • NOSAVE: 关闭时不进行 RDB 持久化。
    • SAVE: 关闭时强制进行 RDB 持久化。
  • FLUSHALL: 删除所有数据库中的所有键。
  • FLUSHDB: 删除当前数据库中的所有键。

总结

Redis 凭借其丰富的数据结构和高性能的命令集,成为了现代应用程序开发中不可或缺的工具。本文详细介绍了从连接 Redis 到操作各种数据类型,再到服务器管理等方面的常用命令。掌握这些命令,将使您能够更高效、更灵活地使用 Redis 来构建各种应用。

然而,Redis 的强大远不止于此。除了本文提及的命令,还有许多高级命令和功能,如 Lua 脚本、GEO 命令、HyperLogLog 等。要更深入地理解和利用 Redis,建议查阅 Redis 官方文档,并结合实际项目进行实践。通过不断地学习和尝试,您将能够充分发挥 Redis 的潜力。

滚动至顶部