Redis服务器基础和哨兵模式

最近在学习redis,基础命令已经学习完了;就找了一些服务器基础看了一下,整理了一下

一、 为什么用Redis

简单总结一下:

  1. 基于内存实现的key-value类型的存储,速度快,性能好
  2. 支持多种存储类型,有Strings,Hashes,Sets,Lists,Sorted Sets类型
  3. 支持数据持久化,有Snapshotting,Append-Only File模式的持久化
  4. 支持主从复制、哨兵和集群
  5. 支持消息的发布和订阅
  6. 安全性的支持
  7. 支持数据过期

二、Redis应用场景

redis应用场景太多了,这里简单说几种:

  1. 用于热数据的存储:比如商城top10
  2. 时间过期:短信验证码的时间
  3. 计数器:由于Redis是单线程且命令的原子性,可用来构建计数器
  4. 消息的发布和订阅:可用作简单的消息队列
  5. 缓存:减轻数据库访问压力
  6. 分布式session:spring 的session可以用redis做服务器
  7. 分布式锁(redis 官方推荐 Redlock 来实现分布式锁)

三、搭建redis主从复制模式

我们次用redis 5.x 版本;之前的版本略微有点差异。

1. redis的编译和安装

a. 去官网下载 Redis 5.0 版本的源码包;

b. 解压、编译并安装 Redis 5.0

tar -zxvf redis-5.0.0.tar.gz
cd redis-5.0.0
make && make install

这里我把 redis-5.0.0/src 添加到用户变量中,以便于使用,修改用户目录下的 .bashrc,追加一行内容:

export PATH=$PATH:/usr/local/redis-5.0.0/src

保存文件以后,重新加载配置文件,变量就可以生效了

source .bashrc
2. 创建配置文件

这一步我们需要创建redis的配置文件,这里我们采用 1主2从 的配置方式,三份文件公共部分使用同一个文件,不同部分独立文件,然后复用公共部分的文件。

redis-5.0.0 目录下有一个默认的配置文件 redis.config ,这个是redis的默认配置文件

首先,我们在用户目录下创建一个文件夹 master-salver,用来放配置文件,然后将 reids 的默认配置件赋值过去一份,进入文件作一下修改:

bind 127.0.0.1		# 注释掉此条配置(以便外网访问)
port 7000			# 注释掉此条配置(在单独的文件中配置)
daemonize yes		# 原为no,修改为yes;修改为后台运行
pidfile /var/run/redis-6379.pid	# 注释掉(在单独的文件中配置)
logfile ""			# 注释掉(在单独的文件中配置)
dir ./				# 注释掉(在单独的文件中配置)
replicaof <masterip> <masterport>	# 默认是注释,先不用管它
masterauth <master-password>		# 默认是注释,先不用管它
requirepass foobared				# 默认是注释,先不用管它

然后,创建 redis-6397.confredis-6398.confredis-6399.conf 配置文件,这里讲 6397 用作主服务器,其他两个用作从服务器,添加一下配置:

port 6397			# 配置服务端口号,三分配置文件根据实际情况修改
pidfile /opt/redis-cluster/redis-server-6397/6397.pid		# 配置服务pID位置,三个配置文件不同
logfile "/opt/redis-cluster/redis-server-6397/6397.log"		# 配置日志文件存储位置,三个配置文件不同
dir /opt/redis-cluster/redis-server-6397/data				# 配置数据文件位置,三个配置文件不同
# replicaof <masterip> <masterport>		# 主服务器不需要配置,从服务器需要配置主服务器的 ip 和 port
masterauth admin						# 配置从服务器到主服务器的密码验证
requirepass admin						# 配置登录密码

配置好三份文件后,使用 redis-server redis-6397.confredis-server redis-6398.confredis-server redis-6399.conf 启动服务
使用 ps -ef | grep redis 查看是否三个服务都正常启动,使用 redis-cli -h ip地址 -p 端口 -a 密码,通过客户端登陆,执行 info replication,可以查看到主从信息。

验证:

使用客户端分别连接三台服务器,在 6379set 的信息,在其他两台服务器上是可以查看的,其他两台服务器做 set 操作时会报错;说明搭建成功。

三、启用哨兵对主节点监控

因为我们是学习的原因,所以就在同一台服务器上搭建吧。

这里我们启动三个哨兵,对主节点进行监控;同样在 redis-5.0.0 目录下有一个默认的哨兵配置文件 sentinel.config 配置文件,复制这个文件到 master-salver 下,并重命名三份 sentinel-26380.confsentinel-26381.confsentinel-26382.conf ,修改配置文件:

protected-mode no		# 关闭保护模式,使外网能访问
port 26380				# 修改端口。三份文件分别不同
daemonize yes			# 修改为后台运行。
pidfile /opt/redis-cluster/redis-sentinel-26380/26380.pid	# 指定不同pid文件,注意文件夹不存在自己要新建。
logfile "/opt/redis-cluster/redis-sentinel-26380/26380.log"	# 配置哨兵日志文件。
dir /opt/redis-cluster/redis-sentinel-26380/data			# 配置哨兵工作路径。
sentinel monitor mymaster 192.167.3.145 7000 2	#配置哨兵需要监控的主节点ip和端口,最后的2代表,如果有2个哨兵主观认为主节点down了,那么就客观认为主节点down掉了,开始发起投票选举新主节点的操作。多个主节点配置多个。
sentinel auth-pass master7000 ibethfy				# 配置哨兵连接主节点的认证密码。(主节点配置的requirepass)。
sentinel down-after-milliseconds master7000 5000	# 配置多少毫秒后没收到主节点的反馈,则主观认为主节点down了。
sentinel failover-timeout master7000 30000			#failover过期时间。当failover开始后,在此时间内仍然没有触发任何failover操作,当前sentinel将会认为此次failoer失败。 

配置好三份文件后,执行 redis-sentinel sentinel-26380.confredis-sentinel sentinel-26381.confredis-sentinel sentinel-26382.conf 分别启动三个哨兵

验证:

kill掉 6397 端口的redis服务(我的主节点是 6397 ),一段时间后,使用 info replication,查看服务信息;此时主节点已经切换为另一个服务了,我们重启 6397 端口的redis服务,这个服务也只能作为从节点。

此时是否从节点的某一个已切换成主节点,另一个从节点属于新主节点的从节点。并测试主节点再次上线后,是否是新主节点的从节点。

哨兵的细节问题,可参考:http://www.redis.cn/topics/sentinel.html。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值