redis分布式

redis-主从复制(sentinel)

▼魔方 西西 提交于 2020-03-15 23:39:54
前言 redis的持久化功能在一定程度上保证了数据的安全性,即便时服务器宕机的情况下,也可以保证数据的丢失非常少,通常,为了避免服务的单点故障,会把数据复制到多个副本放在不同的服务器上,且这些拥有数据副本的服务器可以用于处理客户端的读请求,扩展整体的性能,下面将介绍redis的主从复制。 1,主从复制概述 redis的复制功能是支持多个服务器之间的数据同步。被复制的服务器称为主服务器(master),对服务器进行复制操作的为从服务器(slave),主服务器master可以进行读写操作,当发生写操作的时候自动将数据同步到从服务器,而从服务器一般是只读的,并接收master同步过来的数据,一个master可以有多个slave,而一个slave只能由一个master。 主从复制的过程: 1,从节点执行slaveof命令; 2,从节点只是保存了slavef命令中主节点的信息,并没有立即发起复制; 3,从节点内部的定时任务发现由主节点的信息,开始使用socket连接主节点; 4,连接建立成功后,发送ping命令,希望得到pong命令响应,否则会进行重连; 5,如果主节点设置了权限,那么就需要进行权限验证;如果验证失败,复制终止; 6,权限验证通过后,进行数据同步,这是耗时最长的操作,主节点将把所有的数据全部发送给从节点; 7,当主节点把当前的数据同步给从节点后,便完成了复制的建立流程

《【面试突击】— Redis篇》-- Redis的主从复制?哨兵机制?

我的梦境 提交于 2020-03-15 20:50:32
原文: 《【面试突击】— Redis篇》-- Redis的主从复制?哨兵机制? 能坚持别人不能坚持的,才能拥有别人未曾拥有的。 关注左上角 编程大道 公众号,让我们一同坚持心中所想,一起成长!! 《【面试突击】— Redis篇》-- Redis的主从复制?哨兵机制? 在这个系列里,我会整理一些面试题与大家分享,帮助年后和我一样想要在金三银四准备跳槽的同学。 我们一起巩固、突击面试官常问的一些面试题,加油!! 《【面试突击】— Redis篇》--Redis数据类型?适用于哪些场景? 《【面试突击】— Redis篇》--Redis的线程模型了解吗?为啥单线程效率还这么高? 面试官在问了上两次提到的问题之后,可能就会开始更加猛烈的攻势,一连串的Redis的知识点向你抛过来,你顶的住吗? 下面就面试经常问到的问题,以问答的方式分享给大家。 Redis如何保证高并发,高可用? 高并发: redis的单机吞吐量可以达到几万不是问题,如果想提高redis的读写能力,可以用redis的主从架构,redis天热支持一主多从的准备模式,单主负责写请求多从负责读请求,主从之间异步复制,把主的数据同步到从。 高可用: 首先利用redis的主从架构解决redis的单点故障导致的不可用,然后如果使用的是主从架构,那么只需要增加哨兵机制即可,就可以实现,redis主实例宕机,自动会进行主备切换

Redis分布式缓存&分布式锁

生来就可爱ヽ(ⅴ<●) 提交于 2020-03-15 11:51:31
1.背景 由于业务需求最近准备将系统中原有的memcached改造为Redis,实现多数据类型的分布式缓存。 2.分布式缓存: 3.集成改造 1) Pom依赖 vcsp-genericProfessionServer\pom.xml <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-pool2</artifactId> <version>2.4.2</version> </dependency> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-redis</artifactId> <version>1.7.10.RELEASE</version> </dependency> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.8.1</version> </dependency> View Code 2) application-*.properties #redis配置********************* spring.redis.hostName

Redis 集群(11)

混江龙づ霸主 提交于 2020-03-15 01:43:59
为什么需要集群? 1、性能 Redis本身的QPS已经很高了,但是如果在一些并发量非常高的情况下,性能还是会受到影响。这个时候我们希望有更多的Redis服务来完成工作。 2、扩展 第二个是出于存储的考虑。因为Redis所有的数据都放在内存中,如果数据量大,很容易受到硬件的限制。升级硬件收效和成本比太低,所以我们需要有一种横向扩展的方法。 3、可用性 第三个是可用性和安全的问题。如果只有一个Redis服务,一旦服务宕机,那么所有的客户端都无法访问,会对业务造成很大的影响。另一个,如果硬件发生故障,而单机的数据无法恢复的话,带来的影响也是灾难性的。 可用性、数据安全、性能都可以通过搭建多个Reids服务实现。其中有一个是主节点(master),可以有多个从节点(slave)。主从之间通过数据同步,存储完全相同的数据。如果主节点发生故障,则把某个从节点改成主节点,访问新的主节点。 Redis主从复制(replication) 主从复制配置 例如一主多从,100是主节点,在每个slave节点的redis.conf配置文件增加一行 slaveof 192.168.1.100 6379 //在主从切换的时候,这个配置会被重写成: #GeneratedbyCONFIGREWRITE replicaof 192.168.1.100 6379 或者在启动服务时通过参数指定master节点: .

分布式任务队列 1

别等时光非礼了梦想. 提交于 2020-03-14 01:42:32
Celery 是一个 基于python开发的分布式异步消息任务队列,通过它可以轻松的实现任务的异步处理, 如果你的业务场景中需要用到异步任务,就可以考虑使用celery, 举几个实例场景中可用的例子: 你想对100台机器执行一条批量命令,可能会花很长时间 ,但你不想让你的程序等着结果返回,而是给你返回 一个任务ID,你过一段时间只需要拿着这个任务id就可以拿到任务执行结果, 在任务执行ing进行时,你可以继续做其它的事情。 你想做一个定时任务,比如每天检测一下你们所有客户的资料,如果发现今天 是客户的生日,就给他发个短信祝福 Celery 在执行任务时需要通过一个消息中间件来接收和发送任务消息,以及存储任务结果, 一般使用rabbitMQ or Redis Celery有以下优点: 简单:一单熟悉了celery的工作流程后,配置和使用还是比较简单的 高可用:当任务执行失败或执行过程中发生连接中断,celery 会自动尝试重新执行任务 快速:一个单进程的celery每分钟可处理上百万个任务 灵活: 几乎celery的各个组件都可以被扩展及自定制 Celery基本工作流程图 Celery安装使用 Celery的默认broker是RabbitMQ, 仅需配置一行就可以 broker_url = 'amqp://guest:guest@localhost:5672//' rabbitMQ

Redis 介绍及安装

纵饮孤独 提交于 2020-03-12 20:43:12
Redis介绍 什么是Redis? Redis 是用C语言开发的一个开源的高性能键值对( key-value )内存数据库。 它提供了五种数据类型来存储值:字符串类型、散列类型、列表类型、集合类型、有序集合类型 它是一种 NoSQL 数据库。 什么是NoSQL? NoSQL ,即 Not-Only SQL (不仅仅是 SQL ),泛指非关系型的数据库。 什么是关系型数据库?数据结构是一种有行有列的数据库 NoSQL 数据库是为了解决高并发、高可用、高可扩展、大数据存储问题而产生的数据库解决方案。 NoSQL 可以作为关系型数据库的良好补充,但是不能替代关系型数据库。 NoSQL数据库分类 键值(Key-Value)存储数据库 相关产品: Tokyo Cabinet/Tyrant 、 Redis 、 Voldemort 、 Berkeley DB 典型应用: 内容缓存,主要用于处理大量数据的高访问负载。 数据模型: 一系列键值对 优势: 快速查询 劣势: 存储的数据缺少结构化 列存储数据库 相关产品: Cassandra , HBase , Riak 典型应用:分布式的文件系统 数据模型:以列簇式存储,将同一列数据存在一起 优势:查找速度快,可扩展性强,更容易进行分布式扩展 劣势:功能相对局限 文档型数据库 相关产品: CouchDB 、 MongoDB 典型应用: Web 应用(与

分布式爬虫

六月ゝ 毕业季﹏ 提交于 2020-03-11 13:03:44
# 分布式概念: 使用多台机器组成一个分布式的机群,在机群中运行同一组程序,进行联合数据的爬取。 # 原生scrapy无法实现分布式原因: - 原生的scrapy中的调度器不可以被共享 - 原生的scrapy的管道不可以被共享 # 使用scrapy实现分布式思路: - 为原生的scrapy框架提供共享的管道和调度器 - pip install scrapy_redis - 1. 创建工程: scrapy startproject projectname - 2. 爬虫文件: scrapy genspider -t crawl spidername www.baidu.com - 3. 修改爬虫文件: - 3.1 导包:from scrapy_redis.spiders import RedisCrawlSpider - 3.2 将当前爬虫类的父类进行修改RedisCrawlSpider - 3.3 allowed_domains,start_url注释掉,添加一个新属性redis_key='qn'(调度器 队列的 名称) - 3.4 指定redis_key = 'xxx', 即共享调度器队列名字 - 3.4 数据解析,将解析的数据封装到item中然后向管道提交 - 4. 配置文件的编写: - 4.1 指定管道: ITEM_PIPELINES = { 'scrapy_redis

redis 安装配置学习笔记

◇◆丶佛笑我妖孽 提交于 2020-03-11 08:56:57
redis 安装配置学习笔记 //wget http://download.redis.io/releases/redis-2.8.17.tar.gz 下载最新版本 wget http://download.redis.io/redis-stable.tar.gz 首先必须要有 gcc 与 make apt-get install gcc apt-get install make 1、解压 root@localhost:~# tar -xvf redis-stable.tar.gz 2、测试 root@localhost:~/redis-stable# ./runtest You need tcl 8.5 or newer in order to run the Redis test 提示需要安装tcl make完成后,在原src目录下,会生成出六个exe(可执行程序),服务端只需要redis-server.exe即可 3、运行redis 后台方式启动redis ./redis-server & 启动redis客户端链接 ./redis-cli 输入ping 返回pong 即为安装成功 扩展知识: redis-cli用法:redis-cli [OPTIONS] [cmd [arg [arg ...]]] -h <主机ip>,默认是127.0.0.1 -p <端口>,默认是6379

Redis

三世轮回 提交于 2020-03-10 05:56:43
Redis 安装Redis 持久化模式 官网地址: redis.io 中文版官网: redis.cn redis是一个开源的、遵循BSD协议的、基于内存的而且目前比较流行的键值数据库(key-value-database), 是一个非关系型数据库,也称为NoSQL数据库。由C语言开发。 redis 提供将内存通过网络远程共享的一种服务,提供类似功能的还memcache,但相比 memcache,redis 还提供了易扩展、高性能、具备数据持久性等功能。 Redis 在高并发、低延迟环境要求比较高的环境使用量非常广泛. 目前redis在DB-Engine月排行榜 https://db-engines.com/en/ranking 中一直比较靠前,而且一直是键值型存储类的首位 相对Rdis来说,redis和memcached的对比 :   1.支持数据的持久化:可以将内存中的数据保持在磁盘中,重启 redis 服务或服务器之后可以从备份文件中恢复数据到内存继续使用。    2.支持更多的数据类型:支持 string(字符串)、hash(哈希数据)、list(列表)、set(集合)、zet(有序集合),而memcached仅支持string(字符串)   3.支持数据的备份:可以实现类似于数据的 master-slave 模式的数据备份,另外也支持使用快照+AOF。    4.支持更大的

Redis系列 —— 简介与安装

女生的网名这么多〃 提交于 2020-03-08 14:55:56
Redis简介   Redis是完全是开源免费的,遵循BSD协议(是一个给与使用者很大自由的协议),是一个高性能(NOSQL非关系型数据库)的key-value数据库,并提供多种语言的API。   它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Hash), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。 特点: 1.性能极高-Redis能读的速度是110000次/s,写的速度是81000次/s。 2.丰富的数据类型-Redis支持的类型String,List, Hash, Set及Ordered Set数据类型操作。 3.原子-Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。 4.丰富的特性-Redis还支持publish/subscribe,通知, key过期等等特性。 关系型数据库和非关系型数据库    关系型数据库 最典型的数据结构是表,表与表之间建立关联关系。 优点:   1、易于维护:都是使用表结构,格式一致;   2、使用方便:SQL语言通用,可用于复杂查询;   3、复杂操作:支持SQL,可用于一个表以及多个表之间非常复杂的查询。 缺点:   1、读写性能比较差