redis分布式

Redis高可用集群-哨兵模式(Redis-Sentinel)

人走茶凉 提交于 2019-12-02 06:44:22
前言 Redis哨兵模式,用现在流行的话可以说就是一个“哨兵机器人”,给“哨兵机器人”进行相应的配置之后,这个"机器人"可以7*24小时工作,它能能够自动帮助你做一些事情,如监控,提醒,自动处理故障等。 Redis-sentinel简介 Redis-sentinel是Redis的作者antirez,因为Redis集群的被各大公司使用,每个公司要写自己的集群管理工具,于是antirez花了几个星期写出了Redis-sentinel。 Redis 的 Sentinel 系统用于管理多个 Redis 服务器(instance),Redis 的 Sentinel 为Redis提供了高可用性。使用哨兵模式创建一个可以不用人为干预而应对各种故障的Redis部署。 该系统执行以下三个任务: 监控(Monitoring): Sentinel会不断地检查你的主服务器和从服务器是否允许正常。 提醒(Notification): 当被监控的某个Redis服务器出现问题时,Sentinel可以通过API向管理员或者其他应用程序发送通知。 自动故障迁移(Automatic failover): (1)当一个主服务器不能正常工作时,Sentinel会开始一次自动故障迁移操作,他会将失效主服务器的其中一个从服务器升级为新的主服务器,并让失效主服务器的其他从服务器改为复制新的主服务器; (2

Scrapy+redis实现分布式爬虫

谁说我不能喝 提交于 2019-12-02 06:31:38
概述 什么是分布式爬虫 需要搭建一个由n台电脑组成的机群,然后在每一台电脑中执行同一组程序,让其对同一网络资源进行联合且分布的数据爬取。 原生Scrapy无法实现分布式的原因 原生Scrapy中 调度器 不可以被共享 每一台机器都拥有一个调度器,如果一个机群共享一个调度器就可以了。 原生Scrapy中 管道 不可以被共享 每一台机器都拥有自己的管道,如果把Item发送到同一个管道就可以了。 Scrapy_redis组件的作用是什么? 提供可以被共享的管道和调度器 分布式的实现流程 实现分布式的重点在于配置 环境的安装 pip install scrapy-redis 创建工程 基于Spider: scrapy genspider crawl spiderName 基于CrawlSpider: scrapy genspider -t crawl spiderName cd 工程 创建爬虫文件 基于Spider 基于CrawlSpider 修改爬虫文件: 导包: from scrapy_redis.spiders import RedisCrawlSpider 基于 CrawlSpider 爬虫文件 from scrapy_redis.spiders import RedisSpider 基于Spider爬虫文件 将父类修改为 RedisCrawlSpider 或

redis三种模式对比

自古美人都是妖i 提交于 2019-12-02 05:46:23
模式类型 主从模式(redis2.8版本之前的模式)、哨兵sentinel模式(redis2.8及之后的模式)、redis cluster模式(redis3.0版本之后) 主从模式原理 同Mysql主从复制的原因一样,Redis虽然读取写入的速度都特别快,但是也会产生读压力特别大的情况。为了分担读压力,Redis支持主从复制,Redis的主从结构可以采用一主多从或者级联结构,Redis主从复制可以根据是否是全量分为全量同步和增量同步。下图为级联结构。 优点: 1、解决数据备份问题 2、做到读写分离,提高服务器性能 缺点: 1、每个客户端连接redis实例的时候都是指定了ip和端口号的,如果所连接的redis实例因为故障下线了,而主从模式也没有提供一定的手段通知客户端另外可连接的客户端地址,因而需要手动更改客户端配置重新连接 2、主从模式下,如果主节点由于故障下线了,那么从节点因为没有主节点而同步中断,因而需要人工进行故障转移工作 3、无法实现动态扩容 sentinel模式 Sentinel(哨兵)是Redis的高可用性解决方案:由一个或多个Sentinel实例组成的Sentinel系统可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器,并在被监视的主服务器进入下线状态时,自动将下线主服务器属下的某个从服务器升级为新的主服务器。 例如: 优点 1、Master 状态监测 2

1024秋招结束

对着背影说爱祢 提交于 2019-12-02 04:59:23
文章目录 秋招基本技术了,回归学校,希望论文能顺利完成,顺利毕业。 回顾秋招,还是有很多问题,跟多基础知识不扎实,在这里做一下总结。 操作系统,比较薄弱,基本相关的问题都没答上来 计算机网络,同上,暂时只知道三次握手四次挥手 数据结构,还是要通篇复习下,如哈希表的问题就没答上来 java基础,差的还很多,简单的如Integer和int的比较问题,装箱拆箱问题 数据库,基本的索引问题,最差的是写sql 框架,差的非常多,spring各种原理,这还是避开了mybatis等问题 分布式的问题,springcloud和dubbo的各种组件及原理 缓存,redis要定期回顾 消息队列,了解常用的消息队列及作用 来源: https://blog.csdn.net/qq_24095055/article/details/102718288

nginx 各个版本特性

痴心易碎 提交于 2019-12-02 02:48:13
Redis借鉴了Linux操作系统对于版本号的命名规则: 版本号第二位如果是奇数,则为非稳定版本(例如2.7、2.9、3.1),如果是偶数,则为稳定版本(例如2.6、2.8、3.0、3.2), 当前奇数版本就是下一个稳定版本的开发版本,例如2.9版本是3.0版本的开发版本,所以我们在生产环境通常选取偶数版本的Redis。 1.Redis2.6 Redis2.6在2012年正是发布,经历了17个版本,到2.6.17版本,相对于Redis2.4,主要特性如下: 1)服务端支持Lua脚本。 2)去掉虚拟内存相关功能。 3)放开对客户端连接数的硬编码限制。 4)键的过期时间支持毫秒。 5)从节点支持只读功能。 6)两个新的位图命令:bitcount和bitop。 7)增强了redis-benchmark的功能:支持定制化的压测,CSV输出等功能。 8)基于浮点数自增命令:incrbyfloat和hincrbyfloat。 9)redis-cli可以使用--eval参数实现Lua脚本执行。 10)shutdown命令增强。 11)重构了大量的核心代码,所有集群相关的代码都去掉了,cluster功能将会是3.0版本最大的亮点。 12)info可以按照section输出,并且添加了一些统计项 13)sort命令优化 2.Redis2.8 Redis2.8在2013年11月22日正式发布

Redis cluster集群模式的原理

陌路散爱 提交于 2019-12-02 02:48:00
redis cluster   redis cluster是Redis的分布式解决方案,在3.0版本推出后有效地解决了redis分布式方面的需求   自动将数据进行分片,每个master上放一部分数据   提供内置的高可用支持,部分master不可用时,还是可以继续工作的   支撑N个redis master node,每个master node都可以挂载多个slave node   高可用,因为每个master都有salve节点,那么如果mater挂掉,redis cluster这套机制,就会自动将某个slave切换成master redis cluster vs. replication + sentinal   如果你的数据量很少,主要是承载高并发高性能的场景,比如你的缓存一般就几个G,单机足够了   replication,一个mater,多个slave,要几个slave跟你的要求的读吞吐量有关系,然后自己搭建一个sentinal集群,去保证redis主从架构的高可用性,就可以了   redis cluster,主要是针对海量数据+高并发+高可用的场景,海量数据,如果你的数据量很大,那么建议就用redis cluster 数据分布算法 hash算法   比如你有 N 个 redis实例,那么如何将一个key映射到redis上呢,你很可能会采用类似下面的通用方法计算 key的

SpingSession+redis解决分布式服务session共享问题

纵然是瞬间 提交于 2019-12-02 02:41:27
首先呢,先在windows环境搞个redis吧,下载地址:http://redis.cn/download.html 启动命令:cmd redis-server.exe redis.windows.conf 停止命令,先启动客户端redis-cli.exe 再输入shutdown 添加密码:修改redis.windows.conf 搜索requirepass 密码认证 在客户端输入auth 密码 以服务方式启动redis ,先查看windwos是否已经存在redis服务,如果存在 则执行 redis-server.exe --service-uninstall 如果不存在,则执行 redis-server.exe --service-install redis.windows.conf 然后手动启动redis服务 接下来编写springboot代码 xml如下: <dependencies> <!-- 必须引入,否则报错 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <dependency> <groupId>org.springframework.boot<

分布式cookie-session的实现(spring-session)

孤街醉人 提交于 2019-12-01 22:43:19
1 session存储策略 存储,即在后台使用session的setAttribute,getAttribute等方法时,这些内部存放的数据最终存储至什么位置。比如在默认的tomcat实现中,相应的数据即存储在内存中,并在停止之后会序列化至磁盘中。 可以使用内存存储和第三方存储,如redis。对于集群式的session存储,那么肯定会使用第三方存储的实现。 在spring-session中,对session存储单独作了一个定义,但定义上基本保证与http session一致,主要的目的在于它可以支持在非http的环境中模拟使用。因此不直接使用http session接口。 先看定义: public interface Session { /** 获取惟一的id,可以理解为即将每个session当作一个实体对象 */ String getId(); <T> T getAttribute(String attributeName); Set<String> getAttributeNames(); void setAttribute(String attributeName, Object attributeValue); void removeAttribute(String attributeName); } 从这个定义来看,如果要使用httpSession

分布式cookie-session的实现(spring-session)

纵饮孤独 提交于 2019-12-01 22:43:01
1 session存储策略 存储,即在后台使用session的setAttribute,getAttribute等方法时,这些内部存放的数据最终存储至什么位置。比如在默认的tomcat实现中,相应的数据即存储在内存中,并在停止之后会序列化至磁盘中。 可以使用内存存储和第三方存储,如redis。对于集群式的session存储,那么肯定会使用第三方存储的实现。 在spring-session中,对session存储单独作了一个定义,但定义上基本保证与http session一致,主要的目的在于它可以支持在非http的环境中模拟使用。因此不直接使用http session接口。 先看定义: public interface Session { /** 获取惟一的id,可以理解为即将每个session当作一个实体对象 */ String getId(); <T> T getAttribute(String attributeName); Set<String> getAttributeNames(); void setAttribute(String attributeName, Object attributeValue); void removeAttribute(String attributeName); } 从这个定义来看,如果要使用httpSession

Redis系列(一):Redis简介

别来无恙 提交于 2019-12-01 20:38:41
一、Redis概述   Redis是一个开源(遵循BSD协议)Key-Value数据结构的内存存储系统,用作数据库、缓存和消息代理。它支持5种数据结构:字符串string、哈希hash、列表list、集合set和有序的集合zset。Redis支持Lua脚本,哨兵机制和集群实现高可用。适用场景:缓存、投票、抽奖、分布式session、排行榜、计数、队列、发布订阅等;具体介绍见 Redis官网 。 二、Redis安装   ① 下载地址:https://redis.io/download   ② 安装gcc:yum install gcc   ③ 把第一步下载好的redis‐5.0.2.tar.gz上传到服务器的/root/svr/packages目录或者直接 cd /root/svr/packages然后执行:wget http://download.redis.io/releases/redis-5.0.2.tar.gz   ④ 执行 cp redis‐5.0.2.tar.gz ../   ⑤ cd /root/svr 然后执行:tar -xvf redis‐5.0.2.tar.gz:   cd redis‐5.0.2:   ⑥ 执行:make install PREFIX=/root/svr/redis-5.0.2   ⑦ 启动redis 执行:bin/redis-server .