一、redis是什么
Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。redis是一个key-value存储系统。redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部分场合可以对关系数据库起到很好的补充作用。Redis支持主从同步。
二、redis的安装配置
1、redis安装
redis已经被收入到yum仓库当中,因此我们只通过yum安装即可;
[root@test5 ~]#yum install redis
2、redis的基本配置
Redis配置文件为:/etc/redis.conf
Redis配置文件主要分为:
NETWORK 网络配置
GENERAL 基本配置
SNAPSHOTTING 持久化相关配置
REPLICATION 复制相关配置
SECURITY 安全相关配置
LIMITS limit相关配置
APPEND ONLY MODE 追加模式
LUA SCRIPTING lua脚本
REDIS CLUSTER 集群相关配置
SLOW LOG 日志相关配置
LATENCY MONITOR 延迟监控
EVENT NOTIFICATION 时间通知
ADVANCED CONFIG 高级设置
注意:在LIMITS配置中有个# maxclients 10000,这是用来定义最大并发连接数的,如果主机所允许redis的最大并发连接数没有这么多,则需要到文件/etc/security/limits.conf中调整数值,如下:
3、redis服务的启动:
[root@test5 ~]#systemctl start redis
4、redis客户端的启动:
[root@test5 ~]#redis-cli -h 172.18.24.4
这样一个简单的redis服务就可以完成了,但是在生产环境当中并不会这么简单,为了生产安全需要,我们还需要对redis做好主从、持久化、以及启用sentinel(哨兵)来对redis进行监控,下面我们将一一说明。
三、redis的主从复制和持久化
1、redis的主从复制
实验需要一个主节点(172.18.24.4)和若干个从节点(172.18.24.5,172.18.24.1)。
a) 主节点的配置
~]#vim /etc/redis.conf
bind 127.0.0.1 172.18.24.4 #添加IP主要是为了模拟远程连接操作
requirepass redis #设置安全认证密码
b) 从节点的配置(只讲述一个从节点配置,其他从节点配置类似)
~]#vim /etc/redis.conf
bind 127.0.0.1 172.18.24.5
slaveof 172.18.24.4 6379
masterauth redis
slave-priority 10 可以根据自己需要设置优先级,数字越小优先级越大
requirepass redis
c) 启动主从节点的redis服务
验证效果:在主节点上设定一个值,然后再从节点上查看是否能够获取到该值,能则成功。如下:
2、redis的持久化
Redis的持久化可分为RDB和AOF
a)RDB:snapshotting, 二进制格式;按事先定制的策略,周期性地将数据从内存同步至磁盘;数据文件默认为dump.rdb;客户端显式使用SAVE或BGSAVE命令来手动启动快照保存机制。
SAVE:同步,即在主线程中保存快照,此时会阻塞所有客户端请求;
BGSAVE:异步;
表示:三个策略满足其中任意一个均会触发SNAPSHOTTING操作;900s内至少有一个key有变化,300s内至少有10个key有变化,60s内至少有1W个key发生变化,则触发快照;
b)AOF:Append Only File,fsync;记录每次写操作至指定的文件尾部实现的持久化;当redis重启时,可通过重新执行文件中的命令在内存中重建出数据库。
BGREWRITEAOF:AOF文件重写;不会读取正在使用AOF文件,而是通过将内存中的数据以命令的方式保存至临时文件中,完成之后替换原来的AOF文件;
只要把appendonly no跟改为appendonly yes,则AOF就会被打开。
注意:持久机制本身不能取代备份;应该制订备份策略,对redis库定期备份;在生产化境中最好不要两种持久化机制都打开,这样会对主机有很大负载,生产化境中则需要根据所需开启所需要的持久化机制。
四、sentinel(哨兵)的配置
1、配置文件:/etc/redis-sentinel.conf
在主从节点分别如下配置:
sentinel monitor mymaster 172.18.24.4 63791
sentinel down-after-milliseconds mymaster10000
sentinel auth-pass mymaster redis
sentinel config-epoch mymaster 4
2、sentinel的启动
~]#systemctl start redis-sentinel
3、sentinel客户端连接
~]#redis-cli -h 127.0.0.1 -p 26379
127.0.0.1:26379> sentinel masters #查看主节点的信息
127.0.0.1:26379> sentinel slavesmymaster #查看所属从节点信息
这时候如果主节点当掉,优先级高的从节点会直接转变成主节点,从而不影响redis的正常工作,这时候需要在手动配置一台新的从节点或者把已宕机的主节点修复,更改相关配置,保持正常的运行状态即可。