标签:好的 var 数据库 stop 怎么办 哪些 mem 设置 冲突
以前研究Redis的时候,很多东西都不太明白,理解得也不太深,现在有时间重新拾起来看看,将一些心得记录下来,希望和大家一起探讨。
一、简介
Redis是一个单线程高可用的Key-Value存储系统,和Memcached类似,但是实际使用上最大的区别有两方面:
二、Redis的持久化方式介绍(注:为了省事,相关配置直接贴的是网上的)
1. RDB(默认):即snapshot(快照),从字面意思上理解,就像将其进行的一些命令操作以照片方式记录下来,那么,有人肯定会存在以下几个疑问:
################################ SNAPSHOTTING ################################# # Save the DB on disk: # 设置sedis进行数据库镜像的频率。 # 900秒(15分钟)内至少1个key值改变(则进行数据库保存--持久化)。 # 300秒(5分钟)内至少10个key值改变(则进行数据库保存--持久化)。 # 60秒(1分钟)内至少10000个key值改变(则进行数据库保存--持久化)。 save 900 1 save 300 10 save 60 10000 stop-writes-on-bgsave-error yes # 在进行镜像备份时,是否进行压缩。yes:压缩,但是需要一些cpu的消耗。no:不压缩,需要更多的磁盘空间。 rdbcompression yes # 一个CRC64的校验就被放在了文件末尾,当存储或者加载rbd文件的时候会有一个10%左右的性能下降,为了达到性能的最大化,你可以关掉这个配置项。 rdbchecksum yes # 快照的文件名 dbfilename dump.rdb # 存放快照的目录 dir /var/lib/redis
2. AOF:即Append Only File,该种持久化解决了上面提到的数据丢失问题,但是同样,可能有人会存在以下几个疑问:
############################## APPEND ONLY MODE ############################### # 是否开启AOF,默认关闭(no) appendonly yes # 指定 AOF 文件名 appendfilename appendonly.aof # Redis支持三种不同的刷写模式: # appendfsync always #每次收到写命令就立即强制写入磁盘,是最有保证的完全的持久化,但速度也是最慢的,一般不推荐使用。 appendfsync everysec #每秒钟强制写入磁盘一次,在性能和持久化方面做了很好的折中,是受推荐的方式。 # appendfsync no #完全依赖OS的写入,一般为30秒左右一次,性能最好但是持久化最没有保证,不被推荐。 #在日志重写时,不进行命令追加操作,而只是将其放在缓冲区里,避免与命令的追加造成DISK IO上的冲突。 #设置为yes表示rewrite期间对新写操作不fsync,暂时存在内存中,等rewrite完成后再写入,默认为no,建议yes no-appendfsync-on-rewrite yes #当前AOF文件大小是上次日志重写得到AOF文件大小的二倍时,自动启动新的日志重写过程。 auto-aof-rewrite-percentage 100 #当前AOF文件启动新的日志重写过程的最小值,避免刚刚启动Reids时由于文件尺寸较小导致频繁的重写。 auto-aof-rewrite-min-size 64mb
三、总结
今天主要介绍Redis的两种持久化机制,在现实系统中应用时该如何选择,那么不能一定说哪个好!比如,如果系统能够容忍数据部分丢失的情况下,则使用RDB,如果不能则使用AOF;但是AOF频繁写入文件,也会带来一定的性能损耗。有些时候也会混合使用,在这种情况下,Redis crash后,通过加载AOF文件来恢复数据。
以后会再列出Redis的高可用(master-slave)部分!
标签:好的 var 数据库 stop 怎么办 哪些 mem 设置 冲突
原文地址:http://www.cnblogs.com/handsomeye/p/6079543.html