02,redis配置及持久化

1,redis配置文件

位置:/opt/redisaz/redis304/redis-3.0.4目录下的redis.conf

       daemonize是用来指定redis是否要用守护线程的方式启动。
当我们采用yes时,redis会在后台运行,此时redis将一直运行,除非手动kill该进程。同时将进程pid号写入至redis.conf选项pidfile设置的文件中,默认会生成在/var/run/redis.pid,也可以通过pidfile来指定pid文件生成的位置
而采用no时,当前界面将进入redis的命令行界面,exit强制退出或者关闭连接工具(putty,xshell等)都会导致redis进程退出。

     pidfile /var/run/redis.pid
     redis以守护进程方式运行时,系统默认会把pid写入/var/run/redis.pid,可以通过pidfile指定pid文件
     tcp-backlog 511
此参数确定了TCP连接中已完成队列(完成三次握手之后)的长度, 当然此值必须不大于Linux系统定义的/proc/sys/net/core/somaxconn值,默认是511,而Linux的默认参数值是128。当系统并发量大并且客户端速度缓慢的时候,可以将这二个参数一起参考设定。
timeout 0
连接超时时间,0代表不关闭

tcp-keepalive 0
单位为秒。如果设置为0.则不进行Keepalive检测,建议设置为60

loglevel 日志级别
开发测试阶段可以用debug,生产模式一般选用notice
1. debug:会打印出很多信息,适用于开发和测试阶段
2. verbose(冗长的):包含很多不太有用的信息,但比debug要清爽一些
3. notice:适用于生产模式
4. warning : 警告信息

logfile "" 日志存放路径

databases 16 默认使用多少库

Syslog-enabled 是否把日志输出到syslog中

Syslog-ident 指定syslog里的日志标识 

Syslog-facility 指定syslog设备,值可以是user或local0-local7

requirepass  设置密码

dir ./  redis启动后日志默认输出在那个路径

Maxclients
设置redis同时可以多少个客户端进行连接,默认情况下为10000个客户端

Maxmemory
设置redis可以使用的内存量,一旦到达内存上限,redis将会试图移除内部数据,移除规则可以通过
maxmemory-policy来指定
maxmemory-policy 六种方式
axmemory-policy noeviction
1volatile-lru:只对设置了过期时间的key进行LRU(默认值) 
2、allkeys-lru : 删除lru算法的key   
3volatile-random:随机删除即将过期key   
4、allkeys-random:随机删除   
5volatile-ttl : 删除即将过期的   
6、noeviction : 永不过期,返回错误

stop-writes-on-bgsave-error 选项
如果 = yes : redis 会创建一个新的后台进程dump rdb。
假设 :创建快照(硬盘上,产生一个新的rdb文件)需要 20s时间,redis主进程,在这20s内,会继续接受客户端命令,但是,就在这20s,内,创建快照!!!,出错了,比如磁盘满了,那么redis会认为,
当前!!!,Redis is configured to save RDB snapshots, but is currently not able to persist on disk. but is currently not able to persist on disk.
那么,redis会,拒绝 新的写入,也就是说,它认为,你当下,持久化数据出现了问题,你就不要再set啦。



2,RDB

在指定的时间间隔内将内存中的数据集快照写入磁盘,他恢复时是将快照文件直接读到内存里。Redis会单独创建(fork)一个子进程来进行持久化,会先将数据写入到一个临时文件中,持久化过程结束了,在用这个临时文件替换上一次持久化好的文件,整个过程中主进程都不进行任何IO操作,这就确保了极高的性能如果需要进行大规模恢复,且对数据恢复的完整性要求不高,那RDB方案要比AOF更加高效,RDB的缺点是最后一次持久化的数据可能丢失
fork:frok的作用是复制一个与当前进程一样的进程,新进程的所有数据(变量,环境变量,程序计算器等)数值和原进程一致,但是是一个全新的进程,并作为原进程的子进程
RDB保存的是dump.rdb文件
save 900 1   900秒以内改动一次
save 300 10  300秒以内改动10次
save 60 10000  60 秒以内改动10000次
上面这些条件出发一个则生成rdb文件
stop-writes-on-bgsave-error 选项
如果 = yes : redis 会创建一个新的后台进程dump rdb。
假设 :创建快照(硬盘上,产生一个新的rdb文件)需要 20s时间,redis主进程,在这20s内,会继续接受客户端命令,但是,就在这20s,内,创建快照!!!,出错了,比如磁盘满了,那么redis会认为,
当前!!!,Redis is configured to save RDB snapshots, but is currently not able to persist on disk. but is currently not able to persist on disk.
那么,redis会,拒绝 新的写入,也就是说,它认为,你当下,持久化数据出现了问题,你就不要再set啦。

3,AOF

以日志的形势来记录每个写操作,将Redis执行过的所有写指令记录下里(读操作不记录),只许最加文件但是不可以修改文件,redis启动之初会读取该文件从新构建数据,换而言之,redis重启的话就根据日志文件的内容将写指令从前到后执行一遍完成数据的恢复工作

appendonly yes

appendfilename "appendonly.aof"  aof文件名

 redis-check-aof  --fix appendonly.aof 恢复损坏的aof文件

Appendfsync   同步策略
Always:同步持久化,每次发生数据变更立刻被记录到磁盘,性能差但是数据完整性好
everysec:出厂默认推荐,异步操作,每秒记录,如果一秒内宕机,有数据丢失
no:不同步

RewriteAOF采用文件最加的方式,文件越来越大,为了避免这种状况,采取的重写机制,当AOF的文件大小超过设定阀值时,redis就会启动AOF文件的内容压缩,只保留可以恢复数据的最小指令集,可以使用命令bgrewriteaof

重写原理:AOF文件持续增长而过大时会fork出一条新进程来将文件重写(也是先写临时文件最后在rename),遍历新进程的内存中数据,每条记录有一条set语句,重写aof文件的操作,并没有读取旧的aof文件,而是将整个内存中的数据库内容用命令的方式重写了一个新的aof文件和快照类似

触发机制:redis会记录上次重写的aof大小,默认配置是aof文件大小是上次rewrite后大小的一倍且文件大于64M时触发
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

劣势:文件越来越大,数据恢复比较慢

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值