NoSQL数据库 Redis存储策略

redis的持久化策略分为两种:

rdb存储策略aof存储策略

1.rdb存储策略(数据保存位置 -> redis根目录/bin/dmp.rdb)

按照一定的时间间隔触发数据保存操作

优点

不是在用户写数据的同时立即保存数据到硬盘,因此能给服务器大量减压

缺点

其优点就是是其缺点,由于按照一定的时间间隔存储,所以在不正常或者非法关闭时,会导致最后一次的数据丢失

解决方案

搭建redis集群或者采用aof存储策略(aof会牺牲性能)

1)关于rdb存储策略的配置(redis.conf文件)

redis默认配置如下:(默认开启)

save  900  1                    # 15分钟执行一次写操作就会保存一次
save  300   10                  # 5分钟执行10次写操作就会保存一次
save  60   10000                # 1分钟执行10000次写操作就会保存一次
2) rdb存储策略的原理

当触及到rbd持久化策略时,将会fork出一个子进程
同时会拍摄当前数据库的快照信息(SNAPSHOT)
父进程继续处理服务端其他业务:由子进程处理SNAPSHOT的持久化存储,当子进程持久化结束,则自动销毁
缺点:非法关闭,会丢失最后一次操作的数据


#### 2.aof存储策略(数据保存位置  ->  redis根目录/bin/appendonly.aof)

> aof存储策略(append only file)----->默认关闭
>
> ***特点***:`将每次写操作存储到aof持久化文件(appendonly.aof)中,默认不开启,此模式追求该可靠型`
> ***缺点***:主要是性能差点(想比较rdb存储策略)
##### 1)  开启aof存储策略(redis.conf)

> appendonly yes

##### 2) aof持久化策略(redis.conf)

```shell
# appendfsync always   
appendfsync everysec
# appendfsync no

当设置appendfsync为no的时候,Redis不会主动调用fsync去将AOF日志内容同步到磁盘,所以这一切就完全依赖于操作系统的调试了。对大多数Linux操作系统,是每30秒进行一次fsync,将缓冲区中的数据写到磁盘上。

当设置appendfsync为everysec的时候,Redis会默认每隔一秒进行一次fsync调用,将缓冲区中的数据写到磁盘。但是当这一
次的fsync调用时长超过1秒时。Redis会采取延迟fsync的策略,再等一秒钟。也就是在两秒后再进行fsync,这一次的fsync就不管会执行多长时间都会进行。这时候由于在fsync时文件描述符会被阻塞,所以当前的写操作就会阻塞。

当设置appendfsync为always时,每一次写操作都会调用一次fsync,这时数据是最安全的,当然,由于每次都会执行fsync,所以其性能也会受到影响

建议采用 appendfsync everysec(缺省方式)

:aof和rdb两种同时配置时,如果启动的时候aof可用,则使用aof存储策略,对于选择来说,aof追求高可靠性,而rdb模式追求高性能。

即优先级:aof > rdb

aof不能有异常,服务启动异常

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值