redis分布式

Redis 读写分离

巧了我就是萌 提交于 2020-02-04 00:38:29
Redis 读写分离的实现非常简单,就是启动两个实例,一个负责读(称之为:读实例),一个负责写(称之为:写实例),读实例复制写实例的数据。 这里我以 Windows 环境下举例,Linux 环境的网上案例更多,它们的思想是一样的。 首先,准备两份一模一样的 Redis 程序,这是 Windows 环境下的目录,都是免安装的,拿来即用。 第一个写实例,我们直接用命令启动,这里就不演示了,默认的IP和端口号是:127.0.0.1 和 6379。 第二个读实例,我们就不能用 6379 了,我们换一个用 6380,所以,我们需要修改配置文件,同时,我们需要读实例去监听写实例,所以也要修改这部分内容,改起来特别简单。 修改默认端口号 指定需要复制的主服务器 修改完以后,我们启动读实例,在写实例上我们 set 一个值,从读实例上我们就可以 get 到这个数据,这样就实现了读写分离。 Redis 读写分离是怎么做数据同步的? 进行复制中的主从服务器双方的数据库将保存相同的数据,概念上将这种现象称作“数据库状态一致”。 Redis 有两种持久化数据的方法。一种是:全量持久化(RDB);另一种是:增量持久化(AOF)。 简单的形容:全量持久化就是把数据完完全全的复制一遍;增量持久化就是把本次和上次数据进行对比,有差别的地方复制一遍,旧数据+更改数据=现在的数据 Redis 2.8

Redis

邮差的信 提交于 2020-02-02 00:30:36
Redis使用场景 1 Redis 是什么? 通常而言目前的数据库分类有几种,包括 SQL/NSQL,,关系数据库,键值数据库等等 等,分类的标准也不以, Redis本质上也是一种键值数据库的,但它在保持键值数据库简单快捷特点的同时,又吸收了部分关系数据库的优点。从而使它的位置处于关系数据库和键值数 据库之间。 Redis不仅能保存 Strings类型的数据,还能保存 Lists类型(有序)和 Sets类型(无序)的数据,而且还能完成排序( SORT) 等高级功能,在实现 INCR, SETNX等功能的时候,保证了其操作的原子性,除此以外,还支持主从复制等功能。 更为详细的描述请参考如下: http://code.google.com/p/redis/wiki/index Redis官方也同样提供了一个名为 Retwis的项目代码,可以对照着官方学习。 2 Redis用来做什么? 通常局限点来说, Redis也以消息队列的形式存在,作为内嵌的 List存在,满足实时的高并发需求。而通常在一个电商类型的数据处理过程之中,有关商品,热销,推荐排序的队列,通常存放在 Redis之中,期间也包扩 Storm对于 Redis列表的读取和更新。 3 Redis的优点性能极高 – Redis能支持超过 100K+ 每秒的读写频率。丰富的数据类型 – Redis支持二进制案例的 Strings,

Redis之RedisCluster集群

佐手、 提交于 2020-02-01 08:55:23
Redis之Redis Cluster的使用 一、Redis Cluster 简介 Redis Sentinel 水平扩容一直都是一个痛点,因为水平扩容牵涉到数据的迁移。迁移过程一方面要保证自己的业务是可用的,一方面要保证尽量不丢失数据所以数据能不迁移就尽量不迁移。针对这个问题,Redis Cluster就应运而生了。 Redis Cluster 是 Redis 的分布式解决方案,在3.0版本正式推出,有效地解决了 Redis 分布式方面的需求。当遇到单机内存、并发、流量等瓶颈时,可以采用 Cluster 架构方案达到负载均衡的目的。 二、Redis Cluster 和哨兵集群的比较 哨兵集群:本质上还是一个主从模式下的集群方案,增加一个选举机制,当主节点宕机之后会从所有节点中选出新的主节点,选举机制的实现依赖于 sentinel 进程。这种模式基本已经可以实现高可用,读写分离 ,但是在性能,存储量上还是不够好。 cluster 集群:是 Redis 的一种分布式解决方案,在3.0版本中正式提出,这个方案把整个数据集按照分区规则映射到多个节点的问题,即把数据集划分到多个节点上,每个节点负责整个数据的一个子集。 Redis Cluster 槽的范围是0 ~ 16383。槽是集群内数据管理和迁移的基本单位。主要目的是为了方便数据的拆分和集群的扩展,每个节点负责一定数量的槽。通过

Redis集群

家住魔仙堡 提交于 2020-02-01 05:14:55
一.集群与分布式概述 1.1什么是集群 集群就是很多服务器组成的一个网络。指的是将多台服务器集中在一起,实现同一业务 1.2为什么要集群 一台服务器不能满足开发需要的时候,需要多台服务器来支持。这个时候就需要做集群,但是集群往往伴随着分布式 1.3什么是分布式 分布式是指将不同的业务分布在不同的地方. web应用和数据库服务分开,将不同业务分布到不同集群 1.4集群优化 两大关键特性 1.可扩展性--集群的性能不限于单一的服务实体,新的服务实体可以动态地加入到集群,从而增强集群的性能。动态添加服务器 2.高可用性--集群通过服务实体冗余使客户端免于轻易遇到out of service的警告。在集群中,同样的服务可以由多个服务实体提供。如果一个服务实体失败了,另一个服务实体会接管失败的服务实体。集群提供的从一个出错的服务实体恢复到另一个服务实体的功能增强了应用的可用性 1.5分布式和集群相同点和不同点 相同点: 都是处理高并发,而且都需要多台服务器协同.一般在一个系统中同时存在分布式和集群. 不同点: 分布式中不同服务器处理是不同业务.而集群处理时同一业务. 二.集群得几种方案 2.1主从复制 优点: 支持主从复制,主机会自动将数据同步到从机,可以进行读写分离 2.2哨兵模式 当主服务器中断服务后,可以将一个从服务器升级为主服务器,以便继续提供服务,但是这个过程需要人工手动来操作。

【Redis】基础知识

别等时光非礼了梦想. 提交于 2020-02-01 01:18:14
是什么? REmote DIctionary Server(远程字典服务器) 是一个高性能的分布式内存数据库,基于内存运行并支持持久化的NoSQL数据库,是当前热门的NoSQL数据库之一,也被人们称为数据结构服务器。 能做什么? 内存存储和持久化:redis支持异步将内存中的数据写到硬盘上,同时不影响继续服务 取最新N个数据的操作 模拟类似于HttpSession这种需要设定过期时间的功能 发布、订阅消息系统 定时器、计数器 特点: Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用 Redis不仅支持简单的key-value类型的数据,而且还提供list、set、zset、hash等数据结构的存储 Redis支持数据的备份 怎么用? 数据类型、基本操作和配置 持久化和复制,RDB/AOF 事务的控制 复制 基础知识 单进程 默认有16个数据库,类似数组下标从0开始,初始默认使用0号库 select命令切换数据库 Dbsize查看当前数据库key的数量 索引都是从0开始的 默认端口是6379 数据类型 String(字符串) 二进制安全的(redis的string可以包含任何数据,比如jpg图片或者序列化的对象) 是redis最基本的数据类型,一个redis中字符串value最多可以是512M Hash(哈希) 是一个键值对集合

Redis

Deadly 提交于 2020-01-31 13:48:35
1. Redis是什么? Redis是一个开放源代码(BSD许可)的内存中数据结构存储,用作数据库,缓存和消息代理。它支持数据结构,例如字符串,哈希,列表,集合,带范围查询的排序集合,位图,超日志,带有半径查询和流的地理空间索引。Redis具有内置的复制,Lua脚本,LRU驱逐,事务和不同级别的磁盘持久性,并通过Redis Sentinel和Redis Cluster自动分区提供了高可用性。 Redis是用C语言开发的一一个开源的高性能键值对( key-value )内存数据库。 它提供五种数据类型来存储值:字符串类型、散列类型、列表类型、集合类型、有序集合类型 它是一个NoSQL数据 库 Redis支持哪几种数据类型:String、List、Set、Sorted Set、hashes 2 Redis有那些优势? (1) 速度快,因为数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1) (2) 支持丰富数据类型,支持string,list,set,sorted set,hash (3) 支持事务,操作都是原子性,所谓的原子性就是对数据的更改要么全部执行,要么全部不执行 (4) 丰富的特性:可用于缓存,消息,按key设置过期时间,过期后将会自动删除 3 Redis的特点? Redis可以从磁盘重新将数据加载到内存中

【爬虫学习笔记day58】7.scrapy-redis实战+从零搭建Redis-Scrapy分布式爬虫+Scrapy-Redis分布式策略+安装Redis+修改配置+Redis数据库桌面管理工具

心不动则不痛 提交于 2020-01-31 12:26:43
文章目录 7.scrapy-redis实战 从零搭建Redis-Scrapy分布式爬虫 Scrapy-Redis分布式策略: 一、安装Redis 二、修改配置文件 redis.conf 三、测试Slave端远程连接Master端 注意:Slave端无需启动`redis-server`,Master端启动即可。只要 Slave 端读取到了 Master 端的 Redis 数据库,则表示能够连接成功,可以实施分布式。 四、Redis数据库桌面管理工具 7.scrapy-redis实战 从零搭建Redis-Scrapy分布式爬虫 Scrapy-Redis分布式策略: 假设有四台电脑:Windows 10、Mac OS X、Ubuntu 16.04、CentOS 7.2,任意一台电脑都可以作为 Master端 或 Slaver端,比如: Master端 (核心服务器) :使用 Windows 10,搭建一个Redis数据库,不负责爬取,只负责url指纹判重、Request的分配,以及数据的存储 Slaver端 (爬虫程序执行端) :使用 Mac OS X 、Ubuntu 16.04、CentOS 7.2,负责执行爬虫程序,运行过程中提交新的Request给Master 首先Slaver端从Master端拿任务(Request、url)进行数据抓取,Slaver抓取数据的同时

Redis集群模式2-集群模式

牧云@^-^@ 提交于 2020-01-29 17:06:06
redis高可用的集群模式 使用集群,只需要将每个数据库节点的cluster-enable配置打开即可。每个集群中至少需要三个主数据库才能正常运行。即使使用哨兵,redis每个实例也是全量存储,每个redis存储的内容都是完整的数据,浪费内存且有木桶效应。为了最大化利用内存,可以采用集群,就是分布式存储。即每台redis存储不同的内容。集群至少需要3主3从,且每个实例使用不同的配置文件,主从不用配置,集群会自己选。 修改每个实例的配置文件: 集群的运行: 节点的握手方式:在A节点上执行cluster <ip> <port>命令(IP,port是B节点的地址),通过ping-pong方式来确定两个节点的握手。 集群的每个数据库都被分为16384个槽,通过cluster addslots命令可以将一个或多个槽分配给节点。只有所有16384个槽被分配完了,当前集群才是上线状态,只要有一个槽没有被分配,集群就是下线状态。 每个节点都有自己的slots数组(clusterNode.slots)来决定自己处理哪些槽,同时节点也会将自己的slots数组告知其他节点,这样每个节点处理的槽的分配在整个集群都是透明的。 clusterState结构中的slots数组(clusterState.slots)记录了集群中所有16384个槽的指派信息,slots数组包含16383个项

python学习之redis编程

心不动则不痛 提交于 2020-01-28 14:51:33
Redis简介 Redis(Remote Dictionary Server)远程字典数据服务的缩写,由意大利 人开发的是一款内存高速缓存数据库。使用ANSI C语言编写、支持网络、可基于内 存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API并提供多种语言 的 API的非关系型数据库。 Redis和Memcache对比? Redis的安装 首先上官网下载Redis 压缩包,地址 http://redis.io/download 压缩包执行解压操作并进行编译 #tar xzf redis-x.x.x.tar.gz #cd redis-x.x.x/ #make && make install #sh utils/install_server.sh Redis的部署 执行Redis-server 命令,启动Redis 服务 redis-server 客户端redisClient redis-cli #登录redis set 'a' '123' 当添加键值后,发现在当前运行的目录下,创建了一个文件:dump.rdb,这个文 件用于将数据持久化存储 Redis内置数据类型 • string 类型 是二进制安全的。可以包含任何数据(eg: jpg 图片或者序列化的对象)。 从内部实现来看其实 string 可以看作 byte 数组,最大上限是 1G 字节。 • hash类型

【Redis】哨兵机制

你离开我真会死。 提交于 2020-01-28 06:11:42
一、概述 什么是哨兵机制 二、环境配置 2.1 虚拟机 2.2 安装Redis 2.3 配置主从复制 2.4 配置哨兵 2.5 测试 2.6 疑惑(待解决) 一、概述 什么是哨兵机制 Redis的哨兵(sentinel) 系统用于管理多个 Redis 服务器,该系统执行以下三个任务: 监控(Monitoring): 哨兵(sentinel) 会不断地检查你的Master和Slave是否运作正常。 提醒(Notification):当被监控的某个 Redis出现问题时, 哨兵(sentinel) 可以通过 API 向管理员或者其他应用程序发送通知。 自动故障迁移(Automatic failover):当一个Master不能正常工作时,哨兵(sentinel) 会开始一次自动故障迁移操作,它会将失效Master的其中一个Slave升级为新的Master, 并让失效Master的其他Slave改为复制新的Master; 当客户端试图连接失效的Master时,集群也会向客户端返回新Master的地址,使得集群可以使用Master代替失效Master。 哨兵(sentinel) 是一个分布式系统,你可以在一个架构中运行多个哨兵(sentinel) 进程,这些进程使用流言协议(gossipprotocols)来接收关于Master是否下线的信息,并使用投票协议(agreement