linux安装redis,集群配置

安装redis服务:

下载地址: wget https://download.redis.io/releases/redis-6.2.4.tar.gz

解压:tar -zxvf redis-6.2.4.tar.gz

cd redis-6.2.4/  

安装:  make &&  make install

安装完成之后将有

redis-benchmark redis-check-aof redis-check-rdb  redis-cli redis-sentinel redis-server这些命令

直接执行 redis-server命令将以默认配置文件启动redis服务

下面介绍redis集群的配置方式,参考文档:

https://blog.csdn.net/miss1181248983/article/details/90056960

https://zhuanlan.zhihu.com/p/72945689

集群模式:主从模式, Sentinel, Cluster

主从模式:

特点:

  1. 主库有读写权限,从库只读,从库接收主库同步的数据

  2. 一对多关系, 一个master对应1个或多个slave

  3. master挂了不会在slave重新选master,且redis不再提供写功能

  4. slave挂了不影响其他slave的读和master的写

缺点:

不可高可用, 当master挂掉以后无法写入数据。

主从配置(同台机器):

配置master节点:

vim redis.conf
# 修改或新增键对应的值, 下同
bind 0.0.0.0
daemonize yes
masterauth 123456
requirepass 123456
appendonly yes
port 6379
pidfile /var/run/redis6379.pid
logfile "/var/log/redis/redis1.log"
appendfilename "appendonly1.aof"

配置slave节点:

cp redis.conf redis_slave.conf
vim  redis_slave.conf

bind 0.0.0.0
daemonize yes
masterauth 123456
requirepass 123456
appendonly yes
port 6389
pidfile /var/run/redis6389.pid
logfile "/var/log/redis/redis2.log"
appendfilename "appendonly2.aof"
replicaof 127.0.0.1 6379

配置slave2节点:

cp redis.conf redis_slave2.conf
vim  redis_slave2.conf
bind 0.0.0.0
daemonize yes
masterauth 123456
requirepass 123456
appendonly yes
port 6399
pidfile /var/run/redis6399.pid
logfile "/var/log/redis/redis3.log"
appendfilename "appendonly3.aof"
replicaof 127.0.0.1 6379

启动服务:

redis-server redis.conf
redis-server redis_slave1.conf
redis-server redis_slave2.conf

客户端:

开启3个命令终端执行:(执行之后需要输入auth 123456,认证密码)
redis-cli -h 127.0.0.1 -p 6379
redis-cli -h 127.0.0.1 -p 6389
redis-cli -h 127.0.0.1 -p 6399

Sentinel模式

描述:由于主从模式的弊端,因此Sentinel模式应运而生, sentinel模式是建立在主从模式的基础上,如果只有一个Redis节点,sentinel就没有任何意义

特点:

  1.   主动选择,当master挂了之后,Sentinel会在slave中选择一个做为master,并修改他们的配置文件。 

  2.   master重新启动后不再是master而是slave

  3.   sentinel因为也是一个进程有挂掉的可能,所以sentinel也会启动多个形成一个sentinel集群

  4.   一个sentinel或sentinel集群可以管理多个主从Redis,多个sentinel也可以监控同一个redis

配置master:

vim sentinel.conf
port 26379
daemonize yes
pidfile /var/run/redis-sentinel.pid
logfile "/usr/local/share/redis/sentinel.log"
dir "/usr/local/share/redis/sentinel"        #sentinel工作目录
sentinel monitor mymaster 127.0.0.1 6379 2   #判断master失效至少需要2个sentinel同意,建议设置为n/2+1,n为sentinel个数
sentinel auth-pass mymaster 123456
sentinel down-after-milliseconds mymaster 30000    #判断master主观下线时间,默认30s

 配置slave:

cp sentinel.conf sentinel-slave1.conf
vim sentinel-slave1.conf

port 26389
daemonize yes
pidfile /var/run/redis-sentinel1.pid
logfile "/usr/local/share/redis/sentinel1.log"
dir "/usr/local/share/redis/sentinel1"       #sentinel工作目录
sentinel monitor mymaster 127.0.0.1 6379 2   #判断master失效至少需要2个sentinel同意,建议设置为n/2+1,n为sentinel个数
sentinel auth-pass mymaster 123456
sentinel down-after-milliseconds mymaster 30000    #判断master主观下线时间,默认30s

配置slave2:

cp sentinel.conf sentinel-slave2.conf
vim sentinel-slave2.conf

port 26399
daemonize yes
pidfile /var/run/redis-sentinel2.pid
logfile "/usr/local/share/redis/sentinel2.log"
dir "/usr/local/share/redis/sentinel2"       #sentinel工作目录
sentinel monitor mymaster 127.0.0.1 6379 2   #判断master失效至少需要2个sentinel同意,建议设置为n/2+1,n为sentinel个数
sentinel auth-pass mymaster 123456
sentinel down-after-milliseconds mymaster 30000    #判断master主观下线时间,默认30s

启动服务:

mkdir /usr/local/share/redis/sentinel
mkdir /usr/local/share/redis/sentinel1
mkdir /usr/local/share/redis/sentinel2
redis-sentinel sentinel.conf
redis-sentinel sentinel-slave1.conf
redis-sentinel sentinel-slave2.conf

查看日志:

tailf /usr/local/share/redis/sentinel.log
tailf /usr/local/share/redis/sentinel1.log
tailf /usr/local/share/redis/sentinel2.log

模拟宕机:

杀手master:kill -9 102360
观察日志, 以及执行操作(会重新选举master)
再次启动6379redis(将以slave身份加入集群):redis-server redis.conf

Cluster模式

 描述:

     Redis Cluster是一种服务器Sharding技术,3.0版本开始正式提供。 Redis Cluster是一种服务器Sharding技术,3.0版本开始正式提供。sentinel模式基本可以满足一般生产要求,具备高可用,但是数据量过大到一台 服务器放不下的情况时,主从模式就不能满足需求,需要对存储的数据分片。

特点:

多个redis节点网络互联,数据共享

所有的节点都是一主一从(也可以是一主多从),其中从不提供服务,仅作为备用

客户端可以连接任何一个主节点进行读写

知识点:

  • 同步方式:

     1. appendfsync always 每次收到写命令就立即强制写入磁盘,最慢的,但是保证完全的持久化,不推荐使用

     2. appendfsync everysec 每秒钟强制写入磁盘一次,在性能和持久化方面做了很好的折中,系统默认

      3. appendfsync no 完全依赖os,性能最好,持久化没保证

  • 过期键的删除策略

      1. 定时删除。过期键较多的情况下,大量的CPU用于删除键而影响了客户端的请求。

      2. 惰性删除。只有过期键被访问才删除,可能会导致过期键过多,造成内存浪费和溢出。

      3. 定期删除。限制时长和频率对过期键进行删除,难点在于时长和频率难以确定。

  • Redis的过期键删除策略?

       Redis采用的是惰性删除和定期删除,配合这两种策略来取得CPU和内存的平衡。

  • RDB和AOF文件中会包含过期键吗?

       不包含。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值