Redis存储RDB与AOF

来源:互联网 发布:淘宝老瑞贸易可信吗 编辑:程序博客网 时间:2024/06/07 16:19

Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。 Redis 内置了 复制(replication)LUA脚本(Lua scripting), LRU驱动事件(LRU eviction)事务(transactions) 和不同级别的 磁盘持久化(persistence), 并通过 Redis哨兵(Sentinel)和自动 分区(Cluster)提供高可用性(high availability)

 1################################ RDB  ################################# 2 # Save the DB ondisk: 3#  设置sedis进行数据库镜像的频率。 4 #  900秒(15分钟)内至少1个key值改变(则进行数据库保存--持久化)。 5 #  300秒(5分钟)内至少10个key值改变(则进行数据库保存--持久化)。 6 #  60秒(1分钟)内至少10000个key值改变(则进行数据库保存--持久化)。 7save9001 8save30010 9save60100001011 stop-writes-on-bgsave-error yes12# 在进行镜像备份时,是否进行压缩。yes:压缩,但是需要一些cpu的消耗。no:不压缩,需要更多的磁盘空间。13rdbcompression yes14 # 一个CRC64的校验就被放在了文件末尾,当存储或者加载rbd文件的时候会有一个10%左右的性能下降,为了达到性能的最大化,你可以关掉这个配置项。15rdbchecksum yes16# 快照的文件名17 dbfilename dump.rdb18# 存放快照的目录19 dir /var/lib/redis 

1 ############################## AOF ############################### 2# 是否开启AOF,默认关闭(no) 3appendonly yes 4# 指定 AOF 文件名 5appendfilename appendonly.aof 6# Redis支持三种不同的刷写模式: 7# appendfsync always #每次收到写命令就立即强制写入磁盘,是最有保证的完全的持久化,但速度也是最慢的,一般不推荐使用。 8appendfsync everysec #每秒钟强制写入磁盘一次,在性能和持久化方面做了很好的折中,是受推荐的方式。 9# appendfsync no     #完全依赖OS的写入,一般为30秒左右一次,性能最好但是持久化最没有保证,不被推荐。1011#在日志重写时,不进行命令追加操作,而只是将其放在缓冲区里,避免与命令的追加造成DISK IO上的冲突。12#设置为yes表示rewrite期间对新写操作不fsync,暂时存在内存中,等rewrite完成后再写入,默认为no,建议yes13 no-appendfsync-on-rewrite yes 14#当前AOF文件大小是上次日志重写得到AOF文件大小的二倍时,自动启动新的日志重写过程。15 auto-aof-rewrite-percentage 10016#当前AOF文件启动新的日志重写过程的最小值,避免刚刚启动Reids时由于文件尺寸较小导致频繁的重写。17 auto-aof-rewrite-min-size 64mb

子进程在执行AOF重写时,

1.处理命令请求,

2.将写命令追加到现有的AOF文件中,

3.将写命令追加到AOF重写缓存中


注意:

      上面说了RDB快照的持久化,需要注意:在进行快照的时候(save),fork出来进行dump操作的子进程会占用与父进程一样的内存,真正的copy-on-write,对性能的影响和内存的耗用都是比较大的。比如机器8G内存,Redis已经使用了6G内存,这时save的话会再生成6G,变成12G,大于系统的8G。这时候会发生交换;要是虚拟内存不够则会崩溃,导致数据丢失。所以在用redis的时候一定对系统内存做好容量规划



原创粉丝点击