数据持久化

C#综合揭秘——细说事务

天涯浪子 提交于 2020-01-10 17:57:29
引言 其实事务在数据层、服务层、业务逻辑层多处地方都会使用到,在本篇文章将会为大家一一细说。 其中前面四节是事务的基础,后面的三节是事务的重点,对事务有基础的朋友可以跳过前面四节。 文章有错漏的地方欢迎各位点评。 目录 一、事务的定义 二、事务管理器 三、在ADO.NET中实现事务 四、隐式事务 TransactionScope 五、在WCF中实现事务 六、嵌套式事务 七、异步事务 一、事务的定义 所谓事务,它是一个操作集合,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。典型的例子就像从网上银行系统的帐户A转帐到帐户B,它经过两个阶段:1.从帐户A取出款项。2.把款项放入帐户B中。这两个过程要么同时成功,要么同时失败,这一系列的操作就被称为事务性(Transactional)操作。 在一个事务性操作的环境下,操作有着以下的4种特性,被称为ACID特性 原子性(Atomicity) 当事务结束,它对所有资源状态的改变都被视为一个操作,这些操作要不同时成功,要不同时失败   一致性(Consistency) 操作完成后,所有数据必须符合业务规则,否则事务必须中止 隔离性(Isolation) 事务以相互隔离的方式执行,事务以外的实体无法知道事务过程中的中间状态 持久性(Durable) 事务提交后,数据必须以一种持久性方式存储起来 回到目录 二、事务管理器

爬虫中常用的几种数据持久化方式和Django与vue的交互

↘锁芯ラ 提交于 2020-01-10 15:19:06
爬虫中常用的几种数据持久化方式和Django与vue的交互 这里我们说到爬虫中数据持久化方式和Django与vue的交互 Django与vue的交互后端: CORS_ORIGIN_ALLOW_ALL = True #开启接口 'corsheaders.middleware.CorsMiddleware', #放进配置里 就可以完成Django与vue的交互了 第一种存入csv from lxml import etree from selenium import webdriver from time import sleep import csv #导入csv模块 ww = webdriver.Chrome(executable_path=r'E:\人工智能\第六个月爬虫\chromedriver.exe') ww.get('https://xueqiu.com/') js = 'window.scrollTo(0, document.body.scrollHeight)' for i in range(3): ww.execute_script(js) sleep(5) html = ww.page_source tree = etree.HTML(html) p_list = tree.xpath('//div[@class="AnonymousHome_auchor_1RR

redis测试题

[亡魂溺海] 提交于 2020-01-10 10:06:36
1、什么是Redis? Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存。因为是纯内存操作,Redis的性能非常出色,每秒可以处理超过 10万次读写操作,是已知性能最快的Key-Value DB。 Redis的出色之处不仅仅是性能,Redis最大的魅力是支持保存多种数据结构,此外单个value的最大限制是1GB,不像 memcached只能保存1MB的数据,因此Redis可以用来实现很多有用的功能,比方说用他的List来做FIFO双向链表,实现一个轻量级的高性 能消息队列服务,用他的Set可以做高性能的tag系统等等。另外Redis也可以对存入的Key-Value设置expire时间,因此也可以被当作一 个功能加强版的memcached来用。 Redis的主要缺点是数据库容量受到物理内存的限制,不能用作海量数据的高性能读写,因此Redis适合的场景主要局限在较小数据量的高性能操作和运算上。 2、Redis相比memcached有哪些优势? (1) memcached所有的值均是简单的字符串,redis作为其替代者, 支持更为丰富的数据类型 (2) redis的速度比memcached快很多 (3) redis可以持久化其数据 3、Redis支持哪几种数据类型

redis(一):搭建redis高可用集群

本秂侑毒 提交于 2020-01-09 23:46:31
一. 搭建环境 操作系统:CentOS7 内存:2GB 核心数:单核 redis版本:5.0.7 集群结构:3主3从 二. redis安装 # 解压redis tar - xzvf redis - 5 . 0 . 7 . tar . gz cd redis - 5 . 0 . 7 # 编译并且安装 make && make install # 启动redis,查看是否安装成功 / usr / local / bin / redis - server / usr / local / src / redis - 5 . 0 . 7 / redis . conf # 客户端连接 / usr / local / bin / redis - cli - h 127 . 0 . 0 . 1 三. 集群搭建 我们这里只使用了一台机器搭建了一个伪集群,条件允许的话可以采用6台服务器搭建 在/opt目录下,当然也可以自己定义目录,创建6个文件夹,用来启动6个redis应用 cd / opt mkdir myredis cd myredis mkdir redis7000 mkdir redis7001 mkdir redis7002 mkdir redis7003 mkdir redis7004 mkdir redis7005 拷贝一份redis.conf到redis7000目录下 cp / usr

redis面试

故事扮演 提交于 2020-01-09 15:24:44
面试还搞不懂redis,快看看这40道面试题(含答案和思维导图) 原创程序员追风 发布于2019-11-25 18:09:31 阅读数 51710 收藏 展开 Redis 面试题 1、什么是 Redis?. 2、Redis 的数据类型? 3、使用 Redis 有哪些好处? 4、Redis 相比 Memcached 有哪些优势? 5、Memcache 与 Redis 的区别都有哪些? 6、Redis 是单进程单线程的? 7、一个字符串类型的值能存储最大容量是多少? 8、Redis 的持久化机制是什么?各自的优缺点? 9、Redis 常见性能问题和解决方案: 10、redis 过期键的删除策略? 11、Redis 的回收策略(淘汰策略)? 12、为什么 edis 需要把所有数据放到内存中? 13、Redis 的同步机制了解么? 14、Pipeline 有什么好处,为什么要用 pipeline? 15、是否使用过 Redis 集群,集群的原理是什么? 16、Redis 集群方案什么情况下会导致整个集群不可用? 17、Redis 支持的 Java 客户端都有哪些?官方推荐用哪个? 18、Jedis 与 Redisson 对比有什么优缺点? 19、Redis 如何设置密码及验证密码? 20、说说 Redis 哈希槽的概念? 21、Redis 集群的主从复制模型是怎样的? 22、Redis

Redis 4:Redis 持久化机制

空扰寡人 提交于 2020-01-08 20:48:15
全量同步和增量同步 全量:每天在特定的时间段(避开高峰期:比如晚上十点)或者以每个周期(比如900秒内有5次对数据库行为操作)将 数据拷贝到另一个地方,频率不是很大,但是会有丢失数据的可能 优点:对数据库的压力小 缺点:容易产生数据的丢失 丢失数据的原因:① 每天晚上十点进行数据同步,如果晚上十一点停电了,这样十点到十一点之间的数据就丢失了 ② 900秒内有5次对数据库行为操作就保存一次,如果900秒以内只有4次对数据库的行为操作,那 么此时就不会对数据进行保存了,就需要再等待下一个周期了,期间就产生断电丢失数据的可能 了或者每个周期都没有超过5次以上的对数据库的行为操作 增量同步: 就是每次对数据库的行为操作都会进行数据的同步 优点:数据不会丢失 缺点:同步的频率很高,对服务器同步的压力很大 Redis 有 RDB 和 AOF 两种持久化机制 RDB :是在某个时间段内对key的操作次数的操作实现数据持久化,所以 RDB 是全量同步 AOF : 是基于数据日志操作实现持久化,所以是增量同步 RDB 数据持久化的方式: 来源: CSDN 作者: pyd1040201698 链接: https://blog.csdn.net/pyd1040201698/article/details/103896147

分布式缓存之Redis

和自甴很熟 提交于 2020-01-08 15:49:12
缓存大致可以分为两类,一种是应用内缓存,比如Map(简单的数据结构),以及EH Cache(Java第三方库),另一种 就是缓存组件,比如Memached,Redis;Redis(remote dictionary server)是一个基于KEY-VALUE的高性能的 存储系统,通过提供多种键值数据类型来适应不同场景下的缓存与存储需求 存储结构 大家一定对字典类型的数据结构非常熟悉,比如map ,通过key value的方式存储的结构。 redis的全称是remote dictionary server(远程字典服务器),它以字典结构存储数据,并允许其他应用通过TCP协议读写字典中的内容。数 据结构如下 启动停止redis Redis有哪些可执行文件 Redis-server Redis服务器 Redis-cli Redis命令行客户端 Redis-benchmark          Redis性能测试工具 Redis-check-aof Aof文件修复工具 Redis-check-dump Rdb文件检查工具 Redis-sentinel Sentinel服务器(2.8以后) 常用的命令是redis-server和redis-cli \1.直接启动 redis-server ../redis.conf 服务器启动后默认使用的是6379的端口,通过--port可以自定义端口;

消息中间件之ActiveMQ

旧街凉风 提交于 2020-01-08 13:51:42
什么是消息中间件? 消息中间件是利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据 通信来进行分布式系统的集成。通过提供消息传递和消息排队模型,可以在分布式架构下扩展进程之间的通信。 消息中间件能做什么? 消息中间件主要解决的就是分布式系统之间消息传递的问题,它能够屏蔽各种平台以及协议之间的特性,实现引用程序之间的协同。举个非常简单的例子,就拿一个电商平台的注册功能来简单分析下,用户注册这一个服务,不单单只是insert一条数据到数据库里面就完事了,还需要发送激活邮件、发送新人红包或者积分、发送营销短信等一系列操作。假如说这里面的每一个操作,都需要消耗1s,那么整个注册过程就需要耗时4s才能响应给用户。 但是我们从注册这个服务可以看到,每一个子操作都是相对独立的,同时,基于领域划分以后,发送激活邮件、发送营销短信、赠送积分及红包都属于不同的子域。所以我们可以对这些子操作进行来实现异步化执行,类似于多线程并行处理的概念。如何实现异步化呢?用多线程能实现吗?多线程当然可以实现,只是,消息的持久化、消息的重发这些条件,多线程并不能满足。所以需要借助一些开源中间件来解决。而分布式消息队列就是一个非常好的解决办法,引入分布式消息队列以后,架构图就变成这样了(下图是异步消息队列的场景)。通过引入分布式队列,就能够大大提升程序的处理效率,并且还解决了各个模块之间的耦合问题

angular中的服务和持久化实现

倖福魔咒の 提交于 2020-01-08 01:29:56
1.创建服务: ng g service my-new-service 创建到指定目录下面 ng g service services/storage 2. app.module.ts 里面引入创建的服务 import { StorageService } from './services/storage.service'; NgModule 里面的 providers 里面依赖注入服务 import { BrowserModule } from '@angular/platform-browser'; import { NgModule } from '@angular/core'; import { FormsModule } from '@angular/forms'; import { AppRoutingModule } from './app-routing.module'; import { AppComponent } from './app.component'; import { HomeComponent } from './components/home/home.component'; import { StorageService } from './services/storage.service'; @NgModule({ declarations:

【msql】关于redo 和 undo log

不打扰是莪最后的温柔 提交于 2020-01-07 20:14:29
InnoDB 有两块非常重要的日志,一个是undo log,另外一个是redo log,前者用来保证事务的原子性以及InnoDB的MVCC,后者用来保证事务的持久性。和大多数关系型数据库一样,InnoDB记录了对数据文件的物理更改,并保证总是日志先行,也就是所谓的WAL(Write Ahead Log),即在持久化数据文件前,保证之前的redo日志已经写到磁盘 一、概念 1、Innodb Crash Recovery 这是InnoDB引擎的一个特点,当故障发生,重新启服务后,会自动完成恢复操作,将数据库恢复到之前一个正常状态(不需要重做所有的日志,只需要执行上次刷入点之后的日志,这个点就叫做Checkpoint)恢复过程有两步 第一步:检查redo日志,将之前完成并提交的事务全部重做; 第二步:将undo日志中,未完成提交的事务,全部取消 2、LSN LSN(log sequence number) 用于记录日志序号,它是一个不断递增的 unsigned long long 类型整数。 在 InnoDB 的日志系统中,LSN 无处不在,它既用于表示修改脏页时的日志序号,也用于记录checkpoint,通过LSN,可以具体的定位到其在redo log文件中的位置。 LSN 用字节偏移量来表示。每个page有LSN,redo log也有LSN,Checkpoint也有LSN