----------------------------------------安装redis-5.0.4----------------------------------------c++
wget http://download.redis.io/releases/redis-5.0.4.tar.gz tar zxvf redis-5.0.4.tar.gz -C /usr/local/ mv /usr/local/redis-5.0.4 /usr/local/redis cd /usr/local/redis make
修改配置文件redis
bind 192.168.100.101 #配置监听地址 protected-mode no #关闭保护模式,容许外网链接数据库 daemonize yes #开启之后台方式运行 logfile "/usr/local/redis/log/redis.log" #日志文件路径 dir /usr/local/redis/ #dump快照存放路径
mkdir /usr/local/redis/log;touch /usr/local/redis/log/redis.log #建立日志文件
建立命令连接数据库
ln -s /usr/local/redis/src/redis-cli /usr/local/bin/redis ln -s /usr/local/redis/src/redis-cli /usr/local/bin/redis-cli ln -s /usr/local/redis/src/redis-server /usr/local/bin/redis-server
设置redis开机自启动vim
echo "redis-server /usr/local/redis/redis.conf" >> /etc/rc.local chmod +x /etc/rc.local
启动redis服务安全
redis-server /usr/local/redis/redis.conf
测试链接服务器
redis-cli
安装过程可能出现的问题app
1.CentOS默认没有安装gcc,这会致使咱们没法make成功ide
yum install gcc-c++ -y #解决办法:yum安装开发环境
2.make时报以下错误:函数
zmalloc.h:50:31: fatal error: jemalloc/jemalloc.h: No such file or directory性能
#include <jemalloc/jemalloc.h>
^
compilation terminated.
make[1]: *** [adlist.o] Error 1
make[1]: Leaving directory `/root/redis-5.0.4/src'
make: *** [all] Error 2
缘由是jemalloc重载了Linux下的ANSI C的malloc和free函数
make MALLOC=libc #解决办法:make时添加参数
3.make以后,会出现一句提示
Hint: To run 'make test' is a good idea ;)
可是不测试,一般是可使用的;若咱们运行make test ,会有以下提示
[devnote@devnote src]$ make test
You need tcl 8.5 or newer in order to run the Redis test
make: ***[test] Error_1
yum install tcl -y #解决办法:yum安装tcl8.5
----------------------------------------redis持久化方式----------------------------------------
RDB持久化:将Reids在内存中的数据库记录定时dump到磁盘上,相似于快照功能(半持久化模式)
RDB方式配置:vim /usr/local/redis/redis.conf save 900 1 #开启RDB快照功能,在900秒内完成一个key值得变更触发快照功能,如若将全部save配置项都注释掉,那么则将关闭RDB快照功能 save 300 10 save 60 10000 stop-writes-on-bgsave-error yes #当RDB快照后台进程失败,不影响用户得写操做 rdbcompression yes #是否将RDB快照文件压缩,关闭后会增长性能 rdbchecksum no #关闭RDB快照文件的检查校验,增长性能 dbfilename dump.rdb #快照文件的名称 dir ./ #快照文件的存储路径,./为redis的安装目录下
AOF持久化:append only file--原理是将Reids的操做日志以追加的方式写入文件,近似实时性(全持久化模式)
AOF持久化方式配置:vim /usr/local/redis/redis.conf #save 900 1 #save 300 10 #save 60 10000 appendonly yes #开启AOF持久化方式 appendfilename "appendonly.aof" #指定持久化的文件 appendfsync everysec #频率,具体参数见下表 no-appendfsync-on-rewrite no #如若设置为yes,则redis执行的命令会存放到缓冲区,待系统自动同步到硬盘 auto-aof-rewrite-percentage 100 #若当前写入的AOF文件达到了上次rewrite文件大小的100%,则触发rewrite操做 auto-aof-rewrite-min-size 64mb #设置AOF持久化重写文件的最小值,当达到60M而且符合100%的条件时,则触发rewrite操做
选项 | 同步频率 |
always | 每一次写操做都会调用一次fsync,这时数据是最安全的,固然,因为每次都会执行fsync,因此其性能也会受到影响 |
everysec | 默认每隔一秒进行一次fsync调用,将缓冲区中的数据写到磁盘,可是当这一次的fsync调用时长超过1秒时。Redis会采起延迟fsync的策略,再等一秒钟。也就是在两秒后再进行fsync,这一次的fsync就无论会执行多长时间都会进行 |
no | redis不会主动调用fsync去将AOF日志内容同步到磁盘,因此这一切就彻底依赖于操做系统的调试了。对大多数Linux操做系统,是每30秒进行一次fsync,将缓冲区中的数据写到磁盘上 |
----------------------------------------redis主从复制----------------------------------------
同步类型:
1.全量同步:
redis全量复制通常发生在Replica初始化阶段,这时Replica须要将Master上的全部数据都复制一份。具体步骤以下:
1)从服务器链接主服务器,发送SYNC命令(从服务器向主服务器初次同步时,不会影响主服务器接收客户端的请求);
2)主服务器接收到SYNC命名后,开始执行BGSAVE命令生成RDB文件并使用缓冲区记录此后执行的全部写命令;
3)主服务器BGSAVE执行完后,向全部从服务器发送快照文件,并在发送期间继续记录被执行的写命令;
4)从服务器收到快照文件后丢弃全部旧数据,载入收到的快照;
5)主服务器快照发送完毕后开始向从服务器发送缓冲区中的写命令;
6)从服务器完成对快照的载入,开始接收命令请求,并执行来自主服务器缓冲区的写命令;
完成上面几个步骤后就完成了从服务器数据初始化的全部操做,从服务器此时能够接收来自用户的读请求
2.增量同步:
redis增量复制是指Replica初始化后开始正常工做时主服务器发生的写操做同步到从服务器的过程。 增量复制的过程主要是主服务器每执行一个写命令就会向从服务器发送相同的写命令,从服务器接收并执行收到的写命令
同步策略:
主从刚刚链接的时候,进行全量同步;全同步结束后,进行增量同步;若是有须要Replica在任什么时候候均可以发起全量同步;redis策略是,不管如何,首先会尝试进行增量同步,如不成功,要求从机进行全量同步
注:若是多个Replica断线了,须要重启的时候,由于只要Replica启动,就会发送sync请求和主机全量同步,当多个同时出现的时候,可能会致使Master IO剧增致使宕机
建议开启master主服务器的持久化功能,避免出现master重启后,数据没法恢复;
主从配置:
Master配置 vim /usr/local/redis/redis.conf min-replicas-to-write 2 #设置replica节点的数量,若是replica节点数量少于此值,那么master节点将中止客户端的一切写请求 min-replicas-max-lag 10 #master与replica之间同步数据的超时时间,若超过此时间,master节点将中止客户端的一切写操做
Replica配置 vim /usr/local/redis/redis.conf replicaof 192.168.100.101 6379 #指定master的ip地址以及端口 masterauth 123123 #指定master的链接密码
验证主从复制
192.168.100.101:6379> info replication #查看复制信息