数据持久化

Redis持久化

浪尽此生 提交于 2020-01-19 19:58:07
RDB持久化 redis可以在某个时间点上对内存中的数据创建一个副本文件,副本文件中的数据在redis重启时会被自动加载,我们也可以将副本文件拷贝到其他地方一样可以使用 如何配置快照持久化 redis中的快照持久化默认是开启的,redis.conf中相关配置主要有如下几项: save 900 1 save 300 10 save 60 10000 stop-writes-on-bgsave-error yes rdbcompression yes dbfilename dump.rdb dir ./ 前面三个save相关的选项表示备份的频率,分别表示 900秒内至少一个键被更改则进行快照,300秒内至少10个键被更改则进行快照,60秒内至少10000个键被更改则进行快照, stop-writes-on-bgsave-error表示在快照创建出错后,是否继续执行写命令,rdbcompression则表示是否对快照文件进行压缩,dbfilename表示生成的快照文件的名字,dir则表示生成的快照文件的位置,在redis中,快照持久化默认就是开启的 快照持久化操作流程 1.在redis运行过程中,我们可以向redis发送一条save命令来创建一个快照,save是一个阻塞命令,redis在接收到save命令之后,开始执行备份操作之后,在备份操作执行完毕之前,将不再处理其他请求

kafka 基础知识梳理及集群环境部署记录

流过昼夜 提交于 2020-01-19 14:35:06
一、kafka基础介绍 Kafka是最初由Linkedin公司开发,是一个分布式、支持分区的(partition)、多副本的(replica),基于zookeeper协调的分布式消息系统,它的最大的特性就是可以实时的处理大量数据以满足各种需求场景:比如基于hadoop的批处理系统、低延迟的实时系统、storm/Spark流式处理引擎,web/nginx日志、访问日志,消息服务等等,用scala语言编写,Linkedin于2010年贡献给了Apache基金会并成为顶级开源 项目。 kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。这种动作(网页浏览,搜索和其他用户的行动)是在现代网络上的许多社会功能的一个关键因素。这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。 消息队列的性能好坏,其文件存储机制设计是衡量一个消息队列服务技术水平和最关键指标之一,Kafka可以实现高效文件存储,实际应用效果极好。 1.1) kafka名词解释(架构的四个部分) - producer:生产者。 - consumer:消费者。 - topic: 消息以topic为类别记录,Kafka将消息种子(Feed)分门别类,每一类的消息称之为一个主题(Topic)。 - broker:以集群的方式运行,可以由一个或多个服务组成

Redis 持久化

為{幸葍}努か 提交于 2020-01-19 08:43:48
RDB rdb是redis默认的持久化方案 在指定次数的写操作时,会将内存的快照(snapshot)的数据写入到磁盘。读取时也是读快照恢复 redis.conf文件对应 SNAPSHOTTING部分 1.save <seconds> <changes> # save<指定时间间隔><指定操作次数> # save “” save 900 1 # 900秒内有一个操作 save一下 save 300 10 save 60 10000 2. 指定文件名。default为 dump.rdb dbfilename dump.rdb 3 文件存放路径 dir ./ 4.默认开启数据压缩 rdbcompression yes5.stop-writes-on-bgsave-error yes当redis无法写入磁盘时,直接关掉redis的写操作  如何执行 (bgsave)redis会单独fork一个子进程来进行持久化,先将一数据写入一个临时文件中,待整个持久化过程结束,再用这个临时文件替换掉上次持久化好了的文件,而父进程可以继续处理客户端请求。 (save) 这是阻塞式的存储,客户端无法连接redis,等save完成后 主进程接到子进程的信号,才开始工作。 优点:由于保存文件是内存的快照,所以这种在恢复时非常快,适用于备份和灾难恢复。 生成rdb文件的时候 主进程不会受到干扰。

《【面试突击】— Redis篇》-- Redis哨兵原理及持久化机制

寵の児 提交于 2020-01-19 00:22:52
能坚持别人不能坚持的,才能拥有别人未曾拥有的。 关注 编程大道 公众号,让我们一同坚持心中所想,一起成长!! 《【面试突击】— Redis篇》-- Redis哨兵原理及持久化机制 在这个系列里,我会整理一些面试题与大家分享,帮助年后和我一样想要在金三银四准备跳槽的同学。 我们一起巩固、突击面试官常问的一些面试题,加油!! 《【面试突击】— Redis篇》--Redis数据类型?适用于哪些场景? 《【面试突击】— Redis篇》--Redis的线程模型了解吗?为啥单线程效率还这么高? 《【面试突击】— Redis篇》-- Redis的主从复制?哨兵机制? 前两次因为时间原因面试官暂时中止了面试,觉得上次你对redis的主从复制,哨兵机制的知识掌握的还可以,于是今天面试官想看看你到底对Redis了解有多深,又加大了攻势,你准备好了吗? 上次因为时间问题面试草草收场今天我还有几个哨兵的问题要问。首先说一下Redis Sentinel是怎么工作的?重点描述一下故障转移的过程 好的。 1)每个Sentinel以每秒钟一次的频率向它所知的Master,Slave以及其他 Sentinel 实例发送一个 PING 命令。 2)如果一个实例(instance)距离最后一次有效回复 PING 命令的时间超过 down-after-milliseconds 选项所指定的值, 则这个实例会被当前

Spark RDD持久化

北城以北 提交于 2020-01-19 00:14:08
当持久化一个RDD的时候,每一个节点都将参与计算的所有分区数据存储到内存中,并且这些数据可以被这个集合(以及这个集合衍生的其他集合)的动作(action)重复利用。这个能力使后续的动作速度更快(通常快10倍以上)。对应迭代算法和快速的交互使用来说,缓存是一个关键的工具。 持久化一个rdd方法 persist() cache() 每一个被持久化的RDD,可以利用不同的存储级别存储。 Storage Level Meaning MEMORY_ONLY 将RDD作为非序列化的Java对象存储在jvm中。如果RDD不适合存在内存中,一些分区将不会被缓存,从而在每次需要这些分区时都需重新计算它们。这是系统默认的存储级别。 MEMORY_AND_DISK 将RDD作为非序列化的Java对象存储在jvm中。如果RDD不适合存在内存中,将这些不适合存在内存中的分区存储在磁盘中,每次需要时读出它们。 MEMORY_ONLY_SER 将RDD作为序列化的Java对象存储(每个分区一个byte数组)。这种方式比非序列化方式更节省空间,特别是用到快速的序列化工具时,但是会更耗费cpu资源—密集的读操作。 MEMORY_AND_DISK_SER 和MEMORY_ONLY_SER类似,但不是在每次需要时重复计算这些不适合存储到内存中的分区,而是将这些分区存储到磁盘中。 DISK_ONLY

Redis 总结

こ雲淡風輕ζ 提交于 2020-01-18 17:19:47
redis 简介 简单来说 redis 就是一个数据库,不过与传统数据库不同的是 redis 的数据是存在内存中的,所以读写速度非常快,因此 redis 被广泛应用于缓存方向。另外,redis 也经常用来做分布式锁。redis 提供了多种数据类型来支持不同的业务场景。除此之外,redis 支持事务 、持久化、LUA脚本、LRU驱动事件、多种集群方案。 为什么要用 redis/为什么要用缓存 主要从“高性能”和“高并发”这两点来看待这个问题。 高性能: 假如用户第一次访问数据库中的某些数据。这个过程会比较慢,因为是从硬盘上读取的。将该用户访问的数据存在缓存中,这样下一次再访问这些数据的时候就可以直接从缓存中获取了。操作缓存就是直接操作内存,所以速度相当快。如果数据库中的对应数据改变的之后,同步改变缓存中相应的数据即可! 高并发: 直接操作缓存能够承受的请求是远远大于直接访问数据库的,所以我们可以考虑把数据库中的部分数据转移到缓存中去,这样用户的一部分请求会直接到缓存这里而不用经过数据库。 为什么要用 redis 而不用 map/guava 做缓存? 下面的内容来自 segmentfault 一位网友的提问,地址: https://segmentfault.com/q/1010000009106416 缓存分为本地缓存和分布式缓存。以 Java 为例,使用自带的 map 或者

JPA和Hibernate到底是什么关系???

怎甘沉沦 提交于 2020-01-18 09:03:07
JPA和Hibernate到底是什么关系??? https://www.cnblogs.com/mosoner/p/9494250.html (文章借用了其他几篇博客中的内容,因为是初学者,许多概念性的关系自己不能完全理解,就将大神的搬了过来,如有不当,可留言,本人自会妥善处理,谢谢) 在学习框架的过程中,发现学的东西很多,但是感觉他们之间的联系区别都不是很了解,知道JPA可以去实现持久化数据到数据库当中,Hibernate也有这样的功能,总以为他们之间是一种平级的关系,拥有同样的作用,是一种可以相互替代的关系,就像你吃饭时,选择吃米饭和吃面条一样,然而,在进行了一番搜索之后,发现并不是那么回事儿。 JPA本身是一种规范,它的本质是一种ORM规范(不是ORM框架,因为JPA并未提供ORM实现,只是制定了规范)因为JPA是一种规范,所以,只是提供了一些相关的接口,但是接口并不能直接使用,JPA底层需要某种JPA实现,JPA现在就是Hibernate功能的一个子集 Hibernate 从3.2开始,就开始兼容JPA。Hibernate3.2获得了Sun TCK的 JPA(Java Persistence API) 兼容认证。 JPA和Hibernate之间的关系,可以简单的理解为JPA是标准接口,Hibernate是实现,并不是对标关系,借用下图可以看清楚他们之间的关系

Redis(五)

☆樱花仙子☆ 提交于 2020-01-17 23:37:57
Redis的持久化 Redis 为什么要持久化? Redis 中的数据类型都支持 push/pop、add/remove 及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,Redis 支持各种不同方式的排序。与 Memcached 一样,为了保证效率,数据都是缓存在内存中。 对,数据都是缓存在内存中的,当你重启系统或者关闭系统后,缓存在内存中的数据都会消失殆尽,再也找不回来了。所以,为了让数据能够长期保存,就要将 Redis 放在缓存中的数据做持久化存储。 Redis提供了2种不同形式的持久化方式 RDB(Redis Database) AOF (Append Of File) RDB 在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是行话讲的Snapshot快照,它恢复是将快照文件直接读到内存里。 备份如何执行的 Redis会单独创建( fork )一个子进程来进行持久化,会先将数据写入到一个临时文件中,待持久化过程都结束了,再用这个临时文件替换 到上次持久化好的文件。整个过程中,主进程是不进行任何IO操作的,这就确保了极高的性能如果需要进行大规模数据恢复操作,且对于 数据恢复的完整性不是很敏感,那么RDB方式要比AOF方式更加的高效。RDB的缺点是最后一次持久化后的数据可能丢失(正常退出如shutdown会完整保存)。 关于fork 在Linux程序中

想拿百度、阿里等一线大厂offer必会:Redis+Spring+Dubbo+Zookeeper+微服务

一世执手 提交于 2020-01-17 17:18:53
BATJ作为程序员最向往的大厂,但是由于门槛太高导致很多人不能梦想成真,所以只能增强自身技能才能敲开大门。以下是多位跻身大厂的程序员总结的面试真题,希望能帮到大家。 一、Redis专题 1.什么是Redis? 答:Remote Dictionary Server(Redis)是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。 它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。 2.Redis的特点什么是? 支持持久化操作,可以进行aof及rdb数据持久化到磁盘,从而进行数据备份或数据恢复等操作,较好的防止数据丢失的手段。 支持通过Replication进行数据复制,通过master-slave机制,可以实时进行数据的同步复制,支持多级复制和增量复制,master-slave机制是Redis进行HA的重要手段。 单进程请求,所有命令串行执行,并发情况下不需要考虑数据一致性问题。 支持多种数据结构,如 string(字符串)、 list(双向链表)、dict(hash表)、set(集合)、zset(排序set)、hyperloglog(基数估算) 3.Redis数据类型有哪些?

Redis事务与持久化

余生颓废 提交于 2020-01-17 01:15:53
1. 事务描述 (1)什么是事务 事务,就是把一堆事情绑在一起,按顺序的执行,都成功了才算完成,否则恢复之前的样子 事务必须服从ACID原则,ACID原则分别是原子性(atomicity)、一致性(consistency)、隔离性(isolation)和持久性(durability) 原子性:操作这些指令时,要么全部执行成功,要么全部不执行。只要其中一个指令执行失败,所有的指令都执行失败,数据进行回滚,回到执行指令前的数据状态 一致性:事务的执行使数据从一个状态转换为另一个状态,但是对于整个数据的完整性保持稳定 隔离性:在该事务执行的过程中,无论发生的任何数据的改变都应该只存在于该事务之中,对外界不存在影响,只有在事务确认提交之后们才会显示该事务对数据的改变,其他事务才能获取到这些改变后的数据 持久性:当事务正确完成后,它对于数据的改变是永久性的    (2)什么是事务 第一类丢失更新:撤销一个事务时,把其他事务已提交的更新数据覆盖 脏读:一个事务读取到另一个事务未提交的更新数据 幻读:一个事务执行两次查询,第二次结果集包含第一次中没有或某些行已经被删除的数据,造成两次结果不一致,只是另一个事务在这两次查询中间插入或删除了数据造成的 不可重复读:一个事务两次读取同一行的数据,结果得到不同状态的结果,中间正好另一个事务更新了该数据,两次结果相异,不可被信任 第二类丢失更新