菜鸟科技网

Redis管理命令有哪些常用操作?

服务器信息与管理

这类命令用于查看和配置 Redis 服务器的整体状态。

Redis管理命令有哪些常用操作?-图1
(图片来源网络,侵删)
命令 描述 示例
INFO [section] 获取 Redis 服务器的各种信息和统计。section 可选,如 server, memory, clients, stats 等。 INFO memory (查看内存使用情况)
PING 检查服务器是否正在运行,如果服务器正常,将返回 PONG PING
ECHO message 打印给定的消息。 ECHO "Hello Redis"
TIME 返回当前服务器时间,格式为 Unix 时间戳(微秒级)。 TIME
DBSIZE 返回当前数据库中的键的数量。 DBSIZE
CONFIG GET parameter 获取 Redis 配置参数的值。 CONFIG GET maxmemory
CONFIG SET parameter value 运行时动态地设置 Redis 配置参数(需要持久化才能重启后生效)。 CONFIG SET maxmemory 1gb
CONFIG REWRITE 将运行时的配置持久化到 redis.conf 文件中。 CONFIG REWRITE
CLIENT LIST 列出所有与服务器连接的客户端信息。 CLIENT LIST
CLIENT KILL [ip:port] [ID client-id] 终止指定客户端的连接。 CLIENT KILL ID 12345
CLIENT PAUSE timeout 暂时停止处理客户端命令,timeout 为毫秒数。 CLIENT PAUSE 1000
FLUSHDB [ASYNC] 删除当前数据库中的所有键。ASYNC 表示异步执行(Redis 4.0+)。 FLUSHDB
FLUSHALL [ASYNC] 删除所有数据库中的所有键(谨慎使用!)。 FLUSHALL

键值管理

这是 Redis 最核心的操作,用于管理数据库中的键。

命令 描述 示例
KEYS pattern 查找所有符合给定 pattern 的键。生产环境慎用,可能导致阻塞 KEYS user:*
EXISTS key [key ...] 检查一个或多个键是否存在。 EXISTS mykey anotherkey
DEL key [key ...] 删除一个或多个键。 DEL mykey anotherkey
TYPE key 返回键所存储的值的类型。 TYPE mylist (返回 list)
EXPIRE key seconds 为键设置过期时间(秒)。 EXPIRE mykey 60 (60秒后过期)
PEXPIRE key milliseconds 为键设置过期时间(毫秒)。 PEXPIRE mykey 60000
TTL key 查询键的剩余生存时间(秒)。 TTL mykey (返回 -1 表示永不过期,-2 表示键不存在)
PTTL key 查询键的剩余生存时间(毫秒)。 PTTL mykey
EXPIREAT key timestamp 设置键的过期时间,时间格式为 Unix 时间戳(秒)。 EXPIREAT mykey 1672531200
PERSIST key 移除键的过期时间,使其永不过期。 PERSIST mykey
RENAME key newkey 重命名键。newkey 已存在,则会被覆盖。 RENAME oldname newname
RENAMENX key newkey 当且仅当 newkey 不存在时,重命名键。 RENAMENX oldname newname
MOVE key db 将当前数据库中的键移动到指定的数据库 db 中。 MOVE mykey 1 (移动到数据库1)
SCAN cursor [MATCH pattern] [COUNT count] 迭代数据库中的键。KEYS 的非阻塞替代方案。 SCAN 0 MATCH user:* COUNT 100

数据结构操作

Redis 支持 5 种主要数据结构,以下是它们的管理命令。

字符串

命令 描述 示例
SET key value [EX seconds\|PX milliseconds] [NX\|XX] 设置键值。EX/PX 设置过期时间,NX 键不存在时才设置,XX 键存在时才设置。 SET mykey "hello" EX 10
GET key 获取键的值。 GET mykey
MSET key value [key value ...] 同时设置一个或多个键值对。 MSET k1 v1 k2 v2
MGET key [key ...] 获取一个或多个键的值。 MGET k1 k2
INCR key 将键的值加 1(值必须是整数)。 INCR mycounter
DECR key 将键的值减 1。 DECR mycounter
INCRBY key increment 将键的值加上指定的整数值。 INCRBY mycounter 5
DECRBY key decrement 将键的值减去指定的整数值。 DECRBY mycounter 2
APPEND key value 将指定的值追加到键值的末尾。 APPEND mykey " world"

列表

命令 描述 示例
LPUSH key value [value ...] 将一个或多个值插入到列表的头部。 LPUSH mylist "world"
RPUSH key value [value ...] 将一个或多个值插入到列表的尾部。 RPUSH mylist "hello"
LPOP key 移除并返回列表的头元素。 LPOP mylist
RPOP key 移除并返回列表的尾元素。 RPOP mylist
LRANGE key start stop 获取列表中指定范围内的元素。0 是第一个,-1 是最后一个。 LRANGE mylist 0 -1 (获取全部)
LLEN key 返回列表的长度。 LLEN mylist
LINDEX key index 通过索引获取列表中的元素。 LINDEX mylist 0 (获取第一个)
LREM key count value 从列表中移除前 count 个值为 value 的元素。count>0从头开始,count<0从尾开始,count=0移除所有。 LREM mylist 2 "hello"

哈希

命令 描述 示例
HSET key field value 将哈希表 key 中的字段 field 设置为值 value HSET user:1000 name "Alice"
HGET key field 获取存储在哈希表中指定字段的值。 HGET user:1000 name
HGETALL key 获取哈表中所有的字段和值。 HGETALL user:1000
HDEL key field [field ...] 删除一个或多个哈希表字段。 HDEL user:1000 name age
HEXISTS key field 检查哈希表中是否存在指定的字段。 HEXISTS user:1000 name
HINCRBY key field increment 将哈希表中指定字段的整数值加上增量 increment HINCRBY user:1000 login_count 1
HKEYS key 获取哈希表中所有字段。 HKEYS user:1000
HVALS key 获取哈希表中所有值。 HVALS user:1000
HLEN key 获取哈希表中字段的数量。 HLEN user:1000

集合

命令 描述 示例
SADD key member [member ...] 向集合添加一个或多个成员。 SADD myset "hello"
SMEMBERS key 返回集合中的所有成员。 SMEMBERS myset
SREM key member [member ...] 移除集合中一个或多个成员。 SREM myset "hello"
SCARD key 获取集合的成员数。 SCARD myset
SISMEMBER key member 判断 member 是否是集合的成员。 SISMEMBER myset "hello"
SINTER key [key ...] 返回给定所有集合的交集。 SINTER set1 set2
SUNION key [key ...] 返回给定所有集合的并集。 SUNION set1 set2
SDIFF key [key ...] 返回第一个集合与其他所有集合的差集。 SDIFF set1 set2

有序集合

命令 描述 示例
ZADD key score member [score member ...] 向有序集合添加一个或多个成员,或更新已存在成员的分数。 ZADD leaderboard 100 "player1"
ZRANGE key start stop [WITHSCORES] 通过索引区间返回有序集合中指定区间的成员,默认按分数从低到高排序。WITHSCORES 可选。 ZRANGE leaderboard 0 2 WITHSCORES
ZREVRANGE key start stop [WITHSCORES] ZRANGE 相反,按分数从高到低排序。 ZREVRANGE leaderboard 0 2 WITHSCORES
ZRANGEBYSCORE key min max [WITHSCORES] 返回分数在 minmax 之间的所有成员。 ZRANGEBYSCORE leaderboard 80 100
ZSCORE key member 返回有序集合中成员的分数。 ZSCORE leaderboard "player1"
ZCARD key 获取有序集合的成员数。 ZCARD leaderboard
ZREM key member [member ...] 移除有序集合中的一个或多个成员。 ZREM leaderboard "player1"
ZINCRBY key increment member 增加成员的分数。 ZINCRBY leaderboard 10 "player1"

持久化

Redis 提供了两种持久化机制,确保数据不丢失。

命令 描述 示例
SAVE 阻塞地执行保存操作,将当前数据集快照保存到磁盘。生产环境慎用,会阻塞所有客户端 SAVE
BGSAVE 非阻塞地执行保存操作,Redis 会 fork 一个子进程来执行保存,主进程可以继续处理客户端请求。 BGSAVE
LASTSAVE 返回最后一次成功执行 SAVEBGSAVE 的时间戳。 LASTSAVE
SHUTDOWN [NOSAVE\|SAVE] SHUTDOWN NOSAVE: 不保存数据直接关闭。SHUTDOWN SAVE: 保存数据后关闭。 SHUTDOWN SAVE

高可用与集群

主从复制

命令 描述 示例
SLAVEOF host port 将当前实例设置为指定主服务器的从服务器。 SLAVEOF 192.168.1.100 6379
SLAVEOF NO ONE 将当前实例从从服务器提升为主服务器,停止复制。 SLAVEOF NO ONE

哨兵

哨兵模式用于监控主从节点,并在主节点故障时自动进行故障转移。

Redis管理命令有哪些常用操作?-图2
(图片来源网络,侵删)
命令 描述 示例
SENTINEL masters 列出所有被 Sentinel 监控的主服务器及其状态。 SENTINEL masters
SENTINEL master <master-name> 获取指定主服务器的详细信息。 SENTINEL master mymaster
SENTINEL slaves <master-name> 列出指定主服务器的所有从服务器。 SENTINEL slaves mymaster
SENTINEL get-master-addr-by-name <master-name> 返回指定主服务器的地址和端口。 SENTINEL get-master-addr-by-name mymaster

集群

Redis Cluster 提供了分布式、高可用的解决方案。

命令 描述 示例
CLUSTER NODES 列出集群中所有节点的信息(ID, IP, Port, 角色, 状态等)。 CLUSTER NODES
CLUSTER INFO 返回集群的状态信息。 CLUSTER INFO
CLUSTER MEET ip port 将一个节点添加到集群中。 CLUSTER MEET 192.168.1.101 6379
CLUSTER FORGET node-id 从集群中移除一个节点。 CLUSTER FORGET 3c3a0c74aae9b5616d7a891c3f6a7f61234abcde
CLUSTER REPLICATE node-id 将当前节点设置为指定节点的从节点。 CLUSTER REPLICATE 3c3a0c74aae9b5616d7a891c3f6a7f61234abcde
CLUSTER KEYSLOT key 返回键所对应的槽位。 CLUSTER KEYSLOT mykey
CLUSTER SETSLOT slot IMPORTING|MIGRATING node-id 设置槽的导入/迁移状态。 CLUSTER SETSLOT 0 IMPORTING 3c3a...
CLUSTER SETSLOT slot NODE node-id 将槽 slot 指派给指定的节点。 CLUSTER SETSLOT 0 NODE 3c3a...

安全与客户端

命令 描述 示例
AUTH password 密码认证。 AUTH mypassword
ACL [LIST\|SETUSER\|DELUSER\...] Redis 6.0+ 的访问控制列表命令,用于精细化管理用户权限。 ACL SETUSER myuser on >password +@read
MULTI 标记一个事务块的开始。 MULTI
EXEC 执行事务块中的所有命令。 EXEC
DISCARD 取消事务块,放弃执行事务块中的所有命令。 DISCARD
UNWATCH 取消 WATCH 命令对所有键的监视。 UNWATCH
WATCH key [key ...] 监视一个或多个键,如果在事务执行前这些键被其他客户端修改,则事务将失败。 WATCH mykey

发布与订阅

命令 描述 示例
PUBLISH channel message 向指定频道发送消息。 PUBLISH news "Hello, world!"
SUBSCRIBE channel [channel ...] 订阅一个或多个频道。 SUBSCRIBE news
UNSUBSCRIBE [channel] 退订一个或多个频道,不填则退订所有。 UNSUBSCRIBE news
PSUBSCRIBE pattern [pattern ...] 订阅符合给定模式的频道。 PSUBSCRIBE news.*
PUNSUBSCRIBE [pattern] 退订符合给定模式的频道。 PUNSUBSCRIBE news.*

慢查询

用于排查性能问题,记录执行时间过长的命令。

命令 描述 示例
SLOWLOG subcommand [argument] 管理慢查询日志。subcommand 可为 get, len, reset SLOWLOG get 5 (获取最慢的5条查询)
CONFIG SET slowlog-log-slower-than microsecond 设置执行时间超过多少微秒的命令会被记录到慢查询日志中。 CONFIG SET slowlog-log-slower-than 10000 (10毫秒)
CONFIG SET slowlog-max-len 设置慢查询日志的最大条目数。 CONFIG SET slowlog-max-len 128
  • 日常运维INFO, DBSIZE, CLIENT LIST, CONFIG, FLUSHDB/ALL
  • 键管理KEYS (开发测试用), SCAN (生产推荐), EXISTS, TTL, DEL
  • 数据操作:根据数据类型选择 SET/GET, HSET/HGET, LPUSH/LPOP, SADD/SREM, ZADD/ZRANGE
  • 高可用SLAVEOF (主从), SENTINEL (哨兵), CLUSTER (集群)。
  • 排查问题SLOWLOG (性能), MONITOR (实时查看所有命令,慎用)。

掌握这些命令,你就能熟练地管理和操作 Redis 数据库了。

Redis管理命令有哪些常用操作?-图3
(图片来源网络,侵删)
分享:
扫描分享到社交APP
上一篇
下一篇