redis是一个基于内存的亦可持久化日志型、key-value数据库,redis可支持的key-value类型特别多,这是redis较其他缓存产品的一大优势,常用的key-value有:字符串(string)、哈希(hash)、列表(list)、集合(set)、有序集合(sort set)等,redis使用时加载到内存当中,可以处理高并发的请求,redis的事务具有原子性,对于单个事务,要么做,要么不做。redis支持master-slave模式的数据备份,类似于MySQL的主从备份。

环境:

Centos6.5

iptables关闭和selinux为disabled

redis安装:

redis安装比较简单,到redis官网下载redis的tar.gz安装包,也可wget下载

查看linux 中的redis linux中查看redis进程_配置文件

解压redis到你想安装的目录,进入解压目录

查看linux 中的redis linux中查看redis进程_服务器_02

执行,make && make install,执行成功后,进入src/目录,会看到redis-server、redis-cli,这是启动redis服务器和客户端启动的命令

查看linux 中的redis linux中查看redis进程_linux下redis的进程_03

这样redis就安装完成。

redis服务器启动:进入redis安装目录下的src/,执行./redis-server,如果按配置文件执行就是./redis-server ../redis.conf

查看linux 中的redis linux中查看redis进程_查看linux 中的redis_04

默认情况redis是前端启动的,可以修改配置文件来更改设置,进入解压目录下的配置文件redis.conf

查看linux 中的redis linux中查看redis进程_查看linux 中的redis_05

把daemonize后的no改为yes,以守护进程启动,按配置文件执行./redis-server ../redis.conf,使用netstat -anplt | grep redis可以看到redis server状态

查看linux 中的redis linux中查看redis进程_linux下redis的进程_06

由于我这台机器做有其他配置,所以看着有点不一样,第一次以守护进程启动应该看到有一个开启6379端口的redis-server

redis配置文件部分解释

bind --------------------------绑定的网卡

protected-mode ----------保护模式

port --------------------------绑定端口,默认端口为6379

daemonize -----------------开启方式

pidfile ------------------------进程pid的存放路径

save行到dir行是RDB(快照)方式实现数据可持久化的相关配置

查看linux 中的redis linux中查看redis进程_redis_07

redsi实现数据可持久化的另一种方式是AOF,对应配置文件的

查看linux 中的redis linux中查看redis进程_linux下redis的进程_08

默认AOF方式是关闭的

redis可以处理数据的高并发,但如果太多请求也会响应不过来,为提高redis效率,可以搭建redismaster-slave集群,master可读可写,slave负责读,搭建非常简单,本文搭建一主三从,在四台机器上搭建安装redis,主服务器master不做操作,在每台从服务器slave的redis配置文件中加入slaveof master-ip master-port即可,在每台服务器启动客户端

查看linux 中的redis linux中查看redis进程_服务器_09

redis客户端启动(默认是从127.0.0.1:6379启动的):进入redis安装目录下的src/,执行./redis-cli,如果连接ip就用:./redis-cli -h ipaddr 例:./redis-cli -h 192.168.174.130 ,如果按照配置文件设置的端口启动:./redis-cli -p port 例:./redis-cli -p 6381

mater启动,查看master状态

查看linux 中的redis linux中查看redis进程_查看linux 中的redis_10

slave启动,查看服务器状态

查看linux 中的redis linux中查看redis进程_redis_11

查看master的key

查看linux 中的redis linux中查看redis进程_linux下redis的进程_12

查看slave的key

查看linux 中的redis linux中查看redis进程_服务器_13

可以发现slave已经同步备份master的key,master-slave模式还可以实现数据备份。

master-slave模式如果master宕机后,redis服务就中断了,为保证redis服务的高可用性,redis本身提供sentinel(哨兵)来保证redis服务的高可用性,当mater宕机后,当符合sentinel配置的要求后,自动切换slave为master,当上一个master再次恢复之后,自动成为slave

sentinel配置文件

查看linux 中的redis linux中查看redis进程_配置文件_14

sentinel配置文件部分详解

bind -----------------------绑定的网卡

protected-mode --------保护模式

port -----------------------绑定端口,默认端口为26379

daemonize ------------开启方式

logfile ------------------日志生成路径

sentinel monitor mymaster 192.168.174.130 6382 1 ---------指定master-ip以及端口,不用指定slave,sentinel可以自己获取,最后的1是指当有几台sentinel发现master宕机才开始选出新的master

默认情况sentinel也是前端启动,而且配置文件无daemonize行,可自行添加

哨兵模式开启:./redis-server ../sentinel.conf --sentinel

查看哨兵状态可以用tail -f跟踪sentinel日志文件

查看linux 中的redis linux中查看redis进程_查看linux 中的redis_15

哨兵模式关闭:./redis-cli -p 26379 -h ipaddr shutdown

在本次实验中发现当master shutdown时,主从并未切换

报错:failover-abort-not-elected

解决办法;查看redis配置文件是否配置protected-mode yes,如果没有,在sentinel配置文件配置protected-mode no即可,如果有,则在protected配置文件配置protected-mode yes,另外sentinel也应绑定本地ip,可以参考上边sentinel配置文件,这是修改过的配置。

将master shutdown

查看linux 中的redis linux中查看redis进程_查看linux 中的redis_16

查看sentine日志可以发现主从切换日志

查看linux 中的redis linux中查看redis进程_配置文件_17

我搭建的一开始是192.168.174.132为master,后slave192.168.174.130成为master,实验成功。这里应该注意,当实现数据可持久化时,如果用的RDB方式,当主从切换时有可能会丢失部分数据,因为RDB的快照是每四五分钟才做一次,而当使用AOF时会好一些,AOF每秒执行一次同步写入磁盘,但会过多消耗cpu资源。