安装


首先安装gcc用于后面编译redis源码(已安装可跳过

yum install gcc

依次执行以下语句完成安装

cd /user/local
mkdir reids
wget http://download.redis.io/releases/redis-5.0.5.tar.gz
tar -zxf redis-5.0.5.tar.gz

进入解压后的redis文件夹,编译

make

 

持久化


众所周知,redis的数据是存放在内存中,在宕机时数据将会全部丢失,那么我们可以通过RDB和AOF机制将操作保存在磁盘上。
 

RDB(redis database)全量备份

打开redis.conf 配置文件

cd /user/local/redis
vim redis.conf

可以找到如下语句,这里设置rdb备份策略

save 900 1 #   after 900 sec (15 min) if at least 1 key changed
save 300 10 #   after 300 sec (5 min) if at least 10 keys changed
save 60 10000 #   after 60 sec if at least 10000 keys changed

 

AOF(append only file)增量备份

同样在redis.conf中, 查找append, 可以找到

appendonly yes
appendfilename "appendonly.aof" # The name of the append only file (default: "appendonly.aof")

另外还有aof的备份策略

# appendfsync always
appendfsync everysec
# appendfsync no

其中,alway表示一个写命令执行完,马上将日志写回磁盘;
everysec表示一个写命令执行完,先把日志写到AOF文件的内存缓冲区,每隔⼀秒把缓冲区内容写⼊磁盘;
no表示一个写命令执行完,先把日志写到AOF文件的内存缓冲区,交由操作系统决定何时将缓冲区内容写回磁盘

 

集群


修改配置文件

vim redis.conf

找到以下字段并修改

daemonize yes # 启动后台服务
cluster-enabled yes # 开启集群
port 7001 # 如果多个节点在同一服务上,则要修改端口

按照前面步骤多开几个redis节点,

另外如果是多台服务器,且reids并没有配置密码,可能出现connection refuse,这时,可以修改把127.0.0.1换掉。

bind 0.0.0.0

或者注释该行,并关掉保护模式

# bind 127.0.0.1
protected-mode no

最后挨个将redis服务启动,然后通过以下命令配置集群, 把ip地址和端口即可

./redis-cli --cluster create 192.168.126.151:7001 192.168.126.151:7002 192.168.126.151:7003 192.168.126.151:7004 192.168.126.151:7005 192.168.126.151:7006 --cluster-replicas 1

由于这里我采用了6个redis节点(必须大于2个),这时自动生成了三主三从的配置,并给每个主从结构分配了一定的hash槽(采用CRC16算法)

Master[0] -> Slots 0 - 5460
Master[1] -> Slots 5461 - 10922
Master[2] -> Slots 10923 - 16383
Adding replica 192.168.126.151:7005 to 192.168.126.151:7001
Adding replica 192.168.126.151:7006 to 192.168.126.151:7002
Adding replica 192.168.126.151:7004 to 192.168.126.151:7003

 

哨兵


新配置一个redis节点

在redis.conf同级目录下还有sentinel.conf,打开

找到以下字段设置

daemonize yes # 设置为后台进程
sentinel monitor mymaster 127.0.0.1 7001 2

值得一提的是第二行,格式为sentinel monitor <master-name> <ip> <redis-port> <quorum>,此处的ip和端口为改为需要监控的主节点,后面的quorum代表了该主从结构中有几个节点

到此sentinel的配置已完成,让我们执行以下命令启动

./redis-sentinel ../sentinel.conf # 指定你自己配置文件的路径

可能有人会奇怪为什么没有从库的信息,这是因为在哨兵建立与主库的连接后,会向主库发送INFO命令,主库接受到这个命令后,就会把从库列表返回给哨兵。接着,哨兵就可以根据从库列表中的连接信息,和每个从库建立连接,并在这个连接上持续地对从库进行监控。