一、简介
redis是内存数据库,访问速度快,常被用作缓存使用。
本文将从redis的安装、持久化和主从模式三个方面来介绍。
二、redis安装
1、安装方式一
在linux中,如ubuntu,可以直接使用命令:sudo apt-get install redis-server 进行安装。
2、安装方式二
使用源码编译安装。
1)下载redis源码:wget http://download.redis.io/releases/redis-4.0.9.tar.gz
2)解压: tar -zxvf redis-4.0.9.tar.gz
3)进入解压后的redis主目录: cd redis-4.0.9
4)编译:make
这时会有src目录下生redis-server、redis-cli等文件
5)启动redis: src/redis-server 这时使用的是默认的端口号6379。
注意:启动时可指定配置文件:src/redis-server redis.conf ,这样可以修改指定的端口号及域名等配置。
修改在redis.conf文件中,
端口号: port 6380 可修改
修改域名:bind 127.0.0.1 ::1 改为 bind 192.168.0.107 即真实ip地址,这样可远程访问。
三、redis持久化
redis是内存数据库,同时提供持久化的能力,即redis是运行中,会将数据保存到硬盘内,
当因各种原因导致redis挂掉或重启时,redis可以恢复数据,同时也可用于数据复制。
redis持久化有两种方式,一是快照(snapshotting),二是AOP(append only file,追加文件)。
这两种方式可同时使用,也可单独使用。
1、快照持久化(snapshotting)
即在某一时刻,将redis内存中的所有数据保存到硬盘文件内。
1)快照保存路径
在配置文件redis.conf中设置,
dbfilename dump.rdb
dir ./
即快照保存到dump.rdb文件中,保存目录为当前目录。
2)快照保存命令
redis快照保存命令有两种,一是bgsave,二是save。
bgsave:直接在客户端输入命令即可。执行后,redis会fork一个子进程,子进程负责将快照写入
硬盘中,同时父进程继续接收请求(此时新的数据写入内存中,不会进行快照)。
save:直接在客户端输入命令即可。执行后,与bgsave不同的是,save在创建快照时,不会接收新的
请求,直到快照创建完成,即是会阻塞。
3)快照创建的时机
redis创建的时机有
a、直接在客户端输入命令bgsave或命令save创建快照。
b、在配置文件redis.conf中设置,可同时设置多个,如下
save 900 1
save 300 10
save 60 10000
含义为:
after 900 sec (15 min) if at least 1 key changed
after 300 sec (5 min) if at least 10 keys changed
after 60 sec if at least 10000 keys changed
即从最近一次快照算起,在900秒内,若有一次key变更,则触发命令bgsave进行快照创建,
其它几条命令类似。
c、收到shutdown关机命令、term信号时,会执行sava命令,之后才关闭服务器。
d、其它配置
stop-writes-on-bgsave-error yes 当出错时,是否停止快照生成。
rdbcompression yes 是否压缩快照。
2、AOF持久化(append only file)
aof快照方式,保存的不是数据,而是写命令,有点类似于mysql的bin log日志。
1)常用配置
aop在配置文件redis.conf中设置,常用配置有
appendonly no 是否开启aof
appendfilename "appendonly.aof" 持久化保存的文件名
appendfsync everysec 持久化执行的频率(always:每条命令都同步写入 everysec:每秒写入 no:系统决定写入时机)
auto-aof-rewrite-percentage 100 当aof文件新增100%时,发出重写命令bgrewriteaof
auto-aof-rewrite-min-size 64mb 当 aof文件达到64mb时,发出重写命令bgrewriteaof
更多配置可查看redis.conf文件。
2)命令
bgrewriteaof: 当aof文件过大时,可在客户端发送此命令,得写aof文件,去掉冗余命令。
四、redis主从配置
当访问量过大时,我们可基于主从配置来安装多个redis服务,一主多从,同时redis从服务下面又
可配置多个多服务。
redis主服务通常用来写数据,redis从服务通常来读数据。
1、主从配置步骤
这里以一主一从为例进行介绍。
1)首先安装两个redis服务,
主服务,在redis.conf中配置主机:bind 192.168.0.107,端口号:port 6379。
从服务,在redis.conf中配置主机:bind 192.168.0.107,端口号:port 6380。
2)接着配置从服务器
指定从服务(需指定主服务,从而获取更新)有两种方式:
一是在从服务的redis.conf配置文件中,配置主服务地址:slaveof 192.168.0.107 6379
二是在主从服务启动后,登录从服务redis-cli客户端,直接在从命令行中指定主服务:
slaveof 192.168.0.107 6379,取消用命令: slaveof no one
经上述步骤,重启主从redis服务即可。
2、主从复制过程
主从服务安装后,就涉及主从复制,即从服务获取主服务的数据更新,再更新从服务,
这里介绍下主从复制过程:
a)从服务连接主服务时,发出sync命令;
b)主服务执行bgsave操作,生成快照,快照生成后发给从服务,期间新的写操作存入缓冲区;
c)从服务接收主服务的快照,丢弃现有的旧数据,写入快照数据;
d)主服务将缓冲区中的写操作发给从服务,发完后,每接收一条新写数据操作,就发给从服务;
e)从服务接收主服务缓冲区中写操作,以及后续实时写操作。
备注:为了便于主从服务间的数据复制,保证性能,主服务器内存最好只用约60%,剩下的内存用于
快照生成及写操作缓冲区。