问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Linux里面什么是数据持久化?

发布网友 发布时间:2022-04-24 05:43

我来回答

1个回答

热心网友 时间:2022-04-30 10:38

数据持久化顾名思义就是把程序中的数据以某种形式保存到某存贮介质中,以达到持久化的目的。当程序运行时,一些数据是临时保存在内存中,一旦退出系统,这些数据就丢失了。那么,使用某种手段将数据保存在硬盘上或者数据库中,这样即使退出系统后又重新启动系统,那么这些数据仍然可以重新找回来。


例如管理员向一个用户管理系统中添加了一个用户的资料,那么这个系统需要将新添加的资料保存到数据库中,否则系统退出或者电脑重启后该用户资料就会丢失。将数据从内存保存到数据库中,这便是数据的持久化。当然,数据库只是持久化方式中的一种,也可以保存在其他的永久存贮介质中。

图为数据持久化的过程示意图。


持久化(Persistence),即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。持久化的主要应用是将内存中的对象存储在数据库中,或者存储在磁盘文件中、XML数据文件中等等。

持久化是将程序数据在持久状态和瞬时状态间转换的机制。

DBC就是一种持久化机制。文件IO也是一种持久化机制。

日常持久化的方法

在一定周期内保持不变就是持久化,持久化是针对时间来说的。数据库中的数据就是持久化了的数据,只要你不去删除或修改。比如在浏览器中一次Session会话中Session对象变量也是不变的,是Session容器中持久化。对象持久化的方式有很多种,根据周期不同有,page,Session,Application。对象序列化机制对于需要将对象的状态保存到文件中,而后能够通过读入对象状态来重新构造对象,恢复程序状态. 对象序列化的过程是对象持久化的方法之一,把对象保存到文件中。

简单的理解持久化可以在二个层面:应用层和系统层、

应用层

如果关闭(shutdown)你的应用然后重新启动则先前的数据依然存在。

系统层

如果关闭(shutdown)你的系统(电脑)然后重新启动则先前的数据依然存在。

持久化是一种对象服务实现至少3个接口

,就是把内存中的对象保存到外存中,让以后能够取回。需要实现至少3个接口:

void Save(object o) 把一个对象保存到外存中

Object Load(object oid) 通过对象标识从外存中取回对象

boolExists(object oid) 检查外存中是否存在某个对象.

类似概念序列化

我们先跳开一下,看看另一个类似的有用概念:序列化Serialize也是一种对象服务,就是把内存中的对象序列化成流、或者把流反序列化成对象。需要实现2个接口:

void Serialize(Stream stream,object o) 把对象序列化到流中

object Deserialize(Stream stream) 把流反序列化成对象

序列化和持久化很相似,有些人甚至混为一谈,其实还是有区别的,序列化是为了解决对象的传输问题,传输可以在线程之间、进程之间、内存外存之间、主机之间进行。我之所以在这里提到序列化,是因为我们可以利用序列化来辅助持久化,可以说凡是可以持久化的对象都可以序列化,因为序列化相对容易一些(也不是很容易),所以主流的软件基础设施,比如.net和java,已经把序列化的框架完成了。

持久化方案可以分为关系数据库方案、文件方案、对象数据库方案、xml数据库方案

现今主流的持久化方案是关系数据库方案,

关系数据库方案不仅解决了并发的问题,更重要的是,关系数据库还提供了持久化服务之外的价值:统计分析功能。刚才我说到,凡是可以序列化的对象都可以持久化,极端的说,我们可以只建立一个表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 mp.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秒将缓冲区的数据回写硬盘的)

一般来说可以考虑同时使用两种持久化方案.

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
请问昆山正仪到江苏省昆山市出口加工区新竹路99号 怎么坐班车最近? 跪求苏州神达电脑地址!!! 华为运动耳机挂脖式怎么配对 雅酷美挂脖式无线蓝牙防水耳机-运动时尚,自由畅听 已知函数f(x)=cos^2x-sin^2x+2根号3sinxcosx+1 原先微信有联系后来突然对方要求我对他进行朋友验证我没有他电话号码... 已知函数f(x)=cos^2x-sin^2x+2根号3sinxcosx 已知函数fx=cos^2*x-sin^2*x+2sinx*cosx,求fx的最小正周期,并求当... 已知函数f(x)=cos2x-sin2x 4sinx·cosx求f(x)的最小正周期,并求当x为... 已知f(x)=cos^2x-sin^x+2sinxcosx。①求函数最小正周期②当x∈【0... 《新三国》袁术的谋士白发老头叫什么? 班主任助理的职责 REDIS学习查看redis状态,以及rdb和aof两种持久化方案的区别 redis 的持久化策略有几种 什么是Redis持久化 redis中持久化策略rdb和aof的区别 rdb和aof的区别 redis的 rdb 和 aof 持久化的区别 小米手机设置全面屏 小米全面屏电视PROE43S手机投屏怎么电视老有卡顿? 小米手机全面屏有哪些功能 小米视频不能全屏播放怎么办? 关于河北省外国语学院 山东潍坊外国语学院是个怎样的学校啊? 河北外国语学院到底怎么样? 河北外国语学院怎么样图片 有哪些电视剧在天津外国语学院取景拍摄? 潍坊学院外国语学院的简介 外国语学院能举办什么样的活动,例如外语歌曲歌唱比赛,戏剧大赛之类的,更有想法的活动创意。。 西昌学院外国语学院外语协会宣传标语! 新三国袁术的那个谋士是谁 班主任助理是做什么的 redis持久化是对什么 新三国演义里面谁是袁术的军师啊? 如何做好班主任助理 redis可以持久化吗 新三国里的袁术袁公路是谁演的? 班主任助理的工作内容与要求 redis 持久化开启 淘汰策略 硬盘保留吗 新三国袁大人扮演者是谁? 大学生你为什么要做班主任助理? 新三国演义袁绍文臣写信骂曹操祖宗八代是哪一集 刚刚问我,redis持久化数据到数据库是怎么操作的 对班主任助理的认识和理解 新三国演义全演员表 java web开发缓存方案,ehcache和redis哪个更好 对新生班主任助理的认识及工作思路 新三国在28集在月光下自刎的是谁 上天助曹,不助袁啊 对班主任助理的评价 redis中的key设置了过期时间了还会在持久化到文件中吗