Redis 命令指南:CLI 使用教程 – wiki词典

Redis 命令指南:CLI 使用教程

Redis (Remote Dictionary Server) 是一个开源的、内存中的数据结构存储系统,它可以用作数据库、缓存和消息代理。Redis 以其高性能、多功能性和对各种数据结构的支持而闻名。与 Redis 交互的最常见方式之一是通过其命令行界面(CLI),即 redis-cli

本指南将详细介绍如何使用 redis-cli,从连接到服务器到执行各种数据类型和管理命令。

连接到 Redis

要启动 redis-cli 并连接到 Redis 服务器,请打开您的终端并输入 redis-cli

默认情况下,redis-cli 会尝试连接到运行在 localhost6379 端口上的 Redis 服务器。

bash
redis-cli

如果您的 Redis 服务器在不同的主机、端口或需要密码,您可以使用以下选项:

  • -h <hostname>:指定主机名或 IP 地址。
  • -p <port>:指定端口号。
  • -a <password>:使用密码进行身份验证。
  • -n <database_number>:选择一个特定的数据库(默认情况下为 0-15)。

示例: 连接到 IP 地址为 192.168.1.100,端口为 6380,密码为 yourpassword 的服务器,并选择数据库 1

bash
redis-cli -h 192.168.1.100 -p 6380 -a yourpassword -n 1

成功连接后,您将看到一个类似于 127.0.0.1:6379> 的提示符,表示您已准备好执行 Redis 命令。

基本命令

在深入了解数据类型之前,这里有一些基本的 redis-cli 命令。

  • PING
    检查服务器是否正在运行。如果服务器正常,它将返回 PONG
    127.0.0.1:6379> PING
    PONG

  • ECHO message
    打印给定消息。
    127.0.0.1:6379> ECHO "Hello Redis!"
    "Hello Redis!"

  • SELECT index
    选择具有给定零基数字索引的 Redis 逻辑数据库。Redis 默认支持 16 个数据库,编号从 0 到 15。
    127.0.0.1:6379> SELECT 1
    OK
    127.0.0.1:6379[1]>

  • QUITEXIT
    关闭与 Redis 服务器的连接并退出 CLI。
    127.0.0.1:6379> QUIT

Redis 数据类型和命令

Redis 将数据存储在键值对中,其中键始终是字符串。值可以是各种数据类型,每种数据类型都有其特定的命令集。

1. 字符串 (Strings)

字符串是 Redis 中最基本的数据类型,可以存储文本或二进制数据,最大可达 512MB。

  • SET key value
    为键设置一个字符串值。如果键已存在,其值将被覆盖。
    SET mykey "Hello"
    OK

  • GET key
    检索键的字符串值。
    GET mykey
    "Hello"

  • DEL key [key ...]
    删除一个或多个键。
    DEL mykey
    (integer) 1

  • INCR key
    将键的整数值增加一。如果键不存在,则在执行操作前将其设置为 0。
    SET counter 10
    OK
    INCR counter
    (integer) 11

  • DECR key
    将键的整数值减一。
    DECR counter
    (integer) 10

  • APPEND key value
    将值附加到键的字符串值后面。如果键不存在,则创建它。
    SET greeting "Hello"
    OK
    APPEND greeting " World"
    (integer) 11
    GET greeting
    "Hello World"

  • STRLEN key
    返回存储在键中的字符串值的长度。
    STRLEN greeting
    (integer) 11

2. 哈希 (Hashes)

哈希是字符串字段和字符串值之间的映射,非常适合表示对象。

  • HSET key field value [field value ...]
    设置哈希字段的字符串值。
    HSET user:1 name "Alice" email "[email protected]"
    (integer) 2

  • HGET key field
    检索哈希中与字段关联的值。
    HGET user:1 name
    "Alice"

  • HGETALL key
    返回存储在键中的哈希的所有字段和值。
    HGETALL user:1
    1) "name"
    2) "Alice"
    3) "email"
    4) "[email protected]"

  • HDEL key field [field ...]
    删除一个或多个哈希字段。
    HDEL user:1 email
    (integer) 1

3. 列表 (Lists)

列表是有序的字符串集合。元素可以添加到头部或尾部。

  • LPUSH key value [value ...]
    将所有指定的值插入到存储在 key 的列表的头部。
    LPUSH mylist "world"
    (integer) 1
    LPUSH mylist "hello"
    (integer) 2

  • RPUSH key value [value ...]
    将所有指定的值插入到存储在 key 的列表的尾部。
    RPUSH mylist "!"
    (integer) 3

  • LPOP key
    移除并返回列表的第一个元素。
    LPOP mylist
    "hello"

  • RPOP key
    移除并返回列表的最后一个元素。
    RPOP mylist
    "!"

  • LRANGE key start stop
    返回列表的指定元素。0 是第一个元素,-1 是最后一个元素。
    LRANGE mylist 0 -1
    1) "world"

4. 集合 (Sets)

集合是无序的、唯一的字符串集合。

  • SADD key member [member ...]
    向集合添加一个或多个成员。
    SADD myset "apple" "banana" "cherry"
    (integer) 3

  • SMEMBERS key
    返回集合的所有成员。
    SMEMBERS myset
    1) "apple"
    2) "cherry"
    3) "banana"

  • SREM key member [member ...]
    从集合中移除一个或多个成员。
    SREM myset "banana"
    (integer) 1

  • SISMEMBER key member
    如果 member 是集合的成员,则返回 1,否则返回 0。
    SISMEMBER myset "apple"
    (integer) 1
    SISMEMBER myset "grape"
    (integer) 0

5. 有序集合 (Sorted Sets)

有序集合是唯一的字符串集合,其中每个成员都关联一个分数。成员按其分数排序。

  • ZADD key score member [score member ...]
    向有序集合添加一个或多个成员,如果它们已存在,则更新其分数。
    ZADD leaderboard 100 "Alice" 150 "Bob" 75 "Charlie"
    (integer) 3

  • ZRANGE key start stop [WITHSCORES]
    从有序集合返回一个成员范围,按分数排序。WITHSCORES 包含输出中的分数。
    ZRANGE leaderboard 0 -1 WITHSCORES
    1) "Charlie"
    2) "75"
    3) "Alice"
    4) "100"
    5) "Bob"
    6) "150"

  • ZREM key member [member ...]
    从有序集合中移除一个或多个成员。
    ZREM leaderboard "Charlie"
    (integer) 1

  • ZSCORE key member
    返回有序集合中成员的分数。
    ZSCORE leaderboard "Alice"
    "100"

键管理命令

这些命令适用于所有键,无论其数据类型如何。

  • KEYS pattern
    查找所有匹配给定模式的键。
    注意:在大型数据库中,KEYS 命令可能会阻塞服务器很长时间,尤其是在生产环境中。建议使用 SCAN 命令。
    KEYS *
    1) "leaderboard"
    2) "myset"
    3) "user:1"
    4) "greeting"
    5) "counter"

  • EXISTS key [key ...]
    返回存在的键的数量。
    EXISTS mykey
    (integer) 0
    EXISTS counter
    (integer) 1

  • EXPIRE key seconds
    为键设置一个超时。超时后,键将自动删除。
    SET tempkey "will expire"
    OK
    EXPIRE tempkey 60
    (integer) 1

  • TTL key
    返回键的剩余生存时间(秒)。如果键不存在,返回 -2;如果键存在但没有关联的过期时间,返回 -1。
    TTL tempkey
    (integer) 55

  • TYPE key
    返回存储在键中的值的类型(例如 stringhashlistsetzset)。
    TYPE counter
    string
    TYPE user:1
    hash

  • RENAME oldkey newkey
    重命名一个键。
    SET oldname "value"
    OK
    RENAME oldname newname
    OK
    GET newname
    "value"

服务器命令

这些命令提供有关 Redis 服务器的信息或执行管理任务。

  • INFO [section]
    返回有关服务器的信息和统计数据。常见部分包括 serverclientsmemorypersistencestatsreplicationcpucommandstatsclusterkeyspace
    INFO memory
    # Memory
    used_memory:1048576
    used_memory_human:1.00M
    ...

  • MONITOR
    实时流式传输 Redis 服务器处理的每个命令。
    MONITOR
    1678886400.123456 [0 127.0.0.1:54321] "GET" "mykey"

  • FLUSHDB
    删除当前选定数据库中的所有键。
    注意:此命令会永久删除数据。
    FLUSHDB
    OK

  • FLUSHALL
    删除 Redis 服务器上所有数据库中的所有键。
    注意:此命令会永久删除所有数据库中的所有数据。
    FLUSHALL
    OK

结论

redis-cli 是一个功能强大且多功能的工具,用于管理和与 Redis 实例交互。通过掌握本指南中介绍的命令,您可以有效地存储、检索和操作数据,以及监控和维护您的 Redis 服务器。始终谨慎使用 FLUSHDBFLUSHALL 等破坏性命令,并在生产环境中使用 SCAN 命令代替 KEYS 命令以避免性能问题。

滚动至顶部