Redis的配置文件涉及Redis启动运行的一些重要参数,也是Redis哨兵和Redis集群配置相关依赖的重要文件。熟悉redis.config文件的配置是很是有必要的。redis
下面来简单说明一下redis.conf中的主要配置:算法
①include:包含数据库
相似于Spring的配置文件,能够经过includes包含其它的配置文件,而redis.conf做为总的文件安全
②network:网络配置服务器
经常使用的配置修改以下:网络
bind 127.0.0.1 #修改绑定的ip
protected-mode yes #是否受保护的模式,默认为是
port 6379 #默认端口修改
③general:通用配置app
主要经常使用的配置修改以下:dom
daemonize yes #以守护进程的方式运行,默认是no,须要手动修改成yes
pidfile /var/run/redis_6379.pid #若是之后台方式运行,就须要指定一个pid文件
#日志级别配置
# Specify the server verbosity level.
# This can be one of:
# debug (a lot of information, useful for development/testing) #debug,测试开发阶段使用
# verbose (many rarely useful info, but not a mess like the debug level)
# notice (moderately verbose, what you want in production probably) #notice,默认在生产环境使用
# warning (only very important / critical messages are logged) #警告级别
loglevel notice异步
logfile "" #配置生成的文件名,能够修改存放地址信息工具
databases 16 #配置数据库的数量,默认是16个
always-show-logo yes #默认显示LOGO信息
④SNAPSHOTTING快照:
主要用于持久化操做,在规定的时间内,执行了多少次操做,则会持久化到.rdb文件或者.aof文件。
redis是内存数据库,若是没有持久化配置,则断点即失。
#若是900s之内至少有1个key进行了修改,那么就进行持久化操做
save 900 1
#若是300s之内至少有10个key进行了修改,那么就进行持久化操做
save 300 10
#若是60s之内至少有10000个key进行了修改,那么就进行持久化操做
save 60 10000
#若是持久化出错,是否还须要redis继续工做
stop-writes-on-bgsave-error yes
#是否压缩rdb文件,须要消耗一些cpu资源
rdbcompression yes
#保存rdb文件的时候进行错误的检验
rdbchecksum yes
#rdb文件保存的目录,默认在当前目录下
dir ./
⑤security安全:
能够进行redis登录的密码设置,通常使用命令行命令进行设置:
127.0.0.1:6379> config get requirepass #获取redis的密码 1) "requirepass" 2) "" 127.0.0.1:6379> config set requirepass "123456" #设置redis的密码 OK 127.0.0.1:6379> config get requirepass (error) NOAUTH Authentication required. 127.0.0.1:6379> auth 123456 #登陆验证密码 OK
⑥限制CLIENTS、MEMORY MANAGEMENT
设置能链接上redis的最大客户端数量
maxclients 10000 #设置能链接上redis的最大客户端的数量
maxmemory <bytes> #设置redis配置最大的内存容量
maxmemory-policy noeviction #内存到达上限以后的处理策略
volatile-lru:只对设置了过时时间的key进行LRU(默认值)
allkeys-lru : 删除lru算法的key
volatile-random:随机删除即将过时key
allkeys-random:随机删除
volatile-ttl : 删除即将过时的
noeviction : 永不过时,返回错误
⑦APPEND ONLY MODE模式,aof配置:
appendonly no #默认是不开启aof模式的,默认是使用rdb持久化方式的,大部分状况下,rdb彻底够用
appendfilename "appendonly.aof" #持久化文件的名字
# appendfsync always #每次修改都会同步sync,消耗性能
appendfsync everysec #每秒执行一次sync,可能会丢失1s的数据
# appendfsync no #不执行同步,操做系统本身同步数据,性能最快
Redis 是内存数据库,若是不将内存中的数据库状态保存到磁盘,那么一旦服务器进程退出,服务器中 的数据库状态也会消失。因此 Redis 提供了持久化功能!
Redis的持久化提供了两种持久化方式:RDB与AOF方式。
RBD持久化方式会在指定的时间间隔内将内存中的数据集快照写入到磁盘,也就是Snapshot快照方式。它恢复时是将快照文件直接读到内存里。
Redis会单首创建(fork)一个子进程来进行持久化,会先将数据写入到一个临时文件中,待持久化过程 都结束了,再用这个临时文件替换上次持久化好的文件。整个过程当中,主进程是不进行任何IO操做的。 这就确保了极高的性能。若是须要进行大规模数据的恢复,且对于数据恢复的完整性不是很是敏感,那 RDB方式要比AOF方式更加的高效。RDB的缺点是最后一次持久化后的数据可能丢失(redis服务宕机)。
RDB是咱们默认的持久化方式,通常状况下咱们不须要修改这个配置。
RDB方式保存的文件是dump.rdb文件。
触发机制:
1.save的规则知足的状况下,会自动触发rdb规则。
2.执行flushall命令,也会触发rdb规则。
3.退出redis,也会产生rdb文件。系统在备份时会自动生成一个dump.rdb文件。
恢复RDB文件数据:
1.将备份文件(dump.rdb)移动到redis安装目录并启动服务便可;
2.查看文件存放目录:
127.0.0.1:6379> config get dir 1) "dir" 2) "/usr/local/bin"
RDB持久化优缺点:
优势:
1.适合作大规模的数据恢复;
2.对数据完整性和一致性要求不高;
缺点:
1.在必定间隔时间作一次备份,因此若是redis之外宕机的话,就会丢失掉最后一次快照后的全部修改;
2.Fork父进程的时候,内存中的数据被克隆了一份,须要考虑内存空间被占用。
Redis的AOF保存形式会以日志的形式来记录每一个写操做,将Redis执行过的全部指令记录下来(读操做不记录),只许追加文件但不能够改写文件,redis启动之初会读取该文件从新构建数据,换言之,redis重启的话就根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工做。
Redis配置AOF的方式:
默认是不开启AOF的,咱们须要手动进行配置,将appendonly no改成yes就开启了aof,重启以后redis就生效了。
若是过程当中aof有错位或者异常损坏,这时redis是启动不了的,咱们须要修复aof这个文件。而redis给咱们提供了一个工具:
redis-check-aof --fix
#切换到redis-conf目录:
redis-check-aof --fix appendonly.aof
AOF文件相关配置项:
appendonly no # 是否以append only模式做为持久化方式,默认使用的是rdb方式持久化(no),启用aof须要设置为yes appendfilename "appendonly.aof" # appendfilename AOF 文件名称 appendfsync everysec # appendfsync aof持久化策略的配置 # no表示不执行fsync,由操做系统保证数据同步到磁盘,速度最快。 # always表示每次写入都执行fsync,以保证数据同步到磁盘。 # everysec表示每秒执行一次fsync,可能会致使丢失这1s数据。
No-appendfsync-on-rewrite #重写时是否能够运用Appendfsync,用默认no便可,保证数据安全性 Auto-aof-rewrite-min-size # 设置重写的基准值 Auto-aof-rewrite-percentage #设置重写的基准值
AOF优势和缺点:
优势:
1.每修改同步:appendfsync always 同步持久化,每次发生数据变动会被当即记录到磁盘,性能较差 但数据完整性比较好;
2.每秒同步:appendfsync everysec异步操做,每秒记录,若是一秒宕机,有数据丢失;
缺点:
1.相同数据集的数据而言,aof 文件要远大于 rdb文件,恢复速度慢于 rdb。
2.Aof 运行效率要慢于 rdb,每秒同步策略效率较好,不一样步效率和rdb相同。