为什么redis叫做redis服务器?
因为在运行时,在进行工作时是一个被注册一个进程(服务),我们把他叫做一个redis服务器。(就是个应用程序而已。)
我们安装redi,启动服务之后,默认就这个,只有一个redis服务器(就是一个主服务器),但是哨兵模式默认开启。(只不过挂掉后,没有能选举的。)
相关概念
一台计算机有唯一的ip,里面的端口号分别对应不同的应用程序。
因此,我们windows 上访问Linux 的redis(应用程序),只需要知道 ip + port。
1.在主从复制中,一般设置一个redis服务器作为一个主服务器(master),其他redis服务器为(slave)
2.主服务器负责所有的写操作,而读操作,主从服务器均可。另外,主服务器数据修改,会将修改数据复制到从服务器一份,达到共享的目的。
3.当主武器宕机(死机)时,从服务器会自动上升主服务器。
理解:从服务器是只读的,主服务器读写均可。主服务器的数据增删改复制到从服务器。
redis主从复制模式实例
1.创建 /opt/redis/data /opt/redis/log /opt/redis/conf 目录 mkdir -p ...
2.创建 将redis.conf复制到 /opt/redis/conf/里 ,命名为redis-common.conf
touch 创建 redis-6379.conf redis-6380.conf redis-6381.conf 。
3.vim redis-common.conf,将他作为一份公共配置文件。
daemonize yes 。
要注释掉,pidfile、logfile、dbfilename ,appenfilename ,他们不是在那个目录生成这些文件吗?也要改生成的目录,分别改成对应的 /opt/redis/data /opt/redis/log /opt/redis/conf 目录。
4.vim redis-6379.conf 作为主节点
#引用公共配置
include /opt/redis/conf/redis-common.conf
#进程编号文件
pidfile /var/run/redis_6379.pid
#进程端口号
port 6379
#日志记录文件
logfile "/opt/redis/log/redis-6379.log"
#数据记录文件
dbfilename dump-6379.rdb
#追加文件名称
appendfilename "appendonly-6379.aof"
#备份服务器从属于6379配置局域网IP
#slaveof 192.168.88.135 6379
另外2个redis-....conf作为从节点,只需将6379改成相应的配置之类。
有redis服务先kill掉,然后在启动这个3个配置文件。
案例
上述提到,主从复制模式,主服务器死机,从服务器变成主服务器,当主武器重启时,变成从服务器。而这个过程的实现,主要依靠哨兵模式。
简单理解:主服务器挂掉后,哨兵会重新选举一个从服务器作为主服务器,原来挂掉的主服务器重新启动后,哨兵会将他变为从服务器。
哨兵模式实例:
1. 在redis.conf同目录下面,找到sentinel(哨兵).conf,复制到 /opt/redis.conf 文件里面。
2.同样复制一个sentinel-common.conf ,vim 他。(作为一个公共配置来使用。)
3.sentinel-common.conf文件注释掉port,pidfile等,这句话是哨兵监控主服务器的 ip + 端口,下面指令那个2是默认3台哨兵监控主服务器,假如主服务器崩掉,要求能检测成功的哨兵数量(也就是下面的2),占总哨兵的50%以上。
因此,假如5台哨兵,那么应该写3。
sentinel monitor mymaster 127.0.0.1 6379 2
# sentinel author-pass定义服务的密码,mymaster是服务名称,123456是Redis服务器密码
# sentinel auth-pass
sentinel auth-pass mymaster 123456
相应的对着改。
#引用公共配置
include /opt/redis/conf/sentinel-common.conf
#进程端口号
port 26379
#进程编号记录文件
pidfile /var/run/sentinel-26379.pid
#日志记录文件
logfile "/opt/redis/log/sentinel-26379.log"
这么说我们对应3个哨兵会被linux注册为3个服务,虽然监控是一个redis-server服务。
启动哨兵
必须先启动redis-server,再启动哨兵。
redis-sentinel sentinel-26379.conf
当数据量进一步增大时,显然主从复制 + 哨兵模式,已经不满足开发者需求。
这时候就要用集群: