rdb

Redis哨兵、复制、集群的设计原理,以及区别

痞子三分冷 提交于 2019-12-09 12:49:13
谈到Redis服务器的高可用,如何保证备份的机器是原始服务器的完整备份呢?这时候就需要哨兵和复制。 **哨兵(Sentinel):**可以管理多个Redis服务器,它提供了监控,提醒以及自动的故障转移的功能。 **复制(Replication):**则是负责让一个Redis服务器可以配备多个备份的服务器。 Redis正是利用这两个功能来保证Redis的高可用。 哨兵(sentinal) 哨兵是Redis集群架构中非常重要的一个组件,哨兵的出现主要是解决了主从复制出现故障时需要人为干预的问题。 1.Redis哨兵主要功能 **(1)集群监控:**负责监控Redis master和slave进程是否正常工作 **(2)消息通知:**如果某个Redis实例有故障,那么哨兵负责发送消息作为报警通知给管理员 **(3)故障转移:**如果master node挂掉了,会自动转移到slave node上 **(4)配置中心:**如果故障转移发生了,通知client客户端新的master地址 2.Redis哨兵的高可用 原理:当主节点出现故障时,由Redis Sentinel自动完成故障发现和转移,并通知应用方,实现高可用性。 哨兵机制建立了多个哨兵节点(进程),共同监控数据节点的运行状况。 同时哨兵节点之间也互相通信,交换对主从节点的监控状况。 每隔1秒每个哨兵会向整个集群:Master主服务器

Redis哨兵、复制、集群的设计原理,以及区别

核能气质少年 提交于 2019-12-07 19:31:26
谈到Redis服务器的高可用,如何保证备份的机器是原始服务器的完整备份呢?这时候就需要哨兵和复制。 **哨兵(Sentinel):**可以管理多个Redis服务器,它提供了监控,提醒以及自动的故障转移的功能。 **复制(Replication):**则是负责让一个Redis服务器可以配备多个备份的服务器。 Redis正是利用这两个功能来保证Redis的高可用。 哨兵(sentinal) 哨兵是Redis集群架构中非常重要的一个组件,哨兵的出现主要是解决了主从复制出现故障时需要人为干预的问题。 1.Redis哨兵主要功能 **(1)集群监控:**负责监控Redis master和slave进程是否正常工作 **(2)消息通知:**如果某个Redis实例有故障,那么哨兵负责发送消息作为报警通知给管理员 **(3)故障转移:**如果master node挂掉了,会自动转移到slave node上 **(4)配置中心:**如果故障转移发生了,通知client客户端新的master地址 2.Redis哨兵的高可用 原理:当主节点出现故障时,由Redis Sentinel自动完成故障发现和转移,并通知应用方,实现高可用性。 哨兵机制建立了多个哨兵节点(进程),共同监控数据节点的运行状况。 同时哨兵节点之间也互相通信,交换对主从节点的监控状况。 每隔1秒每个哨兵会向整个集群:Master主服务器

详解:Redis主从技术的应用

半腔热情 提交于 2019-12-06 06:02:53
Redis复制 在生产环境中,Redis通过持久化功能(RDB和AOF技术)保证了即使在服务器重启的情况下也不会损失(或少量损失)数据。但是由于数据是存储在一台服务器上的,如果这台服务器出现硬盘故障等问题(生产环境中多次遇到),也会导致数据丢失,为了避免单点故障,通常的做法是将数据库复制多个副本以部署在不同的服务器上,这样即使有一台服务器出现故障,其他服务器依然可以以最快的速度提供服务。为此,Redis提供了复制(replication)功能,可以实现当一台数据库中的数据更新后,自动将更新的数据同步到其他数据库上。 在复制的概念中,数据库分为两类,一类是主数据库(master),另一类是从数据库(slave)。主数据库可以进行读写操作,当写操作导致数据变化时自动将数据同步给从数据库。而从数据库一般是只读的,并接受主数据库同步过来的数据。一个主数据库可以拥有多个从数据库。 Redis复制很简单易用,它通过配置允许slave Redis Servers或者Master Servers的复制品。接下来有几个关于redis复制的非常重要特性: 一个Master可以有多个Slaves。 Slaves能通过和其他slave的链接,除了可以接受同一个master下面slaves的链接以外,还可以接受同一个结构图中的其他slaves的链接。 redis复制是在master段是非阻塞的

mac系统安装redis

断了今生、忘了曾经 提交于 2019-12-05 22:13:35
1.下载 打开官网: https://redis.io/ Download---Stable---Download3.2.8,下载最新稳定版,这里是3.2.8 2.安装 下载完成后,打开命令行工具,执行解压命令 tar zxvf redis-3.2.8.tar.gz 将解压后文件夹放到/usr/local mv redis-3.2.8 /usr/local/ 切换到相应目录 cd /usr/local/redis-3.2.8/ 编译测试 sudo make test 编译安装 sudo make install 启动Redis redis-server 3.配置 在redis目录下建立bin,etc,db三个目录 sudo mkdir /usr/local/redis-3.2.8/bin sudo mkdir /usr/local/redis-3.2.8/etc sudo mkdir /usr/local/redis-3.2.8/db 把/usr/local/redis/src目录下的mkreleasehdr.sh,redis-benchmark, redis-check-rdb, redis-cli, redis-server拷贝到bin目录 cp /usr/local/redis-3.2.8/src/mkreleasehdr.sh . cp /usr/local/redis-3

Redis面试题详解:哨兵+复制+事务+集群+持久化等

狂风中的少年 提交于 2019-12-05 19:52:13
Redis主要有哪些功能? 1.哨兵(Sentinel)和复制(Replication) Redis服务器毫无征兆的罢工是个麻烦事,如何保证备份的机器是原始服务器的完整备份呢?这时候就需要哨兵和复制。 Sentinel可以管理多个Redis服务器,它提供了监控,提醒以及自动的故障转移的功能,Replication则是负责让一个Redis服务器可以配备多个备份的服务器。 Redis也是利用这两个功能来保证Redis的高可用的 2.事务 很多情况下我们需要一次执行不止一个命令,而且需要其同时成功或者失败。redis对事务的支持也是源自于这部分需求,即支持一次性按顺序执行多个命令的能力,并保证其原子性。 3.LUA脚本 在事务的基础上,如果我们需要在服务端一次性的执行更复杂的操作(包含一些逻辑判断),则lua就可以排上用场了 4.持久化 redis的持久化指的是redis会把内存的中的数据写入到硬盘中,在redis重新启动的时候加载这些数据,从而最大限度的降低缓存丢失带来的影响。 5.集群(Cluster) 单台服务器资源的总是有上限的,CPU资源和IO资源我们可以通过主从复制,进行读写分离,把一部分CPU和IO的压力转移到从服务器上,这也有点类似mysql数据库的主从同步。 在Redis官方的分布式方案出来之前,有twemproxy和codis两种方案

Redis持久化存储详解(一)

家住魔仙堡 提交于 2019-12-05 19:25:33
为什么要做持久化存储? 持久化存储是将 Redis 存储在内存中的数据存储在硬盘中,实现数据的永久保存。我们都知道 Redis 是一个基于内存的 nosql 数据库,内存存储很容易造成数据的丢失,因为当服务器关机等一些异常情况都会导致存储在内存中的数据丢失。 持久化存储分类 在 Redis 中,持久化存储分为两种。一种是 aof 日志追加的方式,另外一种是 rdb 数据快照的方式。 RDB持久化存储 什么是RDB持久化存储 RDB持久化存储即是将redis存在内存中的数据以快照的形式保存在本地磁盘中。 .RDB持久化存储分为自动备份和手动备份 1.手动备份通过 save 命令和 bgsave 命令。save是同步阻塞,而 bgsave 是非阻塞(阻塞实际发生在 fork 的子进程中)。因此,在我们实际过程中大多是使用bgsave命令实现备份. redis> SAVE OK redis> BGSAVE Background saving started 2.自动备份 a.修改配置项 save m n即表示在 m 秒内执行了 n 次命令则进行备份. b.当Redis 从服务器项主服务器发送复制请求时,主服务器则会使用 bgsave命令生成 rbd 文件,然后传输给从服务器. c.当执行 debug reload 命令时也会使用 save 命令生成rdb文件. d.当使用

Redis持久化

隐身守侯 提交于 2019-12-05 14:27:34
> 为什么要做持久化存储? 持久化存储是将 Redis 存储在内存中的数据存储在硬盘中,实现数据的永久保存。我们都知道 Redis 是一个基于内存的 nosql 数据库,内存存储很容易造成数据的丢失,因为当服务器关机等一些异常情况都会导致存储在内存中的数据丢失。 > 持久化存储分类 在 Redis 中,持久化存储分为两种。一种是 aof 日志追加的方式,另外一种是 rdb 数据快照的方式。 > RDB 持久化存储 什么是RDB持久化存储 RDB 持久化存储即是将 redis 存在内存中的数据以快照的形式保存在本地磁盘中。 .RDB持久化存储分为自动备份和手动备份 1.手动备份通过 save 命令和 bgsave 命令。save 是同步阻塞,而 bgsave 是非阻塞(阻塞实际发生在 fork 的子进程中)。因此,在我们实际过程中大多是使用 bgsave 命令实现备份. redis> SAVE OK redis> BGSAVE Background saving started 2.自动备份 a.修改配置项 save m n 即表示在 m 秒内执行了 n 次命令则进行备份. b.当 Redis 从服务器项主服务器发送复制请求时,主服务器则会使用 bgsave 命令生成 rbd 文件,然后传输给从服务器. c.当执行 debug reload 命令时也会使用 save 命令生成 rdb

如何设计一个本地缓存

耗尽温柔 提交于 2019-12-05 09:55:35
前言 最近在看Mybatis的源码,刚好看到缓存这一块,Mybatis提供了一级缓存和二级缓存;一级缓存相对来说比较简单,功能比较齐全的是二级缓存,基本上满足了一个缓存该有的功能;当然如果拿来和专门的缓存框架如ehcache来对比可能稍有差距;本文我们将来整理一下实现一个本地缓存都应该需要考虑哪些东西。 考虑点 考虑点主要在数据用何种方式存储,能存储多少数据,多余的数据如何处理等几个点,下面我们来详细的介绍每个考虑点,以及该如何去实现; 1.数据结构 首要考虑的就是数据该如何存储,用什么数据结构存储,最简单的就直接用Map来存储数据;或者复杂的如redis一样提供了多种数据类型哈希,列表,集合,有序集合等,底层使用了双端链表,压缩列表,集合,跳跃表等数据结构; 2.对象上限 因为是本地缓存,内存有上限,所以一般都会指定缓存对象的数量比如1024,当达到某个上限后需要有某种策略去删除多余的数据; 3.清除策略 上面说到当达到对象上限之后需要有清除策略,常见的比如有LRU(最近最少使用)、FIFO(先进先出)、LFU(最近最不常用)、SOFT(软引用)、WEAK(弱引用)等策略; 4.过期时间 除了使用清除策略,一般本地缓存也会有一个过期时间设置,比如redis可以给每个key设置一个过期时间,这样当达到过期时间之后直接删除,采用清除策略+过期时间双重保证; 5.线程安全

Redis哨兵、复制、集群的设计原理,以及区别

╄→гoц情女王★ 提交于 2019-12-05 09:07:33
谈到Redis服务器的高可用,如何保证备份的机器是原始服务器的完整备份呢?这时候就需要哨兵和复制。 **哨兵(Sentinel):**可以管理多个Redis服务器,它提供了监控,提醒以及自动的故障转移的功能。 **复制(Replication):**则是负责让一个Redis服务器可以配备多个备份的服务器。 Redis正是利用这两个功能来保证Redis的高可用。 哨兵(sentinal) 哨兵是Redis集群架构中非常重要的一个组件,哨兵的出现主要是解决了主从复制出现故障时需要人为干预的问题。 1.Redis哨兵主要功能 **(1)集群监控:**负责监控Redis master和slave进程是否正常工作 **(2)消息通知:**如果某个Redis实例有故障,那么哨兵负责发送消息作为报警通知给管理员 **(3)故障转移:**如果master node挂掉了,会自动转移到slave node上 **(4)配置中心:**如果故障转移发生了,通知client客户端新的master地址 2.Redis哨兵的高可用 原理:当主节点出现故障时,由Redis Sentinel自动完成故障发现和转移,并通知应用方,实现高可用性。 哨兵机制建立了多个哨兵节点(进程),共同监控数据节点的运行状况。 同时哨兵节点之间也互相通信,交换对主从节点的监控状况。 每隔1秒每个哨兵会向整个集群:Master主服务器

抢头条offer机会,抖音面试题:网络编程Socket+GC Roots+数据同步+Redis等

落花浮王杯 提交于 2019-12-05 08:26:05
又到抢收好offer的季节,最近今日头条寒冬下逆势热招,放出大量offer,base北京、成都都有,据说福利还很不错,base成都有租房补贴、免费三餐、带薪年假等。 在一家高速发展的互联网公司工作,除了工作稳定、薪水可观、福利丰厚,更难能可贵的是,可能得到更多的工作挑战与晋级机会。 对于想要进入一线互联网工作的Java工程师们来说,如果面试前没有准备充分,浪费机会就太遗憾了。 分享近期参加头条抖音面试的童鞋真题及面经、BAT等一线大厂必考题及答案,助力大家金三银四拿好offer。 一面(1小时) hashmap,怎么扩容,怎么处理数据冲突?怎么高效率的实现数据迁移? Linux的共享内存如何实现,大概说了一下。 socket网络编程,说一下TCP的三次握手和四次挥手 同步IO和异步IO的区别? Java GC机制?GC Roots有哪些? 红黑树讲一下,五个特性,插入删除操作,时间复杂度? 快排的时间复杂度,最坏情况呢,最好情况呢,堆排序的时间复杂度呢,建堆的复杂度是多少 二面(1小时) 自我介绍,主要讲讲做了什么和擅长什么 设计模式了解哪些? AtomicInteger怎么实现原子修改的? ConcurrentHashMap 在Java7和Java8中的区别?为什么Java8并发效率更好?什么情况下用HashMap,什么情况用ConcurrentHashMap?