数据持久化

Redis持久化

China☆狼群 提交于 2020-01-29 17:03:42
RDB RDB是通过直接将K-V键值对保存在硬盘文件来持久化。 通过两个命令可以让服务器执行rdb操作(tips:SAVE和BGSAVE底层都是调用的rdbSave) SAVE:SAVE命令由主进程执行,所以当执行SAVE命令后,服务器将进入阻塞状态,只有当RDB文件生成完成后,才开始处理请求。 BGSAVE:BGSAVE的RDB文件是fork出一个子进程来执行SAVE操作,此时redis服务器是非阻塞仍旧可以继续处理接受请求。 但是BGSAVE命令执行期间,服务器处理SAVE,BGSAVE,BGREWRITEAOF三个命令的方式会有所不同。 SAVE:命令会被拒绝,服务器为了避免父子进程同时执行两个rdbSave调用,防止产生竞争条件。 BGSAVE:理由同上。 BGREWRITEAOF:不能同时执行,必须等一个先执行完了另一个才开始执行,这是从性能方面考虑,两个子进程同时执行大量的磁盘写入操作,影响性能。 RDB文件没有手动载入的命令,服务器启动时会主动去读取RBD文件,同样在RDB文件载入时,服务器处于阻塞状态。 定时BGSAVE:设置参数让redis服务器定时生成RDB文件: save 900 1:900秒内有一次修改就生成,该配置项保存在server.saveparams中,redis的定时维护任务serverCron每隔100毫秒检查一次saveparams中的参数

docker之容器数据持久化

 ̄綄美尐妖づ 提交于 2020-01-29 03:52:17
1.挂载本地目录为容器的数据存放目录 [root@node03 ~]# docker run -itd --name web01 -v /container_data/web:/data ubuntu [root@node03 ~]# docker inspect web01 2.到挂载的目录下面创建一个文件 [root@node03 ~]# cd /container_data/web/ [root@node03 web]# ls [root@node03 web]# touch test.index 3、查看web01容器下面的data目录是否存在刚才创建的文件 [root@node03 ~]# docker exec web01 ls /data 4、在创建一个web02 的容器,也挂载相同的目录,看看刚才的文件是否还存在 [root@node03 ~]# docker run -itd --name web02 -v /container_data/web:/data ubuntu 二、 容器 数据卷 创建一个dvdata的数据卷容器: [root@node03 ~]# docker run -itd -v /data --name dvdata ubuntu 注:/data是数据卷容器内共享的目录 在其他容器中挂载dvdata容器的数据卷: [root@node03 ~]

hibernate整理

泪湿孤枕 提交于 2020-01-28 17:19:24
国外框架项目地址:http://websystique.com/springmvc/spring-mvc-4-angularjs-example/Angularjs文本输入框用ng-moduel,其他的用{{ }}放行用.*?Angularjs插件地址http://www.cnblogs.com/pilixiami/p/5634405.htmlUI班的教程:http://pan.baidu.com/share/link?shareid=4146906997&uk=866705889非严格读写是并发的概念Spring不支持多线程Flush()强制要求缓存与数据库一致Eache表连接,lazy子查询ORM: 编写程序时,以面向对象的方式处理数据 保存数据时是以关系型数据库的方式存储的Hibernate的数据持久化: New实例化对象时默认是瞬时的 Jdbc连接数据库时,持久化数据 将数据存入硬盘单向关联关系: 一个类单方向包含另一个类为属性,模拟数据库外键mysql数据库附加:String driver=com.mysql.jdbc.DriverString url=jdbc:mysql://localhost:3306/demohibernate注入: 实体类(1)这个表示一个实体类,Table表示对应数据库中的表名。@Entity@Table(name="t_emp")(2

python学习之redis编程

心不动则不痛 提交于 2020-01-28 14:51:33
Redis简介 Redis(Remote Dictionary Server)远程字典数据服务的缩写,由意大利 人开发的是一款内存高速缓存数据库。使用ANSI C语言编写、支持网络、可基于内 存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API并提供多种语言 的 API的非关系型数据库。 Redis和Memcache对比? Redis的安装 首先上官网下载Redis 压缩包,地址 http://redis.io/download 压缩包执行解压操作并进行编译 #tar xzf redis-x.x.x.tar.gz #cd redis-x.x.x/ #make && make install #sh utils/install_server.sh Redis的部署 执行Redis-server 命令,启动Redis 服务 redis-server 客户端redisClient redis-cli #登录redis set 'a' '123' 当添加键值后,发现在当前运行的目录下,创建了一个文件:dump.rdb,这个文 件用于将数据持久化存储 Redis内置数据类型 • string 类型 是二进制安全的。可以包含任何数据(eg: jpg 图片或者序列化的对象)。 从内部实现来看其实 string 可以看作 byte 数组,最大上限是 1G 字节。 • hash类型

docker容器持久化卷讲解

南笙酒味 提交于 2020-01-28 07:57:38
docker容器自身存储数据效率比较低,因此我们为了提高磁盘IO的性能等,需要在容器中挂载一个外部存储设备。关于讲解大致如下: Docker中的数据可以存储在类似于虚拟机磁盘的介质中,在Docker中称为数据卷(Data Volume)。数据卷可以用来存储Docker应用的数据,也可以用来在Docker容器间进行数据共享。 数据卷呈现给Docker容器的形式就是一个目录,支持多个容器间共享,修改也不会影响镜像。使用Docker的数据卷,类似在系统中使用 mount 挂载一个文件系统。 1)一个数据卷是一个特别指定的目录,该目录利用容器的UFS文件系统可以为容器提供一些稳定的特性或者数据共享。数据卷可以在多个容器之间共享。 2)创建数据卷,只要在docker run命令后面跟上-v参数即可创建一个数据卷,当然也可以跟多个-v参数来创建多个数据卷,当创建好带有数据卷的容器后, 就可以在其他容器中通过--volumes-froms参数来挂载该数据卷了,而不管该容器是否运行。也可以在Dockerfile中通过VOLUME指令来增加一个或者多个数据卷。 3)如果有一些数据想在多个容器间共享,或者想在一些临时性的容器中使用该数据,那么最好的方案就是你创建一个数据卷容器,然后从该临时性的容器中挂载该数据卷容器的数据。 这样,即使删除了刚开始的第一个数据卷容器或者中间层的数据卷容器

Spark学习之路 (八)SparkCore的调优之开发调优[转]

别说谁变了你拦得住时间么 提交于 2020-01-26 18:06:36
前言 在大数据计算领域,Spark已经成为了越来越流行、越来越受欢迎的计算平台之一。Spark的功能涵盖了大数据领域的离线批处理、SQL类处理、流式/实时计算、机器学习、图计算等各种不同类型的计算操作,应用范围与前景非常广泛。在美团•大众点评,已经有很多同学在各种项目中尝试使用Spark。大多数同学(包括笔者在内),最初开始尝试使用Spark的原因很简单,主要就是为了让大数据计算作业的执行速度更快、性能更高。 然而,通过Spark开发出高性能的大数据计算作业,并不是那么简单的。如果没有对Spark作业进行合理的调优,Spark作业的执行速度可能会很慢,这样就完全体现不出Spark作为一种快速大数据计算引擎的优势来。因此,想要用好Spark,就必须对其进行合理的性能优化。 Spark的性能调优实际上是由很多部分组成的,不是调节几个参数就可以立竿见影提升作业性能的。我们需要根据不同的业务场景以及数据情况,对Spark作业进行综合性的分析,然后进行多个方面的调节和优化,才能获得最佳性能。 笔者根据之前的Spark作业开发经验以及实践积累,总结出了一套Spark作业的性能优化方案。整套方案主要分为开发调优、资源调优、数据倾斜调优、shuffle调优几个部分。开发调优和资源调优是所有Spark作业都需要注意和遵循的一些基本原则,是高性能Spark作业的基础;数据倾斜调优

Spark学习之路 (十二)SparkCore的调优之资源调优[转]

本小妞迷上赌 提交于 2020-01-26 17:48:23
概述 在开发完Spark作业之后,就该为作业配置合适的资源了。Spark的资源参数,基本都可以在spark-submit命令中作为参数设置。很多Spark初学者,通常不知道该设置哪些必要的参数,以及如何设置这些参数,最后就只能胡乱设置,甚至压根儿不设置。资源参数设置的不合理,可能会导致没有充分利用集群资源,作业运行会极其缓慢;或者设置的资源过大,队列没有足够的资源来提供,进而导致各种异常。总之,无论是哪种情况,都会导致Spark作业的运行效率低下,甚至根本无法运行。因此我们必须对Spark作业的资源使用原理有一个清晰的认识,并知道在Spark作业运行过程中,有哪些资源参数是可以设置的,以及如何设置合适的参数值。 Spark作业基本运行原理 详细原理见上图。我们使用spark-submit提交一个Spark作业之后,这个作业就会启动一个对应的Driver进程。根据你使用的部署模式(deploy-mode)不同,Driver进程可能在本地启动,也可能在集群中某个工作节点上启动。Driver进程本身会根据我们设置的参数,占有一定数量的内存和CPU core。而Driver进程要做的第一件事情,就是向集群管理器(可以是Spark Standalone集群,也可以是其他的资源管理集群,美团•大众点评使用的是YARN作为资源管理集群)申请运行Spark作业需要使用的资源

Redis学习--Redis的事务与持久化

巧了我就是萌 提交于 2020-01-26 14:05:22
一、Redis的事务    Redis的事务与mysql中的事务是不一样的,Redis的事务主要是用来处理线程安全性问题。它的定义为:Redis事务是一个单独的隔离操作,事务中所有的命令都会序列化,按顺序地执行。事务在执行过程中,不会被其他客户端命令打断。   Redis执行命令是一个队列,它会把一堆命令都放在一个队列中然后顺序执行。因此Redis的执行命令有两个状态:第一个是组队状态,就是将要执行的命令组队在一起,如果组队过程中某个命令出错了,那么执行时整个队列命令都会取消;第二个状态是执行状态,如果执行状态中某个命令出错了,则只是出错的命令不会执行,其他的任然会继续执行。   Redis事务的三个特点:   1.单独的隔离操作。   2.没有隔离级别的概念。   3.不保证原子性,这是因为命令出错会继续执行,不会进行回滚。 二、Redis的持久化     1.RDB持久化方式   在指定的时间间隔内将内存中的数据集快照写入磁盘,在进行数据恢复时,将快照文件直接读取到内存中。   RDB的特点:   优点:   a.节省磁盘空间,这是因为RDB的持久化方式是会将当前时间前的数据快照进行清理,因此存储的快照只会是最近几次的。   b.恢复速度快,恢复的数据已经有了只是作一次拷贝,因此速度很快。   缺点:   a.备份快照的方式是根据时间周期进行备份,如果Redis意外的宕机

vuex持久化+模块化实战用法(进阶篇)

﹥>﹥吖頭↗ 提交于 2020-01-25 10:38:09
上一篇: vuex刷新数据消失不见解决方案 Vuex模块化 模块化后的 store 大概长这样, 如果画的不对,欢迎留言 这样经过模块化的vuex,每个模块维护着不同组件的数据,清晰直观 编码实现 创建store文件夹, 创建index.js 作为vuex的入口js import Vue from "vue" ; import Vuex from "vuex" ; import createPersistedState from "vuex-persistedstate" ; import login from "./modules/login" ; import loginOther from "./modules/loginOther" ; Vue . use ( Vuex ) ; export default new Vuex . Store ( { plugins : [ createPersistedState ( { storage : window . sessionStorage , reducer ( val ) { return { // 需要储存的数据 login : val . login , } } } ) ] , modules : { login , loginOther , //带有Other的是不需要刷新保存数据的,不带的是需要刷新保存的 } ,

redis持久化机制

南笙酒味 提交于 2020-01-25 05:05:07
1、简单介绍   redis的持久化机制是用于把内存的数据存储到硬盘上,作用是当redis服务重启时或者当系统奔溃或故障,那么redis重启可以把数据从硬盘上恢复到内存。   redis的持久化机制有2种,第一种是快照;第二种是aof。 1)快照方式   快照方式是指在一定时间间隔后当写命令达到了配置要求的数量,则把内存中的所有数据全部保存到文件。这里是采用的写时复制机制,首先父进程会fork一个子进程,父进程会继续接受client的读和写请求,子进程会把当前内存中的数据保存到一个临时文件中,在子进程做快照的过程中,如果有写请求,那么父进程会把写的数据放到一个缓冲区,当子进程把之前的缓存数据写好了临时文件后,子进程会告知父进程,然后子进程再把临时缓冲区就是新增的数据再写入临时rdb文件,然后rename,把临时文件替换为正式的rdb文件。   【注意】: 快照保存的规则可以在redis的配置文件中配置,可以多配置几条策略,比如:   save 900 1     【备注】:这里是指900秒检查一次,如果有1条写命令,则马上做快照   save 300 10    【备注】:这里是指每300秒检查一次,如果写命令达到10条,则马上做快照   save 60 10000   【备注】:这里是指60秒检查一次,如果写命令达到10000条,则马上做快照   【备注】