安装
首先安装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命令,主库接受到这个命令后,就会把从库列表返回给哨兵。接着,哨兵就可以根据从库列表中的连接信息,和每个从库建立连接,并在这个连接上持续地对从库进行监控。