Redis命令操作手册

内容纲要

Redis 全部命令操作手册

Redis 是一个开源的内存数据结构存储,用作数据库、缓存和消息代理。以下是 Redis 中的一些常用命令,包含命令描述、实例、应用场景、优点和缺点。

  1. 基础命令

1.1 SET

  • 描述:设置指定 key 的值。
  • 实例:SET mykey "Hello"
  • 应用场景:存储字符串类型的配置或缓存。
  • 优点:简单易用,写操作性能高。
  • 缺点:单独使用时,不支持复杂数据结构。

1.2 GET

  • 描述:获取指定 key 的值。
  • 实例:GET mykey
  • 应用场景:读取配置或缓存数据。
  • 优点:读操作性能高。
  • 缺点:需要知道 key 才能获取数据。

1.3 DEL

  • 描述:删除指定的 key。
  • 实例:DEL mykey
  • 应用场景:删除不再需要的缓存或数据。
  • 优点:操作简单,能够快速释放内存。
  • 缺点:操作不可恢复。
  1. 键命令

2.1 EXISTS

  • 描述:检查给定 key 是否存在。
  • 实例:EXISTS mykey
  • 应用场景:验证 key 是否存在于数据库中。
  • 优点:操作简单快速。
  • 缺点:仅能检查单个 key。

2.2 EXPIRE

  • 描述:为给定 key 设置过期时间。
  • 实例:EXPIRE mykey 10
  • 应用场景:设置缓存数据的有效期。
  • 优点:能够自动清除过期数据。
  • 缺点:需要手动设置过期时间。

2.3 RENAME

  • 描述:将 key 改名。
  • 实例:RENAME mykey newkey
  • 应用场景:重命名数据。
  • 优点:操作简单。
  • 缺点:如果 newkey 已存在,旧值会被覆盖。

2.4 TTL

  • 描述:返回 key 的剩余生存时间(以秒为单位)。
  • 实例:TTL mykey
  • 应用场景:查看缓存数据的有效期。
  • 优点:能够监控 key 的生存时间。
  • 缺点:仅对设置了过期时间的 key 有效。
  1. 字符串命令

3.1 INCR

  • 描述:将 key 中储存的数字值增一。
  • 实例:INCR mykey
  • 应用场景:实现计数器。
  • 优点:操作原子性强,安全。
  • 缺点:仅适用于数值类型的数据。

3.2 DECR

  • 描述:将 key 中储存的数字值减一。
  • 实例:DECR mykey
  • 应用场景:实现倒计时。
  • 优点:操作原子性强,安全。
  • 缺点:仅适用于数值类型的数据。

3.3 MGET

  • 描述:获取所有给定 key 的值。
  • 实例:MGET key1 key2 key3
  • 应用场景:批量读取数据。
  • 优点:提高读取效率。
  • 缺点:需要事先知道所有 key。

3.4 SETEX

  • 描述:将值 value 关联到 key,并将 key 的过期时间设为 seconds。
  • 实例:SETEX mykey 10 "Hello"
  • 应用场景:设置具有过期时间的缓存。
  • 优点:操作简便。
  • 缺点:必须同时设置值和过期时间。
  1. 列表命令

4.1 LPUSH

  • 描述:在列表的头部插入一个或多个值。
  • 实例:LPUSH mylist "World" "Hello"
  • 应用场景:实现消息队列、任务队列等。
  • 优点:插入操作速度快。
  • 缺点:列表太长时,可能会占用较多内存。

4.2 LRANGE

  • 描述:获取列表指定范围内的元素。
  • 实例:LRANGE mylist 0 -1
  • 应用场景:读取消息队列或任务队列中的任务。
  • 优点:能够灵活读取部分或全部列表内容。
  • 缺点:大列表读取性能可能下降。

4.3 RPUSH

  • 描述:在列表的尾部插入一个或多个值。
  • 实例:RPUSH mylist "Hello" "World"
  • 应用场景:实现消息队列、任务队列等。
  • 优点:插入操作速度快。
  • 缺点:列表太长时,可能会占用较多内存。

4.4 LPOP

  • 描述:移出并获取列表的第一个元素。
  • 实例:LPOP mylist
  • 应用场景:处理消息队列中的任务。
  • 优点:操作简单,适用于队列模型。
  • 缺点:列表为空时返回 nil。

4.5 LLEN

  • 描述:获取列表长度。
  • 实例:LLEN mylist
  • 应用场景:统计列表中的元素数量。
  • 优点:操作快速。
  • 缺点:列表过长时性能可能受到影响。

4.6 RPOP

  • 描述:移出并获取列表的最后一个元素。
  • 实例:RPOP mylist
  • 应用场景:处理队列中的任务。
  • 优点:适用于队列模型。
  • 缺点:列表为空时返回 nil。
  1. 集合命令

5.1 SADD

  • 描述:向集合添加一个或多个成员。
  • 实例:SADD myset "Hello" "World"
  • 应用场景:存储唯一值,如标签、用户 ID 等。
  • 优点:保证元素唯一性,添加操作快速。
  • 缺点:集合元素多时,内存占用大。

5.2 SMEMBERS

  • 描述:返回集合中的所有成员。
  • 实例:SMEMBERS myset
  • 应用场景:读取所有唯一值,如所有标签或用户 ID。
  • 优点:读取操作简单。
  • 缺点:集合元素多时,读取性能可能下降。

5.3 SREM

  • 描述:移除集合中的一个或多个成员。
  • 实例:SREM myset "Hello"
  • 应用场景:动态更新集合中的元素。
  • 优点:操作简单,支持批量移除。
  • 缺点:集合元素多时,性能可能受影响。

5.4 SCARD

  • 描述:获取集合中成员的数量。
  • 实例:SCARD myset
  • 应用场景:统计集合中元素的数量。
  • 优点:操作高效。
  • 缺点:集合元素多时,统计时间可能增加。

5.5 SISMEMBER

  • 描述:判断成员元素是否是集合的成员。
  • 实例:SISMEMBER myset "Hello"
  • 应用场景:检查集合中是否存在某元素。
  • 优点:操作简单。
  • 缺点:仅返回布尔值。

5.6 SUNION

  • 描述:返回给定所有集合的并集。
  • 实例:SUNION set1 set2
  • 应用场景:获取多个集合的并集。
  • 优点:操作快速。
  • 缺点:操作会占用内存。
  1. 哈希命令

6.1 HSET

  • 描述:向哈希表中添加一个字段和值。
  • 实例:HSET myhash field1 "Hello"
  • 应用场景:存储结构化数据,如用户信息。
  • 优点:支持存储复杂数据结构,读取速度快。
  • 缺点:单个哈希表字段过多时,内存占用较大。

6.2 HGET

  • 描述:获取哈希表中指定字段的值。
  • 实例:HGET myhash field1
  • 应用场景:读取结构化数据中的某个字段值。
  • 优点:读取操作

高效。

  • 缺点:需要知道字段名才能读取数据。

6.3 HDEL

  • 描述:删除哈希表 key 中的一个或多个指定字段。
  • 实例:HDEL myhash field1
  • 应用场景:移除不再需要的字段。
  • 优点:操作灵活。
  • 缺点:哈希表字段过多时,操作性能可能下降。

6.4 HGETALL

  • 描述:获取哈希表中所有字段和值。
  • 实例:HGETALL myhash
  • 应用场景:读取全部结构化数据。
  • 优点:操作简单。
  • 缺点:哈希表字段多时,返回数据量大。

6.5 HEXISTS

  • 描述:检查哈希表字段是否存在。
  • 实例:HEXISTS myhash field1
  • 应用场景:验证哈希表中的字段是否存在。
  • 优点:操作快速。
  • 缺点:仅返回布尔值。

6.6 HINCRBY

  • 描述:为哈希表 key 中的指定字段的整数值加上增量 increment。
  • 实例:HINCRBY myhash field1 10
  • 应用场景:计数或统计。
  • 优点:操作原子性强。
  • 缺点:仅适用于数值类型的字段。
  1. 有序集合命令

7.1 ZADD

  • 描述:向有序集合添加一个或多个成员,或更新已存在成员的分数。
  • 实例:ZADD myzset 1 "one" 2 "two"
  • 应用场景:实现排行榜、优先队列等。
  • 优点:支持按分数排序,操作灵活。
  • 缺点:有序集合元素多时,内存占用较大。

7.2 ZRANGE

  • 描述:返回有序集合中指定范围内的成员。
  • 实例:ZRANGE myzset 0 -1 WITHSCORES
  • 应用场景:读取排行榜或优先队列中的元素。
  • 优点:能够按分数灵活读取元素。
  • 缺点:大集合读取性能可能下降。

7.3 ZREM

  • 描述:移除有序集合中的一个或多个成员。
  • 实例:ZREM myzset "one"
  • 应用场景:动态更新有序集合中的元素。
  • 优点:操作灵活。
  • 缺点:有序集合元素多时,性能可能受影响。

7.4 ZSCORE

  • 描述:返回有序集合中,成员的分数值。
  • 实例:ZSCORE myzset "one"
  • 应用场景:获取成员的排名或分数。
  • 优点:操作高效。
  • 缺点:需要知道成员名才能获取分数。

7.5 ZRANK

  • 描述:返回有序集合中成员的排名(按分数从小到大排序)。
  • 实例:ZRANK myzset "one"
  • 应用场景:获取成员在排行榜中的位置。
  • 优点:操作快速。
  • 缺点:排名从 0 开始。

7.6 ZREMRANGEBYSCORE

  • 描述:移除有序集合中分数在指定范围内的所有成员。
  • 实例:ZREMRANGEBYSCORE myzset 0 10
  • 应用场景:清理低分成员。
  • 优点:操作灵活。
  • 缺点:操作可能较慢。
  1. 发布/订阅命令

8.1 PUBLISH

  • 描述:向指定频道发送消息。
  • 实例:PUBLISH mychannel "Hello World"
  • 应用场景:实现实时消息系统,如聊天室。
  • 优点:实时性强,操作简单。
  • 缺点:消息未被订阅时会丢失。

8.2 SUBSCRIBE

  • 描述:订阅指定频道,接收消息。
  • 实例:SUBSCRIBE mychannel
  • 应用场景:接收实时消息,如聊天室信息。
  • 优点:实时性强,操作简单。
  • 缺点:需要持续连接,可能占用资源。

8.3 PSUBSCRIBE

  • 描述:订阅一个或多个符合给定模式的频道。
  • 实例:PSUBSCRIBE mychannel*
  • 应用场景:实现模式匹配的消息系统。
  • 优点:灵活订阅。
  • 缺点:需要持续连接,可能占用资源。

8.4 PUNSUBSCRIBE

  • 描述:退订所有给定模式的频道。
  • 实例:PUNSUBSCRIBE mychannel*
  • 应用场景:取消订阅模式匹配的消息。
  • 优点:操作简单。
  • 缺点:需要持续连接,可能占用资源。
  1. 事务命令

9.1 MULTI

  • 描述:标记一个事务块的开始。
  • 实例:MULTI
  • 应用场景:执行原子性操作。
  • 优点:保证操作的原子性。
  • 缺点:复杂度高,需要小心管理。

9.2 EXEC

  • 描述:执行所有事务块内的命令。
  • 实例:EXEC
  • 应用场景:提交事务。
  • 优点:操作原子性强。
  • 缺点:事务中任一命令失败,整个事务将失败。

9.3 DISCARD

  • 描述:取消事务,放弃执行事务块内的所有命令。
  • 实例:DISCARD
  • 应用场景:放弃事务操作。
  • 优点:操作原子性强。
  • 缺点:事务中所有操作将被放弃。
  1. 脚本命令

10.1 EVAL

  • 描述:执行 Lua 脚本。
  • 实例:EVAL "return redis.call('SET', KEYS[1], ARGV[1])" 1 mykey "Hello"
  • 应用场景:执行复杂的原子性操作。
  • 优点:灵活性高。
  • 缺点:需要掌握 Lua 语言。

10.2 EVALSHA

  • 描述:根据给定的 SHA1 校验码执行脚本。
  • 实例:EVALSHA "sha1_code" 1 mykey "Hello"
  • 应用场景:执行已经缓存的脚本。
  • 优点:避免重复传输脚本。
  • 缺点:需要事先获取脚本的 SHA1 校验码。
  1. 连接管理命令

11.1 PING

  • 描述:测试连接是否正常。
  • 实例:PING
  • 应用场景:检查 Redis 服务器是否可达。
  • 优点:操作简单,快速检查连接状态。
  • 缺点:仅用于连接测试。

11.2 AUTH

  • 描述:验证密码以进行身份验证。
  • 实例:AUTH "password"
  • 应用场景:安全连接 Redis 服务器。
  • 优点:提高安全性。
  • 缺点:需要管理和维护密码。

11.3 QUIT

  • 描述:关闭连接。
  • 实例:QUIT
  • 应用场景:结束客户端连接。
  • 优点:操作简单。
  • 缺点:连接关闭后无法再执行命令。

11.4 SELECT

  • 描述:切换到指定的数据库。
  • 实例:SELECT 1
  • 应用场景:在不同数据库之间切换。
  • 优点:支持多数据库操作。
  • 缺点:需要事先知道数据库编号。

总结

Redis 提供了全面而强大的命令集,涵盖了多种数据结构和操作场景。以上列出的命令覆盖了 Redis 的主要功能,但 Redis 仍在不断发展中,建议定期查看 Redis 官方文档以获取最新信息。希望本手册能够帮助你更好地使用 Redis 提高开发效率,优化系统性能。如果你有任何问题或需要进一步的帮助,请随时联系我。

如需进一步细节,请参考 Redis 官方文档。

Leave a Comment

您的电子邮箱地址不会被公开。 必填项已用*标注

close
arrow_upward