Redis 全部命令操作手册
Redis 是一个开源的内存数据结构存储,用作数据库、缓存和消息代理。以下是 Redis 中的一些常用命令,包含命令描述、实例、应用场景、优点和缺点。
- 基础命令
1.1 SET
- 描述:设置指定 key 的值。
- 实例:SET mykey "Hello"
- 应用场景:存储字符串类型的配置或缓存。
- 优点:简单易用,写操作性能高。
- 缺点:单独使用时,不支持复杂数据结构。
1.2 GET
- 描述:获取指定 key 的值。
- 实例:GET mykey
- 应用场景:读取配置或缓存数据。
- 优点:读操作性能高。
- 缺点:需要知道 key 才能获取数据。
1.3 DEL
- 描述:删除指定的 key。
- 实例:DEL mykey
- 应用场景:删除不再需要的缓存或数据。
- 优点:操作简单,能够快速释放内存。
- 缺点:操作不可恢复。
- 键命令
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 有效。
- 字符串命令
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"
- 应用场景:设置具有过期时间的缓存。
- 优点:操作简便。
- 缺点:必须同时设置值和过期时间。
- 列表命令
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。
- 集合命令
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
- 应用场景:获取多个集合的并集。
- 优点:操作快速。
- 缺点:操作会占用内存。
- 哈希命令
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
- 应用场景:计数或统计。
- 优点:操作原子性强。
- 缺点:仅适用于数值类型的字段。
- 有序集合命令
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
- 应用场景:清理低分成员。
- 优点:操作灵活。
- 缺点:操作可能较慢。
- 发布/订阅命令
8.1 PUBLISH
- 描述:向指定频道发送消息。
- 实例:PUBLISH mychannel "Hello World"
- 应用场景:实现实时消息系统,如聊天室。
- 优点:实时性强,操作简单。
- 缺点:消息未被订阅时会丢失。
8.2 SUBSCRIBE
- 描述:订阅指定频道,接收消息。
- 实例:SUBSCRIBE mychannel
- 应用场景:接收实时消息,如聊天室信息。
- 优点:实时性强,操作简单。
- 缺点:需要持续连接,可能占用资源。
8.3 PSUBSCRIBE
- 描述:订阅一个或多个符合给定模式的频道。
- 实例:PSUBSCRIBE mychannel*
- 应用场景:实现模式匹配的消息系统。
- 优点:灵活订阅。
- 缺点:需要持续连接,可能占用资源。
8.4 PUNSUBSCRIBE
- 描述:退订所有给定模式的频道。
- 实例:PUNSUBSCRIBE mychannel*
- 应用场景:取消订阅模式匹配的消息。
- 优点:操作简单。
- 缺点:需要持续连接,可能占用资源。
- 事务命令
9.1 MULTI
- 描述:标记一个事务块的开始。
- 实例:MULTI
- 应用场景:执行原子性操作。
- 优点:保证操作的原子性。
- 缺点:复杂度高,需要小心管理。
9.2 EXEC
- 描述:执行所有事务块内的命令。
- 实例:EXEC
- 应用场景:提交事务。
- 优点:操作原子性强。
- 缺点:事务中任一命令失败,整个事务将失败。
9.3 DISCARD
- 描述:取消事务,放弃执行事务块内的所有命令。
- 实例:DISCARD
- 应用场景:放弃事务操作。
- 优点:操作原子性强。
- 缺点:事务中所有操作将被放弃。
- 脚本命令
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 校验码。
- 连接管理命令
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 官方文档。