关系数据库方案不仅解决了并发的问题,更重要的是,关系数据库还提供了持久化服务之外的价值:统计分析功能 。刚才我说到,凡是可以序列化的对象都可以持久化,极端的说,我们可以只建立一个表Object(OID,Bytes),但基本上没有人这么做,因为一旦这样,我们就失去了关系数据库额外的统计分析功能 。关系数据库和面向对象之间有一条鸿沟,因为二者模式不匹配 , 所以就存在一个OR映射问题 。
Redis支持两种数据持久化方式:rdb方式和aof方式 。前者会根据配置的规则定时将内存中的数据持久化到硬盘上 , 后者则是在每次执行写命令之后将命令记录下来 。两种持久化方式可以单独使用,但是通常会将两者结合使用 。
1、RDB方式
RDB方式的持久化是通过快照的方式完成的 。当符合某种规则时,会将内存中的数据全量生成一份副本存储到硬盘上 , 这个过程称作”快照”,redis默认开启该持久化功能,具体配置如下:
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
#文件名称
dir ./
#rdb文件存放路径
配置后系统会自动进行快照,save 60 10000表示60秒内有10000次写入,那么就会调用bgsave
除了系统自动进行快照外,我们也可以手动执行SAVE或BGSAVE命令主动进行快照操作:
执行SAVE或BGSAVE命令
执行FLUSHALL命令
2、AOF方式
在使用Redis存储非临时数据时,一般都需要打开AOF持久化来降低进程终止导致的数据丢失,AOF可以将Redis执行的每一条写命令追加到硬盘文件中,这一过程会降低Redis的性能 。
默认情况下 , Redis没有开启AOF(append only file)持久化功能,可以通过在配置文件中作如下配置启用:
appendonly no#是否开启aof,开启时将no改为yes
appendfilename "appendonly.aof"持久化文件名称
auto-aof-rewrite-percentage 100
#当前AOF文件大小是上次日志重写得到AOF文件大小的二倍时,自动启动新的日志重写过程 。
auto-aof-rewrite-min-size 64mb
#当前AOF文件启动新的日志重写过程的最小值,避免刚刚启动Reids时由于文件尺寸较小导致频繁的重写 。
appendfsync :everysec (推荐配置)
#持久化策略
always (同步持久化,每次发生数据变更会被立即记录到磁盘 , 性能差但数据完整性比较好)
everysec (异步操作,每秒记录 , 如果一秒钟内宕机,有数据丢失)
no(将缓存回写的策略交给系统,linux 默认是30秒将缓冲区的数据回写硬盘的)
一般来说可以考虑同时使用两种持久化方案.
linux上怎么配置redis的aof持久化Redis 持久化和配置文件
Reids 持久化
Redis提供了两种持久化的方式 , 分别是RDB(Redis DataBase)和AOF(Append Only File) 。
RDB,简而言之,就是在不同的时间点,将redis存储的数据生成快照并存储到磁盘等介质上 。
AOF,则是换了一个角度来实现持久化,那就是将redis执行过的所有写指令记录下来,在下次redis重新启动时,只要把这些写指令从前到后再重复执行一遍,就可以实现数据恢复了 。
其实RDB和AOF两种方式也可以同时使用,在这种情况下,如果redis重启的话 , 则会优先采用AOF方式来进行数据恢复,这是因为AOF方式的数据恢复完整度更高 。
如果你没有数据持久化的需求 , 也完全可以关闭RDB和AOF方式,这样的话 , redis将变成一个纯内存数据库,就像memcache一样 。
redis配置文件
daemonize no# 默认情况下,redis并不是以daemon形式来运行的 。通过daemonize配置项可以控制redis的运行形式
推荐阅读
- ip代理程序,ip代理百度百科
- 主板电脑怎么看显卡,主板怎么看显卡型号
- androidapp自动更新安装失败怎么办,android系统自动安装软件
- 谢靖虎牙直播,虎牙谢徒为什么不播了?
- vb.net运行项目 vbnet framework
- 华为p40pro升级鸿蒙系统教程,华为p40pro参数配置
- 胖胖角色扮演游戏,肥胖的游戏角色
- Mongodb备份与恢复第一步什么命令,mongodb备份表
- c语言随机函数随机种子 c语言随机数种子怎么用