当前位置:首页 > 公众号精选 > 架构师社区
[导读]本篇文章讲述了Redis单机环境、主备、哨兵Sentinel模式以及RedisCluster集群模式下的操作步骤,关于这些操作我们没必要死记硬背,只需要总结下来,下次使用直接拿出来就好。建议当作操作手册收藏。安装单实例Redis编译Redis1.下载Redis源码包wgethtt...

本篇文章讲述了 Redis 单机环境、主备、哨兵 Sentinel 模式以及 Redis Cluster 集群模式下的操作步骤,关于这些操作我们没必要死记硬背,只需要总结下来,下次使用直接拿出来就好。

建议当作操作手册收藏。

安装单实例 Redis

编译Redis

1.下载Redis源码包wget https://download.redis.io/releases/redis-5.0.13.tar.gz2.解压文件tar -zxvf redis-5.0.13.tar.gz3.cd redis-5.0.134.make 编译

1.如果遇到以下报错,需要安装依赖 yum install gcc

2.如果遇到以下报错

分配器allocator, 如果有MALLOC 这个 环境变量, 会有用这个环境变量的 去建立Redis。

而且libc 并不是默认的 分配器, 默认的是 jemalloc, 因为 jemalloc 被证明 有更少的 fragmentation problems 比libc。

但是如果你又没有jemalloc 而只有 libc 当然 make 出错。所以加这么一个参数,运行如下命令:

make MALLOC=libc

此时编译完成,文件目录下已经生成可执行文件。



安装Redis服务

1.安装编译后的文件make install PREFIX=/usr/local/redis52.编辑环境变量vi /etc/profile3.追加如下信息

export REDIS_HOME=/usr/local/redis5export PATH=$PATH:$REDIS_HOME/bin4.更新配置source /etc/profile

echo $PATH检查环境变量是否正确

5.cd utils/6.安装服务./install_server.sh然后出现如下输出

[root@node1 utils]# ./install_server.sh Welcome to the redis service installerThis script will help you easily set up a running redis server
Please select the redis port for this instance: [6379] 选择启动端口Selecting default: 6379Please select the redis config file name [/etc/redis/6379.conf] 设置配置文件目录Selected default - /etc/redis/6379.confPlease select the redis log file name [/var/log/redis_6379.log] 设置日志目录Selected default - /var/log/redis_6379.logPlease select the data directory for this instance [/var/lib/redis/6379] 设置数据库目录Selected default - /var/lib/redis/6379Please select the redis executable path [/usr/local/redis5/bin/redis-server] 设置可执行文件目录Selected config:Port : 6379Config file : /etc/redis/6379.confLog file : /var/log/redis_6379.logData dir : /var/lib/redis/6379Executable : /usr/local/redis5/bin/redis-serverCli Executable : /usr/local/redis5/bin/redis-cliIs this ok? Then press ENTER to go on or Ctrl-C to abort.Copied /tmp/6379.conf => /etc/init.d/redis_6379 复制配置文件Installing service... 安装服务Successfully added to chkconfig! 设置开机启动Successfully added to runlevels 345!Starting Redis server... 启动服务Installation successful!
7.service redis_6379 status 检查是否安装成功ps -ef|grep redis 检查正在运行的服务

配置修改

1.修改 配置信息vi /etc/redis/6379.conf (这一步可选)

daemonize no # 前台方式运行 为了方便观察#logfile /var/log/redis_6379.log #注释掉,前台输出 为了方便观察appendonly yes # aof同步开启
2.启动 redis-server /etc/redis/6379.conf3.启动客户端 redis-cli -p 6379

主备安装

1.使用install_server.sh再安装两个Redis实例,使用端口号在同一机器区分 这里分别使用6379,6380,6381,并且分别启动2.登陆客户端 redis-cli -p 63813.输入命令 help SLAVEOF,6380端口实例操作同理。

redis-cli -p 6381 127.0.0.1:6381>help SLAVEOFSLAVEOF host port summary: Make the server a replica of another instance, or promote it as master. Deprecated starting with Redis 5. Use REPLICAOF instead. since: 1.0.0 group: server
127.0.0.1:6381> REPLICAOF 127.0.0.1 6379 OK 127.0.0.1:6381>
4.设置追随6379为主 REPLICAOF 127.0.0.1 6379

6381变化:

6379变化:

25692:S 03 Sep 2021 20:19:53.182 * REPLICAOF 127.0.0.1:6379 enabled (user request from 'id=3 addr=127.0.0.1:42336 fd=7 name= age=113 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=44 qbuf-free=32724 obl=0 oll=0 omem=0 events=r cmd=replicaof')25692:S 03 Sep 2021 20:19:54.146 * Connecting to MASTER 127.0.0.1:637925692:S 03 Sep 2021 20:19:54.146 * MASTER <-> REPLICA sync started25692:S 03 Sep 2021 20:19:54.146 * Non blocking connect for SYNC fired the event.25692:S 03 Sep 2021 20:19:54.147 * Master replied to PING, replication can continue...25692:S 03 Sep 2021 20:19:54.147 * Trying a partial resynchronization (request 839fc4e0817f7c98e9fa8204c53aedf661c71bf1:1).25692:S 03 Sep 2021 20:19:54.148 * Full resync from master: 4cff4bffe3e33adcca1864de53064480eb00c200:025692:S 03 Sep 2021 20:19:54.148 * Discarding previously cached master state.25692:S 03 Sep 2021 20:19:54.251 * MASTER <-> REPLICA sync: receiving 176 bytes from master25692:S 03 Sep 2021 20:19:54.254 * MASTER <-> REPLICA sync: Flushing old data # 会先删除本节点老数据25692:S 03 Sep 2021 20:19:54.254 * MASTER <-> REPLICA sync: Loading DB in memory25692:S 03 Sep 2021 20:19:54.254 * MASTER <-> REPLICA sync: Finished with success
效果如下图:

如果一个节点首次追随主节点,会执行RDB同步 如果从节点挂掉,启动直接追随先前的主节点,只做增量同步 但是如果节点挂掉,启动直接追随先前的主节点,同步方式为AOF,则会做RDB全量同步。。可能是因为AOF没有记录之前追随过谁

取消追随主节点:REPLICAOF no one

哨兵模式 Sentinel

配置 sentinel

1.从redis源码目录复制官网提供的配置文件cp /root/soft/redis-5.0.13/sentinel.conf /etc/redis/sentinel_26379.conf2.修改配置文件

port 26379sentinel monitor mymaster 127.0.0.1 6379 23.启动sentinel实例redis-server /etc/redis/sentinel_26379.conf --sentinel 以此为例启动三台

 

4.设置 sentinel 成功

验证

1.此时杀死master 6379实例

2.选举6380为新的主节点

3.此时重启6379节点 

redis-server /etc/redis/6379.conf

其中一个sentinel输出如下

11035:X 04 Sep 2021 01:41:29.685 # -sdown slave 127.0.0.1:6379 127.0.0.1 6379 @ mymaster 127.0.0.1 638011035:X 04 Sep 2021 01:41:39.675 * convert-to-slave slave 127.0.0.1:6379 127.0.0.1 6379 @ mymaster 127.0.0.1 6380原有的主节点已经切换为备用节点

Redis Cluster

配置集群

1.查看Redis cluster相关命令 redis-cli --cluster help

[root@node1 ~]# redis-cli --cluster helpCluster Manager Commands: create host1:port1 ... hostN:portN --cluster-replicas check host:port --cluster-search-multiple-owners info host:port fix host:port --cluster-search-multiple-owners reshard host:port --cluster-from --cluster-to --cluster-slots --cluster-yes --cluster-timeout --cluster-pipeline --cluster-replace rebalance host:port --cluster-weight <node1=w1...nodeN=wN> --cluster-use-empty-masters --cluster-timeout --cluster-simulate --cluster-pipeline --cluster-threshold --cluster-replace add-node new_host:new_port existing_host:existing_port --cluster-slave --cluster-master-id del-node host:port node_id call host:port command arg arg .. arg set-timeout host:port milliseconds import host:port --cluster-from --cluster-copy --cluster-replace2.分别启动每个Redis实例

Redis 本身在Utils目录下提供了单机部署 cluster demo 的util脚本,可以快速一键部署。

cd /root/soft/redis-5.0.13/utils/create-cluster

vi create-cluster

# SettingsPORT=30000TIMEOUT=2000NODES=6 # 节点数REPLICAS=1 # 备用节点数 此配置为3主3从./create-cluster start 启动实例

./create-cluster create

3.redis-cli --cluster create 127.0.0.1:30001 127.0.0.1:30002 127.0.0.1:30003 127.0.0.1:30004 127.0.0.1:30005 127.0.0.1:30006 --cluster-replicas 1


4.创建集群完成,客户端链接校验redis-cli -c -p 30001

 如果发生了自动重定向,则表示RedisCluster使用正常


检查Redis cluster状态

1.redis-cli --cluster check 127.0.0.1:30001

reshrad Redis槽位

1.redis-cli --cluster reshard 127.0.0.1:300012.然后按照提示操作,首先选择要移动的槽位数量,然后选择接受节点


3.再选择需要从哪些节点移出槽位

4.最后输入done,然后yes确定5.检查移动后的结果 redis-cli --cluster info 127.0.0.1:30001


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

北京2023年9月19日 /美通社/ -- 随着科技的快速发展,我们正处在一个数据爆炸的时代。超大规模数据中心作为数据的重要存储和处理场所,其数量在不断增长,与之而来的数据量也在呈指数级增长。这不仅包括原始数据,还包括分...

关键字: 分布式 节点 软件 数据中心

(全球TMT2023年9月5日讯)在2023年华为云沙特峰会上,华为宣布,华为云利雅得节点正式开服。本次开服后,利雅得节点将成为华为云服务中东、中亚和非洲的核心节点。华为云利雅得节点通过3AZ(可用区)架构,提供了高可...

关键字: 节点 华为云 云服务 GO

沙特阿拉伯利雅得2023年9月4日 /美通社/ -- 在2023年华为云沙特峰会上,华为宣布,华为云利雅得节点正式开服,推动该国数字经济增长。 本次开服后,利雅得节点将成为华为云服务中东、中亚和非洲的核心节点,可提供创...

关键字: 华为云 节点 AI 数字化

全闪存存储的历史性时刻到来! 北京2023年8月30日 /美通社/ -- Gartner最新数据显示,2023年第一季度全球外部存储市场同比增长0.5%;其中,全闪存阵列同比增长3.6%,市场规模超过非全闪存阵列,占整...

关键字: 数据中心 数据存储 节点 机械硬盘

杭州2023年8月25日 /美通社/ -- 8月17日,以"绿色永续制造"为主题,正泰新能常务副总裁、可持续发展官黄海燕在在近期的一次公开演讲中,公布了以2028年、2035年和2050年为主要时间节...

关键字: 可持续发展 光伏组件 ROM 节点

(全球TMT2023年8月11日讯)8月9日,杭州鄂达精密机电科技有限公司的德沃克智造MES项目全面启动。鄂达精密成立于2007年,是一家专业从事高精密机电零部件设计研发、制造、销售为一体的国家级高新技术企业。鄂达精密...

关键字: 机电 节点 零部件 仓储物流

北京2023年2月27日 /美通社/ -- 2月25日,由中企联合CHIRC主办的"第十七届中国雇主品牌年会暨年度颁奖盛典"在京举行。 第十七届中国雇主品牌年会暨年度颁奖盛典现场 经中国雇主品牌年...

关键字: 数字化 SAAS 节点 创始人

北京2023年2月23日 /美通社/ -- 晴空万里、群星璀璨的丽江高美古,在纳西语中的释义是"天气好、星星多、离天最近的地方"。这里的年平均晴天超200天,视宁度达到世界优良台址的水平,大气洁净透明...

关键字: 分布式 望远镜 节点 读写

济南2023年1月28日 /美通社/ -- 近日,中国科学技术协会公布2022年“科创中国”系列榜单,经中国电子学会评审、推荐,中国科学技术协会两轮评审,浪潮集团旗下浪潮云洲入选新锐企业榜。 近日,中国科学技术协会公布...

关键字: 区块链 数字化 节点 中国电子学会

济南2022年12月22日 /美通社/ -- 近日,“链接湾区 融贯全球”2022第二届数字贸易创新应用峰会暨“星火·链网”国际超级节点(澳门)发布会在澳门举行,北京、山东设线上会场。会议由澳门特...

关键字: 节点 MIDDOT 信息通信 数字经济
关闭
关闭