Message Service
Redis
01.Redis
02.Installation From source code
03.redis的配置文件
04.Redis 命令行
05.数据结构和内部编码
06.Redis 客户端
07.慢查询
08.Pipeline
09.发布订阅 and 消息队列
10.Redis持久化策略
11.Redis主从同步
12.Redis Sentinel
13.redis cluster
14.FQA
15.Redis 数据迁移
16.supervisord 管理 redis
17.缓存管理
18.事务
19.CacheCloud
20.Redis Cluster在线扩容、缩容、迁移
22.redis 6.2.6 for arm
21.maxmemory-policy
redis-6.3.6
ActiveMQ
1.JMS
9.使用hawtio进行监控 ActiveMQ
8. Replicated Message Store
7.activeMQ支持的五种协议
6.监控 ActiveMQ
5.安全机制
4.消息持久化
3.Web管理ActiveMQeMQ
2.ActiveMQ安装配置
10.高可用环境
本文档使用 MrDoc 发布
-
+
home page
redis-6.3.6
# 1.集群规划 | ip | hostname | os | user | password | role | | --- | --- | --- | --- | --- | --- | | 193.169.100.69 | xx-10 | CentOS8.4 | root | master | | 193.169.100.50 | xx-11 | CentOS8.4 | root | master | | 193.169.100.51 | xx-12 | CentOS8.4 | root | master | # 2.From source code 源码地址:https://download.redis.io/releases/redis-6.2.6.tar.gz step 1.Download, extract and compile Redis with: ``` $ wget https://download.redis.io/releases/redis-6.2.6.tar.gz $ tar xzf redis-6.3.6.tar.gz $ cd redis-6.3.6 $ make ``` step 2.启动redis-server 现在编译的二进制文件在 src 目录中可用。 使用以下命令运行 Redis: ``` $ src/redis-server ``` 您可以使用内置客户端与 Redis 进行交互: ``` $ src/redis-cli redis> set foo bar OK redis> get foo "bar" ``` step 3.使用如下的命令,进行安装 ``` make install PREFIX=/usr/local/redis ``` 命令行: - redis-server redis服务器 - redis-cli redis客户端 - redis-benchmark redis性能测试工具 - redis-check-aof AOF文件修复工具 - redis-check-rdb RDB文件修复工具 # 3.部署 redis cluster step 1.创建配置文件 ``` cat > /opt/redis-6.3.6/conf/redis.conf <<EOF ################################## INCLUDES ################################### # include /path/to/local.conf # include /path/to/other.conf ################################## MODULES ##################################### # loadmodule /path/to/my_module.so # loadmodule /path/to/other_module.so ################################## NETWORK ##################################### bind 0.0.0.0 # 修改protected-mode,支持远程访问 protected-mode yes port 6379 # TCP listen() backlog. tcp-backlog 511 # Close the connection after a client is idle for N seconds (0 to disable) timeout 0 # TCP keepalive. tcp-keepalive 300 ################################# TLS/SSL ##################################### # 默认情况下,TLS/SSL 是禁用的。 要启用它,“tls-port”配置指令可用于定义 TLS 侦听端口。 ################################# GENERAL ##################################### # 默认情况下,Redis 不作为守护进程运行。 如果需要,请使用“是”。 # 注意Redis在守护进程时会在/var/run/redis.pid中写入一个pid文件。 # Redis 由 upstart 或 systemd 监督时,此参数没有影响。 daemonize yes pidfile /var/run/redis_6379.pid logfile "logs/6379.log" # 设置数据库数量。 默认数据库是 DB 0,您可以使用 SELECT <dbid> 为每个连接选择不同的数据库,其中 dbid 是介于 0 和 'databases'-1 之间的数字 databases 16 ################################ SNAPSHOTTING ################################ # Save the DB to disk. dbfilename dump.rdb # redis的软件安装目录 dir ./ ################################# REPLICATION ################################# # 主副本复制。 使用 replicaof 使 Redis 实例成为另一个 Redis 服务器的副本。 关于 Redis 复制的一些事情要尽快理解。 ############################### KEYS TRACKING ################################# # Redis 实现了对客户端缓存值的服务器辅助支持。 # 这是使用一个失效表来实现的,该表使用一个由键名索引的基键来记住哪些客户端有哪些键。 反过来,这用于向客户端发送无效消息。 ################################## SECURITY ################################### # 警告:由于 Redis 非常快,外部用户每秒最多可以尝试 100 万个密码来对抗现代机器。 这意味着您应该使用非常强大的密码,否则它们将很容易被破解。 # 请注意,因为密码实际上是客户端和服务器之间的共享秘密,不应该被任何人记住,密码可以很容易地是来自 /dev/urandom 或其他任何东西的长字符串,所以使用长且不可猜测的 密码没有暴力攻击是可能的。 ################################### CLIENTS #################################### # 设置同时连接的最大客户端数。 默认情况下,此限制设置为 10000 个客户端,但是如果 Redis 服务器无法配置进程文件限制以允许指定的限制,则允许的最大客户端数设置为当前文件限制 - 32(因为 Redis 保留了一个 很少有内部使用的文件描述符)。 # 一旦达到限制,Redis 将关闭所有新连接,发送错误“达到最大客户端数”。 # 重要提示:当使用 Redis Cluster 时,最大连接数也与集群总线共享:集群中的每个节点将使用两个连接,一个传入,一个传出。 在非常大的集群的情况下,相应地调整限制大小是很重要的。 # maxclients 10000 # 如果为 yes,代表为只读状态,但并不表示客户端用集群方式以从节点为入口连入集群时,不可以进行 set 操作,且 set 操作的数据不会被放在从节点的槽上,会被放到某主节点的槽上。 slave-read-only no ############################## MEMORY MANAGEMENT ################################ # 将内存使用限制设置为指定的字节数。 # 当达到内存限制时,Redis 将尝试根据选择的驱逐策略删除键(参见 maxmemory-policy)。 ############################# LAZY FREEING #################################### # Redis 有两个删除键的原语。 一种称为 DEL,是对对象的阻塞删除。 这意味着服务器停止处理新命令,以便以同步方式回收与对象关联的所有内存。 # 如果删除的键与一个小对象相关联,则执行 DEL 命令所需的时间非常短,与 Redis 中的大多数其他 O(1) 或 O(log_N) 命令相当。 # 但是,如果键与包含数百万个元素的聚合值相关联,则服务器可以阻塞很长时间(甚至几秒钟)以完成操作。 ################################ THREADED I/O ################################# # Redis 大部分是单线程的,但是有一些线程操作,例如 UNLINK、慢 I/O 访问和其他在侧线程上执行的事情。 ############################ KERNEL OOM CONTROL ############################## # 在 Linux 上,可以提示内核 OOM 杀手在内存不足时应该首先杀死哪些进程。 #################### KERNEL transparent hugepage CONTROL ###################### # 通常内核透明大页面控件默认设置为“madvise”或“never”(/sys/kernel/mm/transparent_hugepage/enabled),在这种情况下,此配置无效。 # 在将其设置为“始终”的系统上,redis 将尝试专门为 redis 进程禁用它,以避免专门针对 fork(2) 和 CoW 的延迟问题。 # 如果出于某种原因您希望保持启用状态,您可以将此配置设置为“no”,并将内核全局设置为“always”。 disable-thp yes ############################## APPEND ONLY MODE ############################### # Redis的持久化存储提供两种方式:RDB与AOF。RDB是默认配置。AOF需要手动开启 appendonly yes # 保存数据的AOF文件名称 原文1 appendfilename "appendonly.aof" # appendfysnc是对redis性能有重要影响的参数之一。可取三种值:always、everysec和no。 # 设置为always时,会极大消弱Redis的性能,因为这种模式下每次write后都会调用fsync(Linux为调用fdatasync)。 # 如果设置为no,则write后不会有fsync调用,由操作系统自动调度刷磁盘,性能是最好的。 # everysec为最多每秒调用一次fsync,这种模式性能并不是很糟糕,一般也不会产生毛刺,这归功于Redis引入了BIO线程,所有fsync操作都异步交给了BIO线程。 appendfsync always ################################ LUA SCRIPTING ############################### # Lua 脚本的最大执行时间,以毫秒为单位。 # 如果达到最大执行时间,Redis 将记录脚本在最大允许时间后仍在执行,并将开始回复错误的查询。 # 当长时间运行的脚本超过最大执行时间时,只有 SCRIPT KILL 和 SHUTDOWN NOSAVE 命令可用。 第一个可用于停止尚未调用任何写入命令的脚本。 第二种是在脚本已经发出写入命令但用户不想等待脚本自然终止的情况下关闭服务器的唯一方法。 # 将其设置为 0 或负值以无限执行而不会发出警告。 lua-time-limit 5000 ################################ REDIS CLUSTER ############################### cluster-enabled yes # 集群配置信息文件,由Redis自行更新,不用手动配置。每个节点都有一个集群配置文件用于持久化保存集群信息,需确保与运行中实例的配置文件名不冲突。 cluster-config-file nodes-6379.conf # 主观下线超时时间 cluster-node-timeout 15000 # 如果设置为0,只要发现主节点失联,那么从节点总会去尝试进行故障转移 # 如果为正数,一旦从节点与主节点失联的时间超过 cluster-node-timeout * cluster-replica-validity-factor + ping的间隔时间,那么该从节点不会进行故障转移 # 如果为非0的值,一旦所有从节点都不可进行故障转移时,集群将不再对外提供服务,直到主节点重新加入集群 cluster-replica-validity-factor 10 # 集群副本能够迁移到孤立的主服务器,即没有工作副本的主服务器。 这提高了集群抵抗故障的能力,否则如果孤立的主服务器没有工作副本,则在发生故障时无法进行故障转移。 # 只有当它们的旧主服务器至少还有给定数量的其他工作副本时,副本才会迁移到孤立的主服务器。 这个数字就是“迁移障碍”。 迁移屏障为 1 意味着只有当其主副本至少有 1 个其他工作副本时,副本才会迁移,依此类推。 它通常反映了您希望集群中每个主服务器的副本数量。 # 默认为 1(副本仅在其主服务器保留至少一个副本时迁移)。 要禁用迁移,只需将其设置为一个非常大的值或将 cluster-allow-replica-migration 设置为“no”。 # 可以设置 0 值,但仅对调试有用,在生产中很危险。 # cluster-migration-barrier 1 # 关闭此选项允许使用较少的自动集群配置。 # 它既禁止迁移到孤立的主控,也禁用从变空的主控的迁移。 # 默认为“是”(允许自动迁移)。 # cluster-allow-replica-migration yes # 默认情况下,如果 Redis Cluster 节点检测到至少有一个未覆盖的哈希槽(没有可用的节点为其提供服务),则它们会停止接受查询。 # 这样,如果集群部分宕机(例如,一系列哈希槽不再被覆盖),所有集群最终都会变得不可用。 # 一旦再次覆盖所有插槽,它就会自动返回可用。 # 但是,有时您希望正在工作的集群子集继续接受对仍然覆盖的部分键空间的查询。 为此,只需将 cluster-require-full-coverage 选项设置为 no。 # cluster-require-full-coverage yes # 当设置为“是”时,此选项可防止复制副本在主服务器故障期间尝试故障转移其主服务器。但是,如果强制执行手动故障转移,主服务器仍然可以执行手动故障转移。 # 这在不同的情况下非常有用,特别是在多个数据中心操作的情况下,如果在整个DC故障的情况下不希望一方被提升,我们希望它永远不会被提升。 cluster-replica-no-failover no # 如果将其设置为no(默认情况下为默认值),则当Redis群集被标记为失败时,或者当节点无法到达时,Redis群集中的节点将停止为所有流量提供服务法定人数的主持人或未达到完全覆盖的情况。这样可以防止从不知道群集更改的节点读取可能不一致的数据。可以将此选项设置为yes,以允许在失败状态期间从节点进行读取,这对于希望优先考虑读取可用性但仍希望防止写入不一致的应用程序很有用。当仅使用一个或两个分片的Redis Cluster时,也可以使用它,因为它允许节点在主服务器发生故障但无法进行自动故障转移时继续为写入提供服务。 cluster-allow-reads-when-down no # In order to setup your cluster make sure to read the documentation available at https://redis.io web site. ########################## CLUSTER DOCKER/NAT support ######################## # 在某些部署中,Redis Cluster 节点地址发现失败,因为地址是 NAT-ted 或者是因为端口被转发(典型情况是 Docker 和其他容器)。 ################################## SLOW LOG ################################### # Redis 慢日志是一个记录超过指定执行时间的查询的系统。执行时间不包括与客户端对话、发送回复等 I/O 操作, # 但只是实际执行命令所需的时间(这是命令执行的唯一阶段,线程被阻塞并且同时无法服务其他请求)。 ################################ LATENCY MONITOR ############################## # Redis 延迟监控子系统在运行时对不同的操作进行采样,以收集与 Redis 实例的可能延迟来源相关的数据。 ############################# EVENT NOTIFICATION ############################## # Redis 可以通知 Pub/Sub 客户端有关密钥空间中发生的事件。 # 此功能记录在 https://redis.io/topics/notifications ############################### GOPHER SERVER ################################# # Redis 包含 Gopher 协议的实现,如 RFC 1436 (https://www.ietf.org/rfc/rfc1436.txt) 中所述。 ############################### ADVANCED CONFIG ############################### # 当条目数量较少且最大条目不超过给定阈值时,哈希使用内存高效的数据结构进行编码。可以使用以下指令配置这些阈值。 ########################### ACTIVE DEFRAGMENTATION ####################### # # 什么是主动碎片整理? EOF ``` step 2.修改服务器参数 以root用户vi编辑sysctl.conf文件,增加以下参数 ``` cat >> /etc/sysctl.conf <<EOF vm.nr_hugepages=2000 vm.overcommit_memory=1 net.core.somaxconn=1024 EOF ``` 保存并退出,使配置生效 ``` sysctl -p ``` step 3.配置 transparent_hugepage 添加内容至/etc/rc.local ``` cat >> /etc/rc.local <<EOF echo never > /sys/kernel/mm/transparent_hugepage/enabled EOF ``` 保存并退出,添加可执行权限 ``` chmod +x /etc/rc.d/rc.local ``` step 4.启动Redis服务 ``` bin/redis-server conf/redis.conf ``` step 5.查看节点的信息,只能查看自己的信息 cluster-config-file;配置集群的配置文件,里面包含了集群节点的ID等信息。节点ID不同于运行ID,节点ID在集群初始化时只,创建一次,节点重启的时候不会改改变,而运行时ID会改变。 ``` [root@xx-10 redis-6.3.6]# cat nodes-6379.conf 7d3eccf24c642c0d3cb93c588512fad199ede58b :0@0 myself,master - 0 0 0 connected vars currentEpoch 0 lastVoteEpoch 0 [root@xx-10 redis-6.3.6]# ``` 执行cluster命令与配置文件的信息一致 ``` [root@xx-10 redis-6.3.6]# bin/redis-cli -h 193.169.100.69 -p 6379 cluster nodes 7d3eccf24c642c0d3cb93c588512fad199ede58b :6379@16379 myself,master - 0 0 0 connected [root@xx-10 redis-6.3.6]# [root@xx-10 redis-6.3.6]# [root@xx-10 redis-6.3.6]# bin/redis-cli -h 193.169.100.69 -p 6379 cluster nodes 7d3eccf24c642c0d3cb93c588512fad199ede58b :6379@16379 myself,master - 0 0 0 connected [root@xx-10 redis-6.3.6]# [root@xx-10 redis-6.3.6]# bin/redis-cli -h 193.169.100.69 -p 6379 cluster info cluster_state:fail cluster_slots_assigned:0 cluster_slots_ok:0 cluster_slots_pfail:0 cluster_slots_fail:0 cluster_known_nodes:1 cluster_size:0 cluster_current_epoch:0 cluster_my_epoch:0 cluster_stats_messages_sent:0 cluster_stats_messages_received:0 [root@xx-10 redis-6.3.6]# ``` # 4.创建集群 ## 4.1.redis-cli创建集群 ``` redis-cli --cluster create 193.169.100.69:6379 193.169.100.50:6379 193.169.100.51:6379 ``` ## 4.2.手工创建集群 ### 4.2.1.meet step 1.在节点1上执行meet,添加一个1节点 ``` [root@xx-10 redis-6.3.6]# bin/redis-cli -h 193.169.100.69 -p 6379 cluster meet 193.169.100.50 6379 OK [root@xx-10 redis-6.3.6]# ``` step 2.查看节点cluster信息 节点1 ``` [root@xx-10 redis-6.3.6]# bin/redis-cli -h 193.169.100.69 -p 6379 cluster nodes 7d3eccf24c642c0d3cb93c588512fad199ede58b 193.169.100.69:6379@16379 myself,master - 0 0 0 connected 7323875680cff72a044fe8616398e923d1d4c051 193.169.100.50:6379@16379 master - 0 1663419259852 1 connected [root@xx-10 redis-6.3.6]# ``` 节点2 ``` [root@xx-11 redis-6.3.6]# bin/redis-cli -h 193.169.100.69 -p 6379 cluster nodes 7d3eccf24c642c0d3cb93c588512fad199ede58b 193.169.100.69:6379@16379 myself,master - 0 0 0 connected 7323875680cff72a044fe8616398e923d1d4c051 193.169.100.50:6379@16379 master - 0 1663419318098 1 connected [root@xx-11 redis-6.3.6]# ``` step 3.未加入集群的节点不能发现其他节点信息 ``` [root@xx-12 redis-6.3.6]# bin/redis-cli -h 193.169.100.69 -p 6379 cluster nodes 7d3eccf24c642c0d3cb93c588512fad199ede58b :6379@16379 myself,master - 0 0 0 connected [root@xx-12 redis-6.3.6]# ``` step 4.依次添加剩余的节点 ``` [root@xx-10 redis-6.3.6]# bin/redis-cli -h 193.169.100.69 -p 6379 cluster meet 193.169.100.51 6379 OK [root@xx-10 redis-6.3.6]# ``` step 5.查看cluster信息 ``` [root@xx-10 redis-6.3.6]# bin/redis-cli -h 193.169.100.69 -p 6379 cluster nodes 174c5678b90767e3b62ab06ac2813e5dcf3f09b5 193.169.100.51:6379@16379 master - 0 1663419385422 2 connected 7d3eccf24c642c0d3cb93c588512fad199ede58b 193.169.100.69:6379@16379 myself,master - 0 1663419382000 0 connected 7323875680cff72a044fe8616398e923d1d4c051 193.169.100.50:6379@16379 master - 0 1663419384420 1 connected [root@xx-10 redis-6.3.6]# [root@xx-10 redis-6.3.6]# bin/redis-cli -h 193.169.100.69 -p 6379 cluster info cluster_state:fail cluster_slots_assigned:0 cluster_slots_ok:0 cluster_slots_pfail:0 cluster_slots_fail:0 cluster_known_nodes:3 cluster_size:0 cluster_current_epoch:2 cluster_my_epoch:0 cluster_stats_messages_ping_sent:152 cluster_stats_messages_pong_sent:150 cluster_stats_messages_meet_sent:3 cluster_stats_messages_sent:305 cluster_stats_messages_ping_received:149 cluster_stats_messages_pong_received:155 cluster_stats_messages_meet_received:1 cluster_stats_messages_received:305 [root@xx-10 redis-6.3.6]# ``` 集群状态为 fail meet 脚本 ``` #!/bin/bash #create other nodes,implements meet nodes=(xx-10 xx-11 xx-12) for node in ${nodes[@]} do if [ -n "$1" ]; then ./redis-cli -p $1 cluster meet 127.0.0.1 $node if [ $? = 0 ]; then echo " meet susccess ! "; else echo " meet fail !"; fi else echo " not find paras "; fi done ``` ### 4.2.2.指派槽 step 1.使用集群发送消息 ``` [root@xx-10 redis-6.3.6]# bin/redis-cli -h 193.169.100.69 -p 6379 193.169.100.69:6379> set hello world (error) CLUSTERDOWN Hash slot not served 193.169.100.69:6379> ``` 集群的hash槽没有提供,即已启动Redis的主从节点实例服务,集群要分配16384个槽来储存数据,那么没有分配槽则报如上错误,但没有将这些实例合并成一个集群。 step 2.该问题解决的方法如下: ``` [root@localhost service_project]# bin/redis-cli --cluster fix 127.0.0.1:6379 ``` 此后会进行fix操作设置。 原因是集群的hash槽未能正常运行,所以可以去检查集群的slots的问题,我们知道redis的hash槽数目是16384个,用于储存数据的,而这些槽并未完全被分配到所有节点。 ``` [OK] All nodes agree about slots configuration. >>> Check for open slots... >>> Check slots coverage... [ERR] Not all 16384 slots are covered by nodes. *** Fixing slots coverage with 1 unreachable masters is dangerous: redis-cli will assume that slots about masters that are not reachable are not covered, and will try to reassign them to the reachable nodes. This can cause data loss and is rarely what you want to do. If you really want to proceed use the --cluster-fix-with-unreachable-masters option. [root@xx-05 redis-6.3.6]# ``` 执行命令: ``` bin/redis-cli --cluster fix --cluster-fix-with-unreachable-masters 193.169.100.64:6379 ``` 在redis的安装目录下的src目录下,执行以下命令进行集群的检测: ``` ./redis-trib.rb check 127.0.0.1:6379 ``` 如果检测结果为:[ERR] Not all 16384 slots are covered by nodes。 执行修复命令: ``` ./redis-trib.rb fix 127.0.0.1:6379 ``` 修复完成后,即可成功运行项目程序。 step 3.查看集群信息 ``` [root@xx-10 redis-6.3.6]# bin/redis-cli -h 193.169.100.69 -p 6379 cluster info cluster_state:ok cluster_slots_assigned:16384 cluster_slots_ok:16384 cluster_slots_pfail:0 cluster_slots_fail:0 cluster_known_nodes:3 cluster_size:3 cluster_current_epoch:25 cluster_my_epoch:25 cluster_stats_messages_ping_sent:1123 cluster_stats_messages_pong_sent:1028 cluster_stats_messages_meet_sent:3 cluster_stats_messages_sent:2154 cluster_stats_messages_ping_received:1027 cluster_stats_messages_pong_received:1126 cluster_stats_messages_meet_received:1 cluster_stats_messages_received:2154 [root@xx-10 redis-6.3.6]# ``` step 4.此时可以正常连接Redis ``` [root@xx-10 redis-6.3.6]# bin/redis-cli -h 193.169.100.69 -p 6379 193.169.100.69:6379> set hello world (error) MOVED 866 193.169.100.50:6379 193.169.100.69:6379> ``` 因为 redis-cli 时没有设置集群模式所导致。 启动时使用 -c 参数来启动集群模式,命令如下: ``` [root@xx-10 redis-6.3.6]# bin/redis-cli -h 193.169.100.69 -p 6379 -c 193.169.100.69:6379> set hello world -> Redirected to slot [866] located at 193.169.100.50:6379 OK 193.169.100.50:6379> ``` ### 4.2.3.分配主从 step 1.查看node信息 ``` [root@xx-10 redis-6.3.6]# bin/redis-cli -h 193.169.100.69 -p 6379 cluster nodes 174c5678b90767e3b62ab06ac2813e5dcf3f09b5 193.169.100.51:6379@16379 master - 0 1663419552000 2 connected 7d3eccf24c642c0d3cb93c588512fad199ede58b 193.169.100.69:6379@16379 myself,master - 0 1663419547000 0 connected 7323875680cff72a044fe8616398e923d1d4c051 193.169.100.50:6379@16379 master - 0 1663419552057 1 connected [root@xx-10 redis-6.3.6]# ``` step 2.主节点创建副本 ``` [root@xx-10 redis-6.3.6]# bin/redis-cli -h 193.169.100.52 -p 6379 cluster replicate 8a17f64474b9411cb4d1c9f1ca9def67afe37f8f OK [root@xx-10 redis-6.3.6]# [root@xx-10 redis-6.3.6]# bin/redis-cli -h 193.169.100.53 -p 6379 cluster replicate 8f6268d5dbe182ac270d0034f3670b59b9b32bbb OK [root@xx-10 redis-6.3.6]# [root@xx-10 redis-6.3.6]# bin/redis-cli -h 193.169.100.54 -p 6379 replicate 6f6c54fbd6fa015eebea66f24bfbaf0253c0bdf2 OK [root@xx-10 redis-6.3.6]# ``` step 3.查看主从关系 ``` bin/redis-cli -h 193.169.100.54 -p 6379 cluster nodes ``` 三主三从的cluster。 # 5.集群测试: ``` # 运行命令-c是集群启动标识重定向 redis-cli -h 193.169.100.157 -p 6379 -a admin123 -c # 创建 set key104 hello104 # 查询 get key104 # 删除 del key104 # 查看集群 cluster info cluster nodes ``` # 6.集群启动脚本: ``` #!/bin/bash case $1 in "start"){ for i in hadoop102 hadoop103 hadoop104 hadoop105 hadoop106 do echo "----------- redis $i 启动 --------------" ssh $i 'redis-server /opt/redis/conf/redis6379.conf' ssh $i 'redis-server /opt/redis/conf/redis6380.conf' done };; "stop"){ for i in hadoop102 hadoop103 hadoop104 hadoop105 hadoop106 do echo "----------- redis $i 停止 --------------" redis-cli -h $i -p 6379 -a admin123 -c shutdown redis-cli -h $i -p 6380 -a admin123 -c shutdown done };; esac ```
Seven
Sept. 19, 2022, 7:59 p.m.
转发文档
Collection documents
Last
Next
手机扫码
Copy link
手机扫一扫转发分享
Copy link
Markdown文件
share
link
type
password
Update password