redis 安装 主从同步 哨兵模式
一.redis 的安装
1.先将安装包放到linux的一个文件夹下面
2.解压压缩包如图所示
3.解压后进入解压文件
4.安装: make 出现it.s a good idea to run 'make test'则表示安装成功
如下图:
5.修改redis.config文件
a)因为我们要在外网使用 需要将绑定的本机给注释掉 并且在redis3.2之后新增了protected-mode配置,默认是yes,
我们这里还要将他改成no
详情参考这里http://blog.****.net/sukexiaozi/article/details/52022449
b)保护进程 后台启动redis 将daemonize设置为yes
c)在这里我修改一下端口号 以便对后面的哨兵和主从同步进行配置 这里我把端口号改成6360
然后启动redis
./src/redis-server ./redis.conf
然后查看进程
入上图 redis 6360端口起启动了
然后本地测试:./src/redis-cli -h localhost -p 6360
-h 是连接的主机ip,host的缩写,-p 是端口 port的缩写 ,-a 后面是密码(requirepass 后面配置的)auth的缩写 (这里我们没有设置密码所以不用输入)
如下图就是成功了 并且存值 123 为haha 123 位键 haha为值
然后外网测试:可以在另外一台机器上安装上redis通过redis-cli来连接 也可以通过工具连接测试比如RedisDesktopManager
因为我本地安装了redis所以直接在本地连接服务器上的redis来测试结果如下:
这样redis就安装完毕。
二.主从同步
当数据量变得庞大的时候,读写分离还是很有必要的。同时避免一个redis服务宕机,导致应用宕机的情况,我们启用sentinel(哨兵)服务,实现主从切换的功能。
准备三个redis服务,依次命名文件夹子6360,6361,6362,我们这里是一主两从 主为master从为slave master的使用6360端口。
并在同级目录下创建bin目录留作备用
结构如下:
master为6360和刚才的配置一样
slave1修改配置
port
6361
slaveof
127.0.0.1 6360
masterauth
123456 (这里是master的密码 如果没有设置则不写)
requirepass
123456(这里是slave1的密码
如果没有设置则不写)
slave2修改配置
port
6362
slaveof
127.0.0.1 6360
masterauth
123456 (这里是master的密码 如果没有设置则不写)
requirepass
123456(这里是slave2的密码 如果没有设置则不写)
redis-benchmark redis性能测试工具 (src目录下)
redis-check-aof aof文件修复程序(src目录下)
redis-check-rdb RDB文件检查工具(src目录下)
redis-cli redis客户端(src目录下)
redis-sentinel redis集群(这个是2.8新增的功能,具体的再进一步摸索)
redis-server redis服务器 (src目录下)
启动三个redis
./bin/redis-server ./6360/redis6360.conf
./bin/redis-server ./6361/redis6361.conf
./bin/redis-server ./6362/redis6362.conf
测试方法就是连上 master的存储一个值然后再连接上salve的获取这个值能获取则表示成功
从机能同步主机的值,主从复制,读写分离就实现了
但是万一主机挂了怎么办,这是个麻烦事情,所以redis提供了一个sentinel(哨兵),以此来实现主从切换的功能,类似与zookeeper.
但是万一主机挂了怎么办,这是个麻烦事情,所以redis提供了一个sentinel(哨兵),以此来实现主从切换的功能,类似与zookeeper.
三.哨兵模式
我们配置三个sentinel进程:
port
26360
sentinel monitor mymaster 127.0.0.1 6360 2 (这里是代表主机是 本地ip的6360端口 这个后面的数字2,是指当有两个及以上的sentinel服务检测到master宕机,才会去执行主从切换的功能)
port
26361
sentinel monitor mymaster 127.0.0.1 6360 2
port
26362
sentinel monitor mymaster 127.0.0.1 6360 2
将三个sentinel.config分别放到不同的文件夹下
启动sentinel服务
./bin/redis-sentinel ./6360/sentinel-6360.conf
./bin/redis-sentinel ./6361/sentinel-6361.conf
./bin/redis-sentinel ./6362/sentinel-6362.conf
结果如图:
测试方法 把6360端口的redis杀了 然后分别连接redis6361 和redis6362 看看哪个能够存储进去值 则哪个变成了master 也表明哨兵成功了
因为只要主机可以写 从机只能读。