数据持久化

Redis面试题汇总一

社会主义新天地 提交于 2019-12-14 04:33:27
1、什么是Redis redis本质是一个key-value类型的内存数据库,整个数据库统统加载在内存中进行操作,定期通过异步操作把数据库数据flush到硬盘上保存。因为是纯内存操作,Redis的性能非常出色,每秒可以处理超过 10万次读写操作,是已知性能最快的Key-Value DB。除此之外,redis还支持多种数据结构(如list,string,set,zset,hash)。 2、Redis为什么这么快? ①、redis完全基于内存 ②、使用单线程,避免了不必要的上下文切换和竞争条件 ③、使用了I/O多路复用模型 关于redis I/O多路复用解释如下图: 这里“多路”指的是多个网络连接,“复用”指的是复用同一个线程。采用多路 I/O 复用技术可以让单个线程高效的处理多个连接请求(尽量减少网络 IO 的时间消耗),且 Redis 在内存中操作数据的速度非常快,也就是说内存内的操作不会成为影响Redis性能的瓶颈,主要由以上几点造就了 Redis 具有很高的吞吐量。 3、为什么Redis是单线程的? 对于Redis的单线程解释:单线程指的是网络请求模块使用了一个线程(所以不需考虑并发安全性),即一个线程处理所有网络请求,其他模块仍用了多个线程。 官方FAQ表示,因为Redis是基于内存的操作,CPU不是Redis的瓶颈,Redis的瓶颈最有可能是机器内存的大小或者网络带宽

spark调优(二):资源调优

穿精又带淫゛_ 提交于 2019-12-14 00:47:27
转发学习自美团技术团队: https://tech.meituan.com 建议继续阅读之前先对这篇文章的内容有一定了解: Apache Spark 内存管理详解 推荐阅读: spark调优(一):开发调优 资源调优概述 在开发完Spark作业之后,就该为作业配置合适的资源了。Spark的资源参数,基本都可以在spark-submit命令中作为参数设置。很多Spark初学者,通常不知道该设置哪些必要的参数,以及如何设置这些参数,最后就只能胡乱设置,甚至压根儿不设置。资源参数设置的不合理,可能会导致没有充分利用集群资源,作业运行会极其缓慢;或者设置的资源过大,队列没有足够的资源来提供,进而导致各种异常。总之,无论是哪种情况,都会导致Spark作业的运行效率低下,甚至根本无法运行。因此我们必须对Spark作业的资源使用原理有一个清晰的认识,并知道在Spark作业运行过程中,有哪些资源参数是可以设置的,以及如何设置合适的参数值。 1、Spark作业基本运行原理 详细原理见上图。我们使用spark-submit提交一个Spark作业之后,这个作业就会启动一个对应的Driver进程。根据你使用的部署模式(deploy-mode)不同,Driver进程可能在本地启动,也可能在集群中某个工作节点上启动。Driver进程本身会根据我们设置的参数,占有一定数量的内存和CPU core

spark调优(一):开发调优

喜你入骨 提交于 2019-12-13 02:04:05
转发学习自美团技术团队: https://tech.meituan.com 文章总体概览 优化开发原则: 1、避免创建重复rdd 2、尽可能复用rdd:避免重复计算 3、合适的持久化策略: memory_only memory_only_ser memory_and_disk等 4、尽量避免shuffle算子: 如reduceByKey、join、distinct等,主要为了减少磁盘、网络IO。在 join操作中 使用小表广播变量可以避免shuffle。 5、map端预聚合: 在无法避免shuffle操作的情况下采用map端预聚合,当然前提是不影响业务逻辑。 如使用reduceByKey、aggregateByKey替代groupByKey。 6、使用高性能算子: 如mapPartitions替代map、foreachPartiton替代foreach(特别是在数据库操作中)、filter之后进行coalesce操作缩减分区、使用reparationAndSortWithinPartition替代reparation和sort操作。 7、广播大变量 8、使用kyro序列化: 比默认的java序列化性能高10倍左右,rdd使用kyro序列化需要进行注册、但在使用DF、DS结构时默认会使用kyro序列化。 9、优化数据结构 正文: 1、前言 在大数据计算领域

redis持久化

泪湿孤枕 提交于 2019-12-11 20:22:35
1.redis 持久化机制 很多时候我们需要持久化数据也就是将内存中的数据写入到硬盘里面,大部分原因是为了之后重用数据(比如重启机器、机器故障之后回复数据),或者是为了防止系统故障而将数据备份到一个远程位置。Redis 支持两种不同的持久化操作。Redis 的一种持久化方式叫快照(snapshotting,RDB),另一种方式是只追加文件(append-only file,AOF). 1.1 快照(snapshotting )持久化(RDB ) Redis 可以通过创建快照来获得存储在内存里面的数据在某个时间点上的副本。Redis 创建快照之后,可以对快照进行备份,可以将快照复制到其他服务器从而创建具有相同数据的服务器副本(Redis 主从结构,主要用来提高 Redis 性能),还可以将快照留在原地以便重启服务器的时候使用。 RDB 持久化是 Redis 默认采用的持久化方式,在 redis.conf 配置文件中默认有此下配置: 默认每隔 5 分钟创建一个快照副本,这种方式占用空间大,而且会丢失间隔时间 5 分钟之内的数据,但是他适合做备份,恢复时,可以根据需要恢复任意间隔时间点的数据 1.2 AOF (append-only file )持久化 与 RDB 持久化相比,AOF 持久化 的实时性更好,因此已成为主流的持久化方案。默认情况下 Redis 没有开启 AOF(append

redis面试题

本秂侑毒 提交于 2019-12-11 14:55:57
1、使用redis有哪些好处? 速度快,因为数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1) 支持丰富数据类型,支持string,list,set,sorted set,hash 支持事务,操作都是原子性,所谓的原子性就是对数据的更改要么全部执行,要么全部不执行 丰富的特性:可用于缓存,消息,按key设置过期时间,过期后将会自动删除 2、redis相比memcached有哪些优势? memcached所有的值均是简单的字符串,redis作为其替代者,支持更为丰富的数据类型 redis的速度比memcached快很多 redis可以持久化其数据 3、redis常见性能问题和解决方案: Master最好不要做任何持久化工作,如RDB内存快照和AOF日志文件 如果数据比较重要,某个Slave开启AOF备份数据,策略设置为每秒同步一次 为了主从复制的速度和连接的稳定性,Master和Slave最好在同一个局域网内 尽量避免在压力很大的主库上增加从库 主从复制不要用图状结构,用单向链表结构更为稳定,即:Master <- Slave1 <- Slave2 <- Slave3... 这样的结构方便解决单点故障问题,实现Slave对Master的替换。如果Master挂了,可以立刻启用Slave1做Master,其他不变。 4、redis

Redis面试

烂漫一生 提交于 2019-12-11 13:50:16
1、redis简介 简单来说 redis 就是一个数据库,不过与传统数据库不同的是 redis 的数据是存在内存中的,所以读写速度非常快,因此 redis 被广泛应用于缓存方向。另外,redis 也经常用来做分布式锁。redis 提供了多种数据类型来支持不同的业务场景。除此之外,redis 支持事务 、持久化、LUA脚本、LRU驱动事件、多种集群方案 2、为什么要用 redis/为什么要用缓存 主要从“高性能”和“高并发”这两点来看待这个问题。 高性能: 假如用户第一次访问数据库中的某些数据。这个过程会比较慢,因为是从硬盘上读取的。将该用户访问的数据存在缓存中,这样下一次再访问这些数据的时候就可以直接从缓存中获取了。操作缓存就是直接操作内存,所以速度相当快。如果数据库中的对应数据改变的之后,同步改变缓存中相应的数据即可! 高并发: redis 和 memcached 的区别 redis支持更丰富的数据类型(支持更复杂的应用场景):Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,zset,hash等数据结构的存储。memcache支持简单的数据类型,String。 Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用,而Memecache把数据全部存在内存之中。 集群模式:memcached没有原生的集群模式

50-哨兵机制和持久化

孤者浪人 提交于 2019-12-11 08:40:51
目录 1、什么是哨兵机制 2、哨兵模式修改配置 3、什么是Redis持久化 4、RDB持久化 5、AOF持久化 6、AOF与ROB区别 1、什么是哨兵机制 Redis的哨兵(sentinel)系统用于管理多个Redis服务器,该系统执行以下三个任务: 1.1、监控(Monitoring):哨兵(sentinel)会不断地检查你的Master和Slave是否运作正常 1.2、提醒(Notification):当被监控的某个Redis出现问题时,哨兵(sentinel) 可以通过 API 向管理员或者其他应用程序发送通知。 1.3、转载自动故障迁移(Automatic failover):当一个Master不能正常工作时,哨兵(sentinel) 会开始一次自动故障迁移操作,它会将失效Master的其中一个Slave升级为新的Master, 并让失效Master的其他Slave改为复制新的Master; 当客户端试图连接失效的Master时,集群也会向客户端返回新Master的地址,使得集群可以使用Master代替失效Master。 1.4、哨兵(sentinel) 是一个分布式系统,你可以在一个架构中运行多个哨兵(sentinel) 进程,这些进程使用留言协议(gossipprotocols)来接收关于Master是否下线的信息,并使用投票协议(agreement protocols

NameNode和SecondaryNameNode 的关系 (重点)

强颜欢笑 提交于 2019-12-11 07:11:49
Fsimage :元数据信息的备份(持久化),会加载在内存中 edits :Edits文件帮助记录文件增加和更新操作,提高效率 https://hadoop.apache.org/docs/r2.7.7/hadoop-project-dist/hadoop-hdfs/HdfsEditsViewer.html NameNode在启动的时候需要加载edits(日志文件)和fsimage(文件) 所以在第一启动namenode时候需要格式化namenode 当用户上传文件或者进行其他文件的操作的时候,会将数据写入至edits文件中,这样edits和fsimage加起来的数据永远是最新的。 如果此时用户一直进行操作,会导致edits文件过于庞大,这就导致了在下次启动的时候(因为启动时需要加载两个文件),时间会相当的长。 为了解决这个问题,出现了SecondaryNameNode,将当前NameNode的edits和fsimage文件加载过来,将文件持久化到fsimage之后,将新的fsimage上传至NameNode。 但是这个时候还会出现另外一个问题,当SecondaryNamenode进行文件持久化的时候,用户可能在这个期间需要进行操作,直接将数据写入edits日志文件 话会导致数据的紊乱,所以解决方案是将数据写入另外一个叫做edits_inprogress文件当中 值得注意的是

Redis配置与优化

折月煮酒 提交于 2019-12-11 02:21:32
Redis配置与优化 Redis简介 Redis基于内存运行并支持持久化 采用key-value(键值对)的存储形式 优点 具有极高的数据读写速度 支持丰富的数据类型 支持数据的持久化 原子性 支持数据备份 Redis和mem的差别 redis:支持持久化,不支持结构化 mem : 支持结构化,不支持持久化 Redis的安装部署 # 安装必要安装包 yum install gcc gcc - c + + - y # 挂载必要软件包 mount . cifs //192.168.100.3/mem /mnt #解压安装包 cd / mnt tar zxvf redis - 5.0 .7 . tar . gz - C / opt # 编译安装 cd / opt / redis - 5.0 .7 / make make PREFIX = / usr / local / redis / install #进入util目录,执行脚本 cd utils / . / install_server . sh # 执行后一路回车在这里添加/usr/local/redis/bin/redis-server一句 Please select the redis executable path [ ] / usr / local / redis / bin / redis - server # 创建命令连接

21道 Redis 常见面试题,必须掌握!

怎甘沉沦 提交于 2019-12-10 21:25:08
1.什么是redis? Redis 是一个基于内存的高性能key-value数据库。 2.Reids的特点 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适合的场景主要局限在较小数据量的高性能操作和运算上。 3.使用redis有哪些好处? 1.速度快,因为数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1)2.支持丰富数据类型,支持string,list