Redis是什么?

官方介绍:

Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。 Redis 内置了 复制(replication),LUA脚本(Lua scripting), LRU缓存(LRU eviction),事务(transactions) 和不同级别的 磁盘持久化(persistence), 并通过 Redis哨兵(Sentinel)和集群自动 分区(Cluster)提供高可用性(high availability)。

一句话总结:Redis是一个支持多种类型的内存数据库,它可以实现分布式高可用.

BSD许可:是加州大学推出的开源协议,使用软件必须原作者许可证。

数据库:是按照数据结构来组织,存储和管理数据的仓库。

字符串:比如 "hello world"就是一个字符串

散列:比如e10adc3949ba59abbe56e057f20f883e就是根据MD5进行加密得到的哈希值。

列表:比如List<String> list=new ArrayList<String>();这就是一个列表。

集合:比如Set<String> list=new HashSet<String>();这就是一个集合

有序集合:比如SortedSet<String> sortedSet=new TreeSet<String>();

关于ArrayList,HastSet,SortedSet的区别,我写了个Demo,参考: https://www.cnblogs.com/shuai7boy/p/12467318.html

复制:指的是主从复制。

LUA脚本:是采用C语言编写的用来扩展应用的一种脚本。

LRU缓存:是一个选择最近很少使用的页面进行淘汰的算法。

磁盘持久化:将内存中的 数据持久化到磁盘。

哨兵:监控服务器运行情况,当检测到某台服务器长时间没回应,则让备份服务器去替代它。

自动分区:把数据自动分发到多台服务器。

高可用:一台服务器挂掉,可以有备份服务器来顶上去。

集群是什么?

让多台电脑处理同一个逻辑就叫做集群,一起办大事哈哈哈~

集群有几个术语需要了解下:

主从架构:

主备架构:

按槽位取模:

无主模式:

脑裂:

分布式是什么?

把一个逻辑进行拆分,分发到不同机器上执行叫做分布式,分担你点任务哈哈哈~

比如上面讲到的按槽位取模就属于分布式,这个是分布式存储。另外我们玩的英雄联盟,你的大招,需要的皮肤,播放的音效就有可能是多台机器提供的,这个就分担了计算能力。 包括我们知道的 阿法狗下围棋,也是一个集群一起运算的,一台机器再牛逼,也赶不上一群服务器,人多力量大~

Redis集群架构

Redis Sentinel(Redis 哨兵)为Redis提供高可用性。实际上,这意味着使用Sentinel可以创建Redis部署,该部署可以在没有人工干预的情况下抵抗某些类型的故障。

Redis Sentinel还提供其他附带任务,例如监视,通知,并充当客户端的配置提供程序。

这是宏观上Sentinel功能的完整列表(即,大图):

  • 监控。Sentinel会不断检查您的主实例和副本实例是否按预期工作。
  • 通知。Sentinel可以通过API通知系统管理员或其他计算机程序,其中一个受监视的Redis实例出了问题。
  • 自动故障转移。如果主服务器未按预期工作,则Sentinel可以启动故障转移过程,在该过程中将副本升级为主服务器,将其他附加副本重新配置为使用新的主服务器,并通知使用Redis服务器的应用程序要使用的新地址。连接时。
  • 配置提供程序。Sentinel充当客户端服务发现的授权来源:客户端连接到Sentinels,以询问负责给定服务的当前Redis主服务器的地址。如果发生故障转移,Sentinels将报告新地址。

这是一个非常简单的设置,其优点是易于调整以提高安全性。它基于三个框,每个框同时运行Redis进程和Sentinel进程。

       +----+
| M1 |
| S1 |
+----+
|
+----+ | +----+
| R2 |----+----| R3 |
| S2 | | S3 |
+----+ +----+

如果主M1发生故障,则S2和S3将就该故障达成协议,并能够授权故障转移,从而使客户端能够继续。

在每个Sentinel设置中,由于Redis使用异步复制,因此始终存在丢失某些写入的风险,因为给定的已确认写入可能无法到达被提升为主服务的副本。但是,在上述设置中,由于客户端被旧的主服务器分区,因此存在较高的风险,如下图所示:

         +----+
| M1 |
| S1 | <- C1 (writes will be lost)
+----+
|
/
/
+------+ | +----+
| [M2] |----+----| R3 |
| S2 | | S3 |
+------+ +----+

Redis持久化

首先持久化什么意思?持久化就是使用一定策略记录内存中有什么。

为什么会有持久化?因为Redis操作的数据一般都是放在缓存的,但是为了保证服务器宕机重启数据不丢失,采用了一定策略保存数据,也叫持久化。

Redis提供了两种持久化方式,一种是RDB,一种是AOF。

RDB是根据你设定的固定时间点或者多少秒执行依次来持久化数据,并且新的持久化文件会覆盖掉老的文件。文件名默认是dump.rdb。

AOF是默认每秒记录你做了哪些操作,这个相当于一个日志记录,默认日志名是appendonly.aof。

等重启的时候会根据dump.db或者appendonly.aof将数据恢复到内存。

上面是我针对集群分布式和Redis的一些理解,具体操作可以参考Redis官网

另外推荐一篇我认为不错的博客

系列传送门

入门大数据---Redis集群分布式学习的更多相关文章

  1. 大数据Hadoop-Spark集群部署知识总结(一)

    大数据Hadoop-Spark集群部署知识总结 一.启动/关闭 hadoop myhadoop.sh start/stop 分步启动: 第一步:在hadoop102主机上 sbin/start-dfs ...

  2. 王雅超的学习笔记-大数据hadoop集群部署(十)

    Spark集群安装部署

  3. 大数据——Hadoop集群坏境CentOS安装

    前言 前面我们主要分析了搭建Hadoop集群所需要准备的内容和一些提前规划好的项,本篇我们主要来分析如何安装CentOS操作系统,以及一些基础的设置,闲言少叙,我们进入本篇的正题. 技术准备 VMwa ...

  4. [转]大数据hadoop集群硬件选择

      问题导读 1.哪些情况会遇到io受限制? 2.哪些情况会遇到cpu受限制? 3.如何选择机器配置类型? 4.为数据节点/任务追踪器提供的推荐哪些规格? 随着Apache Hadoop的起步,云客户 ...

  5. 大数据 -- Hadoop集群环境搭建

    首先我们来认识一下HDFS, HDFS(Hadoop Distributed File System )Hadoop分布式文件系统.它其实是将一个大文件分成若干块保存在不同服务器的多个节点中.通过联网 ...

  6. 部署开启了Kerberos身份验证的大数据平台集群外客户端

    转载请注明出处 :http://www.cnblogs.com/xiaodf/ 本文档主要用于说明,如何在集群外节点上,部署大数据平台的客户端,此大数据平台已经开启了Kerberos身份验证.通过客户 ...

  7. 一台虚拟机,基于docker搭建大数据HDP集群

    前言 好多人问我,这种基于大数据平台的xxxx的毕业设计要怎么做.这个可以参考之前写得关于我大数据毕业设计的文章.这篇文章是将对之前的毕设进行优化. 个人觉得可以分为两个部分.第一个部分就是基础的平台 ...

  8. 大数据-HDFS 集群搭建的配置文件

    1.HDFS简单版集群搭建相关配置文件 1.core-site.xml文件 <property> <name>fs.defaultFS</name> <val ...

  9. 大数据 --> Kafka集群搭建

    Kafka集群搭建 下面是以三台机器搭建为例,(扩展到4台以上一样,修改下配置文件即可) 1.下载kafka http://apache.fayea.com/kafka/0.9.0.1/ ,拷贝到三台 ...

随机推荐

  1. 【Storm】安装教程

    1.下载tar.gz包 2.上传解压,tar -zxvf 包 -C 路径 3.修改conf/storm.yaml storm.zookeeper.servers: - "bigboss1&q ...

  2. Java实现 LeetCode 507 完美数

    507. 完美数 对于一个 正整数,如果它和除了它自身以外的所有正因子之和相等,我们称它为"完美数". 给定一个 整数 n, 如果他是完美数,返回 True,否则返回 False ...

  3. Java实现 蓝桥杯VIP 算法训练 确定元音字母位置

    算法训练 确定元音字母位置 时间限制:1.0s 内存限制:512.0MB 输入一个字符串,编写程序输出该字符串中元音字母的首次出现位置,如果没有元音字母输出0.英语元音字母只有'a'.'e'.'i'. ...

  4. Java实现 LeetCode 61 旋转链表

    61. 旋转链表 给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数. 示例 1: 输入: 1->2->3->4->5->NULL, k = ...

  5. Java实现 蓝桥杯 算法提高 道路和航路

    问题描述 农夫约翰正在针对一个新区域的牛奶配送合同进行研究.他打算分发牛奶到T个城镇(标号为1-T),这些城镇通过R条标号为(1-R)的道路和P条标号为(1-P)的航路相连. 每一条公路i或者航路i表 ...

  6. java实现第七届蓝桥杯平方圈怪

    平方圈怪 题目描述 如果把一个正整数的每一位都平方后再求和,得到一个新的正整数. 对新产生的正整数再做同样的处理. 如此一来,你会发现,不管开始取的是什么数字, 最终如果不是落入1,就是落入同一个循环 ...

  7. CDN百科第三讲 | 如果用了云服务器,还需要做CDN加速吗?

    在全站上云的背景下,云计算已经不仅仅是大型互联网公司的独享概念,正在被更多的传统企业.中小企业甚至个人站长所采用.在众多云计算服务中,最常见两个产品就是云服务器和CDN,今天的CDN百科第三讲,就给大 ...

  8. linux系统判断内存是否达到瓶颈的小技巧

    1.linux下最常用的系统状态监控工具top 工具,可以使用top -c 来进行查看当前内存的占用情况 free 为内存的剩余状态,当前为3.8G的空闲内存,总的物理内存是8G,按键 shift+m ...

  9. 厉害了!除了find命令,还有这么多文件查找命令,高手必备!

    大家好,我是良许. 在系统里查找文件,是所有工程师都必备的技能(不管你用的是 Windows .Linux.还是 MacOS 系统).对于 Linux 操作系统,单单一个 find 命令就可以完成非常 ...

  10. yii2.0数据库操作

    User::find()->all(); 此方法返回所有数据: User::findOne($id); 此方法返回 主键 id=1 的一条数据(举个例子): User::find()->w ...