Redis CLI 命令介绍
Redis (Remote Dictionary Server) 是一个开源的内存数据结构存储,它可以用作数据库、缓存和消息代理。Redis CLI (Command Line Interface) 是与 Redis 服务器交互的强大工具,允许用户执行各种命令来管理数据和配置服务器。
本文将详细介绍 Redis CLI 的常用命令,帮助您更好地理解和使用 Redis。
连接到 Redis 服务器
要启动 Redis CLI,只需在终端中输入 redis-cli。如果您的 Redis 服务器运行在默认端口 (6379) 和本地主机上,它将自动连接。
bash
redis-cli
如果 Redis 服务器运行在不同的主机或端口上,您可以使用 -h 和 -p 选项指定:
bash
redis-cli -h your_host_ip -p 6380
如果您的 Redis 服务器需要密码验证,可以使用 -a 选项:
bash
redis-cli -a your_password
连接成功后,您将看到 host:port> 提示符,表示您可以开始输入 Redis 命令了。
常用数据类型命令
Redis 支持多种数据结构。以下是一些最常用的数据类型及其相关命令:
1. 字符串 (Strings)
字符串是 Redis 最基本的数据类型,可以存储文本、数字或二进制数据。
SET key value: 设置指定 key 的值为 value。
redis
SET mykey "Hello Redis"GET key: 获取指定 key 的值。
redis
GET mykey
# "Hello Redis"DEL key [key ...]: 删除一个或多个 key。
redis
DEL mykeyINCR key: 将 key 中储存的数字值增一。如果 key 不存在,则 key 的值会被初始化为 0,然后再执行 INCR 操作。
redis
SET counter 10
INCR counter
# (integer) 11DECR key: 将 key 中储存的数字值减一。INCRBY key increment: 将 key 所储存的值加上增量 increment。DECRBY key decrement: 将 key 所储存的值减去减量 decrement。APPEND key value: 如果 key 已经存在并且是一个字符串, APPEND 命令将 value 追加到 key 原来的值的末尾。STRLEN key: 返回 key 所储存的字符串值的长度。
2. 哈希 (Hashes)
哈希用于存储字段-值对的集合,非常适合表示对象。
HSET key field value [field value ...]: 设置哈希表中指定 key 的指定字段的值。
redis
HSET user:1 name "Alice" age 30 city "New York"HGET key field: 获取哈希表中指定 key 的指定字段的值。
redis
HGET user:1 name
# "Alice"HGETALL key: 获取哈希表中指定 key 的所有字段和值。
redis
HGETALL user:1
# 1) "name"
# 2) "Alice"
# 3) "age"
# 4) "30"
# 5) "city"
# 6) "New York"HDEL key field [field ...]: 删除哈希表中指定 key 的一个或多个字段。HLEN key: 获取哈希表中字段的数量。HKEYS key: 获取哈希表中所有字段。HVALS key: 获取哈希表中所有值。
3. 列表 (Lists)
列表是一个有序的字符串元素集合,可以从头部或尾部添加/移除元素。
LPUSH key value [value ...]: 将一个或多个值插入到列表的头部。
redis
LPUSH mylist "item1" "item2"RPUSH key value [value ...]: 将一个或多个值插入到列表的尾部。
redis
RPUSH mylist "item3"LPOP key: 移出并获取列表的第一个元素。
redis
LPOP mylist
# "item2"RPOP key: 移出并获取列表的最后一个元素。LRANGE key start stop: 获取列表中指定范围内的元素。
redis
LRANGE mylist 0 -1 # 获取所有元素
# 1) "item1"
# 2) "item3"LLEN key: 获取列表的长度。
4. 集合 (Sets)
集合是无序的字符串元素集合,集合中的每个元素都是唯一的。
SADD key member [member ...]: 将一个或多个成员添加到集合中。
redis
SADD myset "apple" "banana" "orange"SMEMBERS key: 获取集合中的所有成员。
redis
SMEMBERS myset
# 1) "apple"
# 2) "orange"
# 3) "banana"SREM key member [member ...]: 移除集合中的一个或多个成员。SCARD key: 获取集合的成员数。SISMEMBER key member: 判断成员元素是否是集合的成员。
5. 有序集合 (Sorted Sets)
有序集合是集合的变体,每个成员都关联一个分数 (score),Redis 会根据分数对成员进行排序。
ZADD key score member [score member ...]: 将一个或多个成员及其分数添加到有序集合中。
redis
ZADD myzset 100 "member1" 90 "member2" 110 "member3"ZRANGE key start stop [WITHSCORES]: 获取有序集合中指定范围内的成员。
redis
ZRANGE myzset 0 -1 WITHSCORES
# 1) "member2"
# 2) "90"
# 3) "member1"
# 4) "100"
# 5) "member3"
# 6) "110"ZSCORE key member: 获取有序集合中指定成员的分数。ZREM key member [member ...]: 移除有序集合中的一个或多个成员。ZCARD key: 获取有序集合的成员数。
通用命令
这些命令适用于所有数据类型。
KEYS pattern: 查找所有符合给定模式的 key。注意:在生产环境中慎用此命令,因为它可能会阻塞服务器。
redis
KEYS *
KEYS user:*EXISTS key [key ...]: 检查一个或多个 key 是否存在。TTL key: 返回 key 的剩余生存时间 (Time To Live),以秒为单位。PTTL key: 返回 key 的剩余生存时间,以毫秒为单位。EXPIRE key seconds: 为 key 设置过期时间,以秒为单位。PERSIST key: 移除 key 的过期时间,使其变为持久化的 key。TYPE key: 返回 key 所储存值的类型。
redis
TYPE mykey
# stringRENAME oldkey newkey: 修改 key 的名称。RENAMENX oldkey newkey: 仅当 newkey 不存在时,将 oldkey 改名为 newkey。
事务 (Transactions)
Redis 事务允许您在单个原子操作中执行一组命令。
MULTI: 标记一个事务块的开始。EXEC: 执行所有在事务块中排队的命令。DISCARD: 取消事务,放弃执行事务块内的所有命令。
redis
MULTI
SET mykey "value1"
INCR counter
EXEC
发布/订阅 (Publish/Subscribe)
Redis 提供了发布/订阅消息范式。
PUBLISH channel message: 将信息发送到指定的频道。SUBSCRIBE channel [channel ...]: 订阅一个或多个频道。
服务器管理命令
INFO [section]: 获取 Redis 服务器的各种信息和统计数据。
redis
INFO # 获取所有信息
INFO Memory # 获取内存相关信息PING: 测试连接是否仍然正常。
redis
PING
# PONGSELECT index: 切换到指定的数据库。Redis 默认有 16 个数据库,编号从 0 到 15。
redis
SELECT 1FLUSHDB: 删除当前数据库的所有 key。FLUSHALL: 删除所有数据库的所有 key。慎用!SAVE: 同步保存数据到磁盘。BGSAVE: 异步保存数据到磁盘。SHUTDOWN: 关闭 Redis 服务器。
总结
Redis CLI 是一个功能强大的工具,熟练掌握这些命令将使您能够高效地管理和操作 Redis 数据。本文仅涵盖了 Redis CLI 的一部分常用命令,Redis 还有许多其他高级功能和命令等待您探索。建议查阅 Redis 官方文档以获取更全面的信息和最新功能。