Redis的单机搭建,主从搭建,Sentinal搭建,以及Redis集群搭建的步骤参照前面的文章。现在来说一下Redis的基本运维,毕竟如果一切正常是最好的,但是当出现问题不能使用的时候,准确定位问题,并解决才是最重要的。
一、配置文件
Redis的配置文件的注释还是很详细的,下面也把它贴出来:
View Code
里面有一些重要的配置还是应该掌握的,至少应该阅读一遍。当然也可以参照一些更加详细的博客:
- 比如这个:http://www.cnblogs.com/LiZhiW/p/4851631.html
二、Redis 单机操作
连接Redis可用redis-cli进行连接,具体命令如下:
D:\data\frame\redis-2.4.5-win32-win64 λ redis-cli.exe --help redis-cli 2.4.5 Usage: redis-cli [OPTIONS] [cmd [arg [arg ...]]] -h <hostname> Server hostname (default: 127.0.0.1) -p <port> Server port (default: 6379) -s <socket> Server socket (overrides hostname and port) -a <password> Password to use when connecting to the server -r <repeat> Execute specified command N times -i <interval> When -r is used, waits <interval> seconds per command. It is possible to specify sub-second times like -i 0.1. -n <db> Database number -x Read last argument from STDIN -d <delimiter> Multi-bulk delimiter in for raw formatting (default: \n) --raw Use raw formatting for replies (default when STDOUT is not a tty) --latency Enter a special mode continuously sampling latency. --help Output this help and exit --version Output version and exit Examples: cat /etc/passwd | redis-cli -x set mypasswd redis-cli get mypasswd redis-cli -r 100 lpush mylist x redis-cli -r 100 -i 1 info | grep used_memory_human: When no command is given, redis-cli starts in interactive mode. Type "help" in interactive mode for information on available commands.
不过不建议记,用的时候记得help一下就可以:
redis-cli.exe --help
连接上以后,可以执行以下操作:
1 | BGREWRITEAOF 异步执行一个 AOF(AppendOnly File) 文件重写操作 |
2 | BGSAVE 在后台异步保存当前数据库的数据到磁盘 |
3 | CLIENT KILL [ip:port] [ID client-id] 关闭客户端连接 |
4 | CLIENT LIST 获取连接到服务器的客户端连接列表 |
5 | CLIENT GETNAME 获取连接的名称 |
6 | CLIENT PAUSE timeout 在指定时间内终止运行来自客户端的命令 |
7 | CLIENT SETNAME connection-name 设置当前连接的名称 |
8 | CLUSTER SLOTS 获取集群节点的映射数组 |
9 | COMMAND 获取 Redis 命令详情数组 |
10 | COMMAND COUNT 获取 Redis 命令总数 |
11 | COMMAND GETKEYS 获取给定命令的所有键 |
12 | TIME 返回当前服务器时间 |
13 | COMMAND INFO command-name [command-name ...] 获取指定 Redis 命令描述的数组 |
14 | CONFIG GET parameter 获取指定配置参数的值 |
15 | CONFIG REWRITE 对启动 Redis 服务器时所指定的 redis.conf 配置文件进行改写 |
16 | CONFIG SET parameter value 修改 redis 配置参数,无需重启 |
17 | CONFIG RESETSTAT 重置 INFO 命令中的某些统计数据 |
18 | DBSIZE 返回当前数据库的 key 的数量 |
19 | DEBUG OBJECT key 获取 key 的调试信息 |
20 | DEBUG SEGFAULT 让 Redis 服务崩溃 |
21 | FLUSHALL 删除所有数据库的所有key |
22 | FLUSHDB 删除当前数据库的所有key |
23 | INFO [section] 获取 Redis 服务器的各种信息和统计数值 |
24 | LASTSAVE 返回最近一次 Redis 成功将数据保存到磁盘上的时间,以 UNIX 时间戳格式表示 |
25 | MONITOR 实时打印出 Redis 服务器接收到的命令,调试用 |
26 | ROLE 返回主从实例所属的角色 |
27 | SAVE 异步保存数据到硬盘 |
28 | SHUTDOWN [NOSAVE] [SAVE] 异步保存数据到硬盘,并关闭服务器 |
29 | SLAVEOF host port 将当前服务器转变为指定服务器的从属服务器(slave server) |
30 | SLOWLOG subcommand [argument] 管理 redis 的慢日志 |
31 | SYNC 用于复制功能(replication)的内部命令 |
三、Redis Sentinal 操作
登录Sentinal的方式和登录Redis的方式一样:
redis-cli -h <hostname> -p <port>
Sentinal的命令有几个,掌握重要的即可:
- ping:返回 PONG 。
- sentinel masters :列出所有被监视的主服务器,以及这些主服务器的当前状态。
- sentinel master <master name>:特定主服务器的当前状态。
- sentinel slaves <master name>:列出给定主服务器的所有从服务器,以及这些从服务器的当前状态。
- sentinel sentinels <master name>:显示监视指定主服务器的所有sentinel和他们的状态。
- sentinel get-master-addr-by-name <master name> : 返回给定名字的主服务器的 IP 地址和端口号。 如果这个主服务器正在执行故障转移操作, 或者针对这个主服务器的故障转移操作已经完成, 那么这个命令返回新的主服务器的 IP 地址和端口号。
- sentinel reset <pattern>: 重置所有名字和给定模式 pattern 相匹配的主服务器。 pattern 参数是一个 Glob 风格的模式。 重置操作清楚主服务器目前的所有状态, 包括正在执行中的故障转移, 并移除目前已经发现和关联的, 主服务器的所有从服务器和 Sentinel 。
- sentinel failover : 当主服务器失效时, 在不询问其他 Sentinel 意见的情况下, 强制开始一次自动故障迁移 (不过发起故障转移的 Sentinel 会向其他 Sentinel 发送一个新的配置,其他 Sentinel 会根据这个配置进行相应的更新)。
四、Redis cluster 操作
登录cluster后,主要命令如下:
- CLUSTER INFO 打印集群的信息
- CLUSTER NODES 列出集群当前已知的所有节点(node),以及这些节点的相关信息。
- CLUSTER RESET reset
- CLUSTER SAVECONFIG 强制节点保存集群当前状态到磁盘上。
- CLUSTER SLOTS 获得slot在节点上的映射关系
- CLUSTER MEET <ip> <port> 将 ip 和 port 所指定的节点添加到集群当中,让它成为集群的一份子。
- CLUSTER FORGET <node_id> 从集群中移除 node_id 指定的节点。
- CLUSTER REPLICATE <node_id> 将当前节点设置为 node_id 指定的节点的从节点。
- CLUSTER SLAVES <node_id> 列出该slave节点的master节点
- CLUSTER ADDSLOTS <slot> [slot ...] 将一个或多个槽(slot)指派(assign)给当前节点。
- CLUSTER DELSLOTS <slot> [slot ...] 移除一个或多个槽对当前节点的指派。
- CLUSTER FLUSHSLOTS 移除指派给当前节点的所有槽,让当前节点变成一个没有指派任何槽的节点。
- CLUSTER SETSLOT <slot> NODE <node_id> 将槽 slot 指派给 node_id 指定的节点,如果槽已经指派给另一个节点,那么先让另一个节点删除该槽>,然后再进行指派。
- CLUSTER SETSLOT <slot> MIGRATING <node_id> 将本节点的槽 slot 迁移到 node_id 指定的节点中。
- CLUSTER SETSLOT <slot> IMPORTING <node_id> 从 node_id 指定的节点中导入槽 slot 到本节点。
- CLUSTER SETSLOT <slot> STABLE 取消对槽 slot 的导入(import)或者迁移(migrate)。
- CLUSTER KEYSLOT <key> 计算键 key 应该被放置在哪个槽上。
- CLUSTER COUNTKEYSINSLOT <slot> 返回槽 slot 目前包含的键值对数量。
- CLUSTER GETKEYSINSLOT <slot> <count> 返回 count 个 slot 槽中的键
- READONLY 在集群中的salve节点开启只读模式
- READWRITE 禁止读取请求跳转到集群中的salve节点上